added seqeuence diagram
This commit is contained in:
parent
c345d3b3b5
commit
92a1f4c1c5
5 changed files with 70 additions and 28 deletions
|
|
@ -102,30 +102,9 @@ sequenceDiagram
|
|||
```
|
||||
### Sequence Diagrams
|
||||
|
||||
[Add sequence diagrams showing key interaction flows with other components]
|
||||
|
||||
The diagram below shows how a trigger of an action results in deployment of a runner on edge-connect.
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
|
||||
rect rgb(255,200,200)
|
||||
Forgejo->>GARM: (Webhook) A new job is pending
|
||||
GARM->>GARM Provider Edge Connect: Create new runner
|
||||
GARM Provider Edge Connect->>Edge Connect: Create App
|
||||
GARM Provider Edge Connect->>Edge Connect: Create AppInstance
|
||||
Edge Connect->>Runner: Deploys
|
||||
end
|
||||
|
||||
Runner->>GARM: Retrieve runner registration token
|
||||
GARM->>Forgejo: Retrieve runner registration token
|
||||
Forgejo-->>GARM: Token
|
||||
GARM-->>Runner: Token
|
||||
Runner->>Forgejo: Register runner
|
||||
Runner->>Forgejo: Fetch job
|
||||
Runner->>Runner: Work on job
|
||||
Runner->>Forgejo: Send result
|
||||
```
|
||||
{{<likec4-view view="forgejoGarmInteraction" browser="false" dynamic-variant="sequence" project="architecture" title="Interaction between Forgejo, Garm and Edge Connect">}}
|
||||
|
||||
### Deployment Architecture
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
deployment {
|
||||
|
||||
cloud otc-edp-per-tenant 'OTC EDP per tenant cluster' {
|
||||
description 'OTC environment for EDP. EDP is the environment a customer gets from us.
|
||||
|
||||
description 'OTC environment for EDP. EDP is the environment a customer gets from us.
|
||||
|
||||
This is kubernetes clusters and other infrastructure like nodes and vms, and platform services. All is set up by IaC-pipelines in the Foundry.
|
||||
'
|
||||
technology 'OTC'
|
||||
|
|
@ -15,7 +15,7 @@ deployment {
|
|||
|
||||
cluster edp 'EDP' {
|
||||
instanceOf edp.argoCD
|
||||
instanceOf forgejoRunner
|
||||
instanceOf forgejoRunner
|
||||
instanceOf edp.forgejo {
|
||||
-> cloudServices.elasticsearch
|
||||
-> cloudServices.objectstorage
|
||||
|
|
@ -24,6 +24,7 @@ deployment {
|
|||
}
|
||||
instanceOf edp.externalSecrets
|
||||
instanceOf edp.ingressNginx
|
||||
instanceOf edp.garm
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -36,7 +37,7 @@ deployment {
|
|||
instanceOf objectstorage
|
||||
instanceOf elasticsearch
|
||||
}
|
||||
|
||||
|
||||
computeressource forgejoRunnerInfrastructure 'EDP ForgejoRunner infrastructure' {
|
||||
description 'Infrastructure for Forgejo runners like pods, vms, lxds, etc'
|
||||
instanceOf forgejoRunner {
|
||||
|
|
@ -45,5 +46,3 @@ deployment {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
5
resources/edp-likec4/models/containers/edgeconnect.c4
Normal file
5
resources/edp-likec4/models/containers/edgeconnect.c4
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
model {
|
||||
component edgeConnect 'Edge Connect' {
|
||||
description 'Provides an API to run applications on the edge'
|
||||
}
|
||||
}
|
||||
24
resources/edp-likec4/models/containers/garm.c4
Normal file
24
resources/edp-likec4/models/containers/garm.c4
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
model {
|
||||
extend edp {
|
||||
container garm 'Garm Image' {
|
||||
icon tech:docker
|
||||
component garm 'Garm' {
|
||||
description 'Provisions runners for Forgejo'
|
||||
icon tech:go
|
||||
}
|
||||
|
||||
component providerEdgeConnect 'Garm Provider for EdgeConnect' {
|
||||
icon tech:go
|
||||
description 'Acts as abstraction layer for EdgeConnect'
|
||||
}
|
||||
|
||||
component providerKubernetes 'Garm Provider for Kubernetes' {
|
||||
icon tech:go
|
||||
description 'Acts as abstraction layer for Kubernetes'
|
||||
}
|
||||
|
||||
garm -> providerEdgeConnect 'calls binary'
|
||||
garm -> providerKubernetes 'calls binary'
|
||||
}
|
||||
}
|
||||
}
|
||||
35
resources/edp-likec4/views/dynamic/cicd/forgejo-garm.c4
Normal file
35
resources/edp-likec4/views/dynamic/cicd/forgejo-garm.c4
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
views {
|
||||
dynamic view forgejoGarmInteraction {
|
||||
title 'Forgejo <-> Garm'
|
||||
|
||||
include edp, edp.garm
|
||||
include edp.forgejo with {
|
||||
title 'Forgejo'
|
||||
}
|
||||
include edp.garm.garm
|
||||
include edp.garm.providerEdgeConnect
|
||||
include edgeConnect
|
||||
|
||||
edp.forgejo -> edp.garm.garm '(Webhook) A new job is pending'
|
||||
edp.garm.garm -> edp.garm.providerEdgeConnect 'Create new runner'
|
||||
edp.garm.providerEdgeConnect -> edgeConnect 'Create App (Runner)'
|
||||
edp.garm.providerEdgeConnect -> edgeConnect 'Create AppInstance (Runner)'
|
||||
edgeConnect -> forgejoRunner 'Deploys'
|
||||
|
||||
forgejoRunner -> edp.garm.garm 'Get runner registration token'
|
||||
edp.garm.garm -> edp.forgejo 'Get runner registration token'
|
||||
edp.forgejo -> edp.garm.garm 'Token'
|
||||
edp.garm.garm -> forgejoRunner 'Token'
|
||||
forgejoRunner -> edp.forgejo 'Register runner'
|
||||
forgejoRunner -> edp.forgejo 'Fetch job'
|
||||
forgejoRunner -> forgejoRunner 'Work on job'
|
||||
forgejoRunner -> edp.forgejo 'Send result'
|
||||
edp.forgejo -> edp.forgejo 'Deregister Runner'
|
||||
forgejoRunner -> forgejoRunner 'Terminate'
|
||||
|
||||
edp.forgejo -> edp.garm.garm '(Webhook) A job finished'
|
||||
edp.garm.garm -> edp.garm.providerEdgeConnect 'Delete runner'
|
||||
edp.garm.providerEdgeConnect -> edgeConnect 'Delete AppInstance (Runner)'
|
||||
edp.garm.providerEdgeConnect -> edgeConnect 'Delete App (Runner)'
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue