refactor(c4-edp): extracted all components from edp as ectending models in single files
This commit is contained in:
parent
174f605106
commit
4cb5718193
22 changed files with 326 additions and 223 deletions
24
likec4/models/containers/argocd.c4
Normal file
24
likec4/models/containers/argocd.c4
Normal file
|
@ -0,0 +1,24 @@
|
|||
model {
|
||||
|
||||
extend edp {
|
||||
container argoCD 'ArgoCD' {
|
||||
description 'GitOps Service'
|
||||
|
||||
component argocdServer 'ArgoCD Server'
|
||||
component argocdAppController 'ApplicationController'
|
||||
component argocdAppSetController 'ApplicationSeetController'
|
||||
component argocdRedis 'Redis' {
|
||||
technology: 'Redis'
|
||||
icon: tech:redis
|
||||
}
|
||||
component argocdRepoServer 'Repo Server'
|
||||
|
||||
argocdServer -> argocdRedis 'read/write'
|
||||
argocdRepoServer -> argocdRedis 'read/write'
|
||||
argocdAppController -> argocdRedis 'read/write'
|
||||
argocdAppSetController -> argocdRedis 'read/write'
|
||||
|
||||
argocdRepoServer -> edp.forgejo.forgejo 'Syncs git repo'
|
||||
}
|
||||
}
|
||||
}
|
25
likec4/models/containers/backstage.c4
Normal file
25
likec4/models/containers/backstage.c4
Normal file
|
@ -0,0 +1,25 @@
|
|||
model {
|
||||
|
||||
extend edp {
|
||||
container ui 'Backstage' {
|
||||
description 'Developer Portal'
|
||||
|
||||
component backstage 'Backstage' {
|
||||
style {
|
||||
icon tech:react
|
||||
shape browser
|
||||
}
|
||||
}
|
||||
|
||||
component database 'Database' {
|
||||
technology 'Postgresql'
|
||||
icon tech:postgresql
|
||||
style {
|
||||
shape storage
|
||||
}
|
||||
}
|
||||
|
||||
backstage -> database 'reads/writes'
|
||||
}
|
||||
}
|
||||
}
|
16
likec4/models/containers/crossplane.c4
Normal file
16
likec4/models/containers/crossplane.c4
Normal file
|
@ -0,0 +1,16 @@
|
|||
model {
|
||||
|
||||
extend edp {
|
||||
container crossplane 'Crossplane' {
|
||||
#internal
|
||||
description 'Declarative management of ressources'
|
||||
|
||||
component crossplane 'Crossplane'
|
||||
component crossplaneFunction 'Function Patch and Transform'
|
||||
component crossplaneRbacManager 'RBAC Manager'
|
||||
component providerArgoCD 'ArgoCD Provider'
|
||||
component providerKind 'Kind Provider'
|
||||
component providerShell 'Shell Provider'
|
||||
}
|
||||
}
|
||||
}
|
13
likec4/models/containers/externalsecrets.c4
Normal file
13
likec4/models/containers/externalsecrets.c4
Normal file
|
@ -0,0 +1,13 @@
|
|||
model {
|
||||
|
||||
extend edp {
|
||||
container externalSecrets 'external-secrets' {
|
||||
#internal
|
||||
description 'Provider to access externally stored Kubernetes secrets'
|
||||
|
||||
component externalSecrets 'external-secrets controller'
|
||||
component certController 'cert-controller'
|
||||
component webhook 'webhook'
|
||||
}
|
||||
}
|
||||
}
|
28
likec4/models/containers/forgejo.c4
Normal file
28
likec4/models/containers/forgejo.c4
Normal file
|
@ -0,0 +1,28 @@
|
|||
model {
|
||||
|
||||
extend edp {
|
||||
container forgejo 'Forgejo' {
|
||||
description '
|
||||
Fully managed DevOps Platfrom
|
||||
offering capabilities like
|
||||
code version controling
|
||||
collaboration and ticketing
|
||||
and security scanning
|
||||
'
|
||||
component forgejo 'Forgejo' {
|
||||
technology 'Golang'
|
||||
icon tech:go
|
||||
}
|
||||
|
||||
component forgejoRunner 'CI Runner' {
|
||||
technology 'Golang'
|
||||
icon tech:go
|
||||
style {
|
||||
multiple true
|
||||
}
|
||||
}
|
||||
|
||||
forgejoRunner -> forgejo 'executes pipelines'
|
||||
}
|
||||
}
|
||||
}
|
25
likec4/models/containers/ingress.c4
Normal file
25
likec4/models/containers/ingress.c4
Normal file
|
@ -0,0 +1,25 @@
|
|||
model {
|
||||
|
||||
extend edp {
|
||||
container ingressNginx 'Ingress' {
|
||||
#internal
|
||||
description 'Ingress Controller for incoming http(s) traffic'
|
||||
|
||||
component ingressNginx 'ingress-nginx' {
|
||||
technology 'Nginx'
|
||||
icon tech:nginx
|
||||
}
|
||||
|
||||
ingressNginx -> edp.forgejo.forgejo 'https'
|
||||
ingressNginx -> edp.keycloak.keycloak 'https'
|
||||
ingressNginx -> edp.openbao.openbao 'https'
|
||||
ingressNginx -> edp.argoCD.argocdServer 'https'
|
||||
ingressNginx -> edp.ui.backstage 'https'
|
||||
ingressNginx -> edp.minio.minio 'https'
|
||||
ingressNginx -> edp.monitoring.alloy 'https'
|
||||
ingressNginx -> edp.monitoring.queryFrontend 'https'
|
||||
ingressNginx -> testApp.fibonacci 'https'
|
||||
ingressNginx -> mailhog.mailhog 'https'
|
||||
}
|
||||
}
|
||||
}
|
21
likec4/models/containers/keycloak.c4
Normal file
21
likec4/models/containers/keycloak.c4
Normal file
|
@ -0,0 +1,21 @@
|
|||
model {
|
||||
|
||||
extend edp {
|
||||
container keycloak 'Keycloak' {
|
||||
description 'Single Sign On for all EDP products'
|
||||
component keycloak 'Keycloak' {
|
||||
technology 'Java'
|
||||
icon tech:java
|
||||
}
|
||||
|
||||
component keycloakDB 'Database' {
|
||||
technology 'Postgresql'
|
||||
icon tech:postgresql
|
||||
style {
|
||||
shape storage
|
||||
}
|
||||
}
|
||||
keycloak -> keycloakDB 'reads/writes'
|
||||
}
|
||||
}
|
||||
}
|
13
likec4/models/containers/mailhog.c4
Normal file
13
likec4/models/containers/mailhog.c4
Normal file
|
@ -0,0 +1,13 @@
|
|||
model {
|
||||
|
||||
extend edp {
|
||||
container mailhog 'Mailhog' {
|
||||
description 'Web and API based SMTP testing'
|
||||
|
||||
component mailhog 'Mailhog' {
|
||||
technology 'Golang'
|
||||
icon tech:go
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
15
likec4/models/containers/minio.c4
Normal file
15
likec4/models/containers/minio.c4
Normal file
|
@ -0,0 +1,15 @@
|
|||
model {
|
||||
|
||||
extend edp {
|
||||
container minio 'Minio' {
|
||||
description 'S3 compatible blob storage'
|
||||
|
||||
component minio 'S3 Blob Storage' {
|
||||
technology 'Minio'
|
||||
style {
|
||||
shape storage
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
30
likec4/models/containers/monitoring.c4
Normal file
30
likec4/models/containers/monitoring.c4
Normal file
|
@ -0,0 +1,30 @@
|
|||
model {
|
||||
|
||||
extend edp {
|
||||
container monitoring 'Monitoring' {
|
||||
description 'Observability system to monitor deployed components'
|
||||
|
||||
component alloy 'Alloy' {
|
||||
description 'Open Telemetry Collector'
|
||||
|
||||
style {
|
||||
icon tech:grafana
|
||||
multiple true
|
||||
}
|
||||
}
|
||||
|
||||
container loki 'Loki' {
|
||||
description 'Log aggregation system'
|
||||
icon tech:grafana
|
||||
|
||||
component queryFrontend 'Query Frontend'
|
||||
component distributor 'Distributor'
|
||||
component gateway 'Gateway'
|
||||
component ingestor 'Ingestor'
|
||||
component querier 'Querier'
|
||||
|
||||
alloy -> distributor 'pushes logs'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
17
likec4/models/containers/openbao.c4
Normal file
17
likec4/models/containers/openbao.c4
Normal file
|
@ -0,0 +1,17 @@
|
|||
model {
|
||||
|
||||
extend edp {
|
||||
container openbao 'OpenBao' {
|
||||
description 'Secure secret storage'
|
||||
|
||||
component openbao 'Openbao' {
|
||||
technology 'Openbao'
|
||||
style {
|
||||
shape storage
|
||||
}
|
||||
}
|
||||
|
||||
component agentInjector 'Agent Injector'
|
||||
}
|
||||
}
|
||||
}
|
14
likec4/models/containers/spark-operator.c4
Normal file
14
likec4/models/containers/spark-operator.c4
Normal file
|
@ -0,0 +1,14 @@
|
|||
model {
|
||||
|
||||
extend edp {
|
||||
container spark 'Spark' {
|
||||
#internal
|
||||
description 'Allows running Spark applications on K8s'
|
||||
|
||||
component sparkoperator 'Spark Operator' {
|
||||
technology 'Spark'
|
||||
icon tech:spark
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
13
likec4/models/containers/velero.c4
Normal file
13
likec4/models/containers/velero.c4
Normal file
|
@ -0,0 +1,13 @@
|
|||
model {
|
||||
|
||||
extend edp {
|
||||
container velero 'Velero' {
|
||||
#internal
|
||||
description 'Backup Kubernetes resources'
|
||||
|
||||
component velero 'Velero'
|
||||
|
||||
velero -> edp.minio.minio 'store backups'
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,5 +2,13 @@ model {
|
|||
cloud = system 'Cloud' {
|
||||
description 'Cloud environments'
|
||||
technology 'IaaS/PaaS'
|
||||
|
||||
application = schema 'application' {
|
||||
description 'An application description'
|
||||
technology 'DSL'
|
||||
style {
|
||||
color primary
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
# Containers
|
||||
|
||||
## Inner loop, outer loop
|
||||
|
||||

|
||||
* [What software delivery leaders need to know about inner & outer loops](https://curiositysoftware.medium.com/what-software-delivery-leaders-need-to-know-about-inner-outer-loops-9da765b0ca2c)
|
Binary file not shown.
Before Width: | Height: | Size: 238 KiB |
|
@ -1,193 +1,17 @@
|
|||
model {
|
||||
edp = system 'EDP' {
|
||||
description 'EDP Edge Development platform'
|
||||
description 'EDP Edge Development Platform'
|
||||
technology 'Kubernetes'
|
||||
-> enterprise 'integrates'
|
||||
-> cloud 'deploys and observes'
|
||||
-> localbox // inner-outer loop synchronization
|
||||
|
||||
container ui 'Backstage' {
|
||||
description 'Developer Portal'
|
||||
|
||||
component backstage 'Backstage' {
|
||||
application = schema 'application' {
|
||||
description 'An application description'
|
||||
technology 'DSL'
|
||||
style {
|
||||
icon tech:react
|
||||
shape browser
|
||||
color primary
|
||||
}
|
||||
}
|
||||
|
||||
component database 'Database' {
|
||||
technology 'Postgresql'
|
||||
icon tech:postgresql
|
||||
style {
|
||||
shape storage
|
||||
}
|
||||
}
|
||||
|
||||
backstage -> database 'reads/writes'
|
||||
}
|
||||
|
||||
container forgejo 'Forgejo' {
|
||||
description '
|
||||
Fully managed DevOps Platfrom
|
||||
offering capabilities like
|
||||
code version controling
|
||||
collaboration and ticketing
|
||||
and security scanning
|
||||
'
|
||||
component forgejo 'Forgejo' {
|
||||
technology 'Golang'
|
||||
icon tech:go
|
||||
}
|
||||
|
||||
component forgejoRunner 'CI Runner'{
|
||||
technology 'Golang'
|
||||
icon tech:go
|
||||
style {
|
||||
multiple true
|
||||
}
|
||||
}
|
||||
|
||||
forgejoRunner -> forgejo 'executes pipelines'
|
||||
}
|
||||
|
||||
container argoCD 'ArgoCD' {
|
||||
description 'GitOps Service'
|
||||
|
||||
component argocdServer 'ArgoCD Server'
|
||||
component argocdAppController 'ApplicationController'
|
||||
component argocdAppSetController 'ApplicationSeetController'
|
||||
component argocdRedis 'Redis' {
|
||||
technology: 'Redis'
|
||||
icon: tech:redis
|
||||
}
|
||||
component argocdRepoServer 'Repo Server'
|
||||
|
||||
argocdServer -> argocdRedis 'read/write'
|
||||
argocdRepoServer -> argocdRedis 'read/write'
|
||||
argocdAppController -> argocdRedis 'read/write'
|
||||
argocdAppSetController -> argocdRedis 'read/write'
|
||||
|
||||
argocdRepoServer -> edp.forgejo.forgejo 'Syncs git repo'
|
||||
}
|
||||
|
||||
container keycloak 'Keycloak' {
|
||||
description '
|
||||
Single Sign On for all EDP products
|
||||
'
|
||||
component keycloak 'Keycloak' {
|
||||
technology 'Java'
|
||||
icon tech:java
|
||||
}
|
||||
|
||||
component keycloakDB 'Database' {
|
||||
technology 'Postgresql'
|
||||
icon tech:postgresql
|
||||
style {
|
||||
shape storage
|
||||
}
|
||||
}
|
||||
keycloak -> keycloakDB 'reads/writes'
|
||||
}
|
||||
|
||||
container crossplane 'Crossplane' {
|
||||
#internal
|
||||
description 'Declarative management of ressources'
|
||||
|
||||
component crossplane 'Crossplane'
|
||||
component crossplaneFunction 'Function Patch and Transform'
|
||||
component crossplaneRbacManager 'RBAC Manager'
|
||||
component providerArgoCD 'ArgoCD Provider'
|
||||
component providerKind 'Kind Provider'
|
||||
component providerShell 'Shell Provider'
|
||||
}
|
||||
|
||||
container externalSecrets 'external-secrets' {
|
||||
#internal
|
||||
description 'Provider to access externally stored Kubernetes secrets'
|
||||
|
||||
component externalSecrets 'external-secrets controller'
|
||||
component certController 'cert-controller'
|
||||
component webhook 'webhook'
|
||||
}
|
||||
|
||||
container minio 'Minio' {
|
||||
description 'S3 compatible blob storage'
|
||||
|
||||
component minio 'S3 Blob Storage' {
|
||||
technology 'Minio'
|
||||
style {
|
||||
shape storage
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
container velero 'Velero' {
|
||||
#internal
|
||||
description 'Backup Kubernetes resources'
|
||||
|
||||
component velero 'Velero'
|
||||
|
||||
velero -> minio.minio 'store backups'
|
||||
}
|
||||
|
||||
container openbao 'OpenBao' {
|
||||
description 'Secure secret storage'
|
||||
|
||||
component openbao 'Openbao' {
|
||||
technology 'Openbao'
|
||||
style {
|
||||
shape storage
|
||||
}
|
||||
}
|
||||
|
||||
component agentInjector 'Agent Injector'
|
||||
}
|
||||
|
||||
container monitoring 'Monitoring' {
|
||||
description 'Observability system to monitor deployed components'
|
||||
|
||||
component alloy 'Alloy' {
|
||||
description 'Open Telemetry Collector'
|
||||
|
||||
style {
|
||||
icon tech:grafana
|
||||
multiple true
|
||||
}
|
||||
}
|
||||
|
||||
container loki 'Loki' {
|
||||
description 'Log aggregation system'
|
||||
icon tech:grafana
|
||||
|
||||
component queryFrontend 'Query Frontend'
|
||||
component distributor 'Distributor'
|
||||
component gateway 'Gateway'
|
||||
component ingestor 'Ingestor'
|
||||
component querier 'Querier'
|
||||
|
||||
alloy -> distributor 'pushes logs'
|
||||
}
|
||||
}
|
||||
|
||||
container ingressNginx 'Ingress' {
|
||||
#internal
|
||||
description 'Ingress Controller for incoming http(s) traffic'
|
||||
|
||||
component ingressNginx 'ingress-nginx'{
|
||||
technology 'Nginx'
|
||||
icon tech:nginx
|
||||
}
|
||||
|
||||
ingressNginx -> edp.forgejo.forgejo 'https'
|
||||
ingressNginx -> keycloak.keycloak 'https'
|
||||
ingressNginx -> openbao.openbao 'https'
|
||||
ingressNginx -> argoCD.argocdServer 'https'
|
||||
ingressNginx -> ui.backstage 'https'
|
||||
ingressNginx -> minio.minio 'https'
|
||||
ingressNginx -> monitoring.alloy 'https'
|
||||
ingressNginx -> monitoring.queryFrontend 'https'
|
||||
ingressNginx -> testApp.fibonacci 'https'
|
||||
ingressNginx -> mailhog.mailhog 'https'
|
||||
}
|
||||
|
||||
container testApp 'Fibonacci' {
|
||||
|
@ -199,29 +23,8 @@ model {
|
|||
}
|
||||
}
|
||||
|
||||
container mailhog 'Mailhog' {
|
||||
#internal
|
||||
description 'Web and API based SMTP testing'
|
||||
|
||||
component mailhog 'Mailhog' {
|
||||
technology 'Golang'
|
||||
icon tech:go
|
||||
}
|
||||
}
|
||||
|
||||
container spark 'Spark' {
|
||||
description 'Allows running Spark applications on K8s'
|
||||
|
||||
component sparkoperator 'Spark Operator' {
|
||||
technology 'Spark'
|
||||
icon tech:spark
|
||||
}
|
||||
}
|
||||
|
||||
// UI requests data from the Backend
|
||||
// ui -> backend 'fetches via HTTPS'
|
||||
|
||||
-> localbox // inner-outer loop synchronization
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,5 +4,13 @@ model {
|
|||
technology 'Linux/Windows/Mac'
|
||||
-> edp 'inner-outer-loop synchronization'
|
||||
-> enterprise 'compyny integration'
|
||||
|
||||
application = schema 'application' {
|
||||
description 'An application description'
|
||||
technology 'DSL'
|
||||
style {
|
||||
color primary
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,6 @@ specification {
|
|||
color green
|
||||
}
|
||||
}
|
||||
element system
|
||||
element component
|
||||
element container {
|
||||
style {
|
||||
|
@ -19,8 +18,10 @@ specification {
|
|||
}
|
||||
}
|
||||
|
||||
element workflow
|
||||
element schema
|
||||
element step
|
||||
element system
|
||||
element workflow
|
||||
|
||||
deploymentNode node
|
||||
deploymentNode environment
|
||||
|
|
35
likec4/views/application-transition.c4
Normal file
35
likec4/views/application-transition.c4
Normal file
|
@ -0,0 +1,35 @@
|
|||
views {
|
||||
|
||||
// the application meta-definition travels through all deploying components
|
||||
view application-transition {
|
||||
title 'application-transistion'
|
||||
// autoLayout LeftRight 100 100
|
||||
|
||||
// include *
|
||||
exclude developer, localbox, edp, otherProductLifecycleRoles
|
||||
exclude element.kind = workflow
|
||||
include cloud, cloud.application
|
||||
|
||||
group 'developer-scope' {
|
||||
color green
|
||||
opacity 20%
|
||||
border none
|
||||
include developer
|
||||
include otherProductLifecycleRoles
|
||||
|
||||
group 'Devops inner-loop' {
|
||||
color gray
|
||||
opacity 30%
|
||||
border none
|
||||
|
||||
include localbox, localbox.application
|
||||
}
|
||||
group 'Devops outer-loop' {
|
||||
color gray
|
||||
opacity 30%
|
||||
border none
|
||||
include edp, edp.application
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,5 +1,16 @@
|
|||
views {
|
||||
|
||||
view edp of edp {
|
||||
title 'Context view'
|
||||
include *
|
||||
exclude ingressNginx ->
|
||||
exclude element.tag = #internal
|
||||
|
||||
style * {
|
||||
opacity 25%
|
||||
}
|
||||
}
|
||||
|
||||
view keycloak of edp.keycloak {
|
||||
include
|
||||
*,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
views {
|
||||
|
||||
view overview {
|
||||
view landscape {
|
||||
title 'Landscape view'
|
||||
autoLayout LeftRight 100 100
|
||||
|
||||
|
@ -30,15 +30,4 @@ views {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
view edp of edp {
|
||||
title 'Context view'
|
||||
include *
|
||||
exclude ingressNginx ->
|
||||
exclude element.tag = #internal
|
||||
|
||||
style * {
|
||||
opacity 25%
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue