diff --git a/likec4/models/components/application-specification.c4 b/likec4/models/components/application-specification.c4 new file mode 100644 index 0000000..3916520 --- /dev/null +++ b/likec4/models/components/application-specification.c4 @@ -0,0 +1,16 @@ +model { + component applicationspecification "application-specification" { + description 'The application specification describes the application and its components. It is used to generate the application and its components.' + + component application_gitrepo 'Git App Repo' { + description 'Git Application Repository' + technology 'Git' + icon tech:git + } + component applicationspec_gitrepo 'Git AppSpec Repo' { + description 'Git Application Specification Repository' + technology 'Git' + icon tech:git + } + } +} \ No newline at end of file diff --git a/likec4/models/containers/api.c4 b/likec4/models/containers/api.c4 new file mode 100644 index 0000000..8902864 --- /dev/null +++ b/likec4/models/containers/api.c4 @@ -0,0 +1,9 @@ +model { + + extend edp { + container api 'API' { + description 'API for the EDP platform' + icon tech:swagger + } + } +} \ No newline at end of file diff --git a/likec4/models/containers/argocd.c4 b/likec4/models/containers/argocd.c4 index 0864067..1f2a410 100644 --- a/likec4/models/containers/argocd.c4 +++ b/likec4/models/containers/argocd.c4 @@ -18,7 +18,7 @@ model { argocdAppController -> argocdRedis 'read/write' argocdAppSetController -> argocdRedis 'read/write' - argocdRepoServer -> edp.forgejo.forgejo 'Syncs git repo' + argocdRepoServer -> edp.forgejo.forgejogit 'Syncs git repo' } } } \ No newline at end of file diff --git a/likec4/models/containers/forgejo.c4 b/likec4/models/containers/forgejo.c4 index d6e205b..9579892 100644 --- a/likec4/models/containers/forgejo.c4 +++ b/likec4/models/containers/forgejo.c4 @@ -12,19 +12,12 @@ model { technology 'Golang' icon tech:go - component forgejo 'Git' { - // this is ugly ... basically there should be a logical git component type - // which gets deployed and then can have multiple deployed repos - component application_gitrepo 'Git App Repo' { - description 'Git Application Repository' - technology 'Git' - icon tech:git - } - component applicationspec_gitrepo 'Git AppSpec Repo' { - description 'Git Application Specification Repository' - technology 'Git' - icon tech:git - } + component forgejogit 'Git' { + icon tech:git + } + + component forgejocollaboration 'Collaboration' { + icon tech:github } component forgejoRunner 'Forgejo Actions' { @@ -42,7 +35,7 @@ model { icon tech:go } - forgejoRunner -> forgejo 'executes pipelines' + forgejocollaboration -> forgejoRunner 'executes pipelines' } } } \ No newline at end of file diff --git a/likec4/models/containers/grafana.c4 b/likec4/models/containers/grafana.c4 new file mode 100644 index 0000000..4686a0e --- /dev/null +++ b/likec4/models/containers/grafana.c4 @@ -0,0 +1,9 @@ +model { + + extend edp { + container grafana 'Grafana' { + description 'Data visualization and monitoring' + icon tech:grafana + } + } +} \ No newline at end of file diff --git a/likec4/models/containers/ingress.c4 b/likec4/models/containers/ingress.c4 index 9a4af67..d0babc4 100644 --- a/likec4/models/containers/ingress.c4 +++ b/likec4/models/containers/ingress.c4 @@ -10,7 +10,7 @@ model { icon tech:nginx } - ingressNginx -> edp.forgejo.forgejo 'https' + ingressNginx -> edp.forgejo 'https' ingressNginx -> edp.keycloak.keycloak 'https' ingressNginx -> edp.openbao.openbao 'https' ingressNginx -> edp.argoCD.argocdServer 'https' diff --git a/likec4/models/context/actors.c4 b/likec4/models/context/actors.c4 index d38bed3..071e5ff 100644 --- a/likec4/models/context/actors.c4 +++ b/likec4/models/context/actors.c4 @@ -7,6 +7,10 @@ model { -> edp.forgejo 'manages code' -> edp.keycloak 'authenticates' -> edp.argoCD 'manages deployments' + -> edp.grafana 'monitors' + -> edp.backstage 'create and maintain apps' + -> edp.imageregistry 'pushes and pull images' + -> edp.api 'uses API' } platformdeveloper = actor 'Platform Developer' { description 'The EDP engineer' diff --git a/likec4/models/deployment/deployment.c4 b/likec4/models/deployment/deployment.c4 index 08bcbef..1914053 100644 --- a/likec4/models/deployment/deployment.c4 +++ b/likec4/models/deployment/deployment.c4 @@ -19,7 +19,7 @@ deployment { } namespace gitea { - instanceOf edp.forgejo.forgejo + instanceOf edp.forgejo instanceOf edp.forgejo.forgejoRunner } diff --git a/likec4/models/deployment/git.c4 b/likec4/models/deployment/git.c4 deleted file mode 100644 index ebdd689..0000000 --- a/likec4/models/deployment/git.c4 +++ /dev/null @@ -1,24 +0,0 @@ -deployment { - - environment apprepo 'application_repo' { - description 'Git repository for application' - technology 'Git' - icon tech:git - instanceOf edp.forgejo.application_gitrepo - } - environment appspecrepo 'appspec_repo' { - description 'Git repository for application specification' - technology 'Git' - icon tech:git - instanceOf edp.forgejo.application_gitrepo - } - -} - -views { - deployment view view_git_35 { - title 'Untitled' - - include apprepo, appspecrepo - } -} \ No newline at end of file diff --git a/likec4/views/edp-as-idp.c4 b/likec4/views/edp-as-idp.c4 new file mode 100644 index 0000000..8063c3c --- /dev/null +++ b/likec4/views/edp-as-idp.c4 @@ -0,0 +1,32 @@ +views { + view idp of edp { + title 'EDP as IDP' + + include developer + exclude element.tag = #internal + + style * { + opacity 25% + } + group 'EDP' { + group 'Developer Control Plane' { + group 'Frontend' { + include backstage, api + } + group 'Version Control' { + include forgejocollaboration, forgejo.forgejogit, applicationspecification.application_gitrepo, applicationspecification.applicationspec_gitrepo + } + } + group 'Integration & Delivery Plane' { + include forgejo.forgejoRunner, imageregistry, argoCD + } + group 'Monitoring Plane' { + include monitoring, grafana + } + group 'Security Plane' { + include keycloak, velero, externalSecrets, openbao + } + } + autoLayout TopBottom + } +} \ No newline at end of file diff --git a/likec4/views/gitops-inner-outer-loop.c4 b/likec4/views/gitops-inner-outer-loop.c4 index 3f906dc..8578e91 100644 --- a/likec4/views/gitops-inner-outer-loop.c4 +++ b/likec4/views/gitops-inner-outer-loop.c4 @@ -12,13 +12,13 @@ views { color secondary } - localbox.git -> edp.forgejo.forgejo.application_gitrepo 'git push' - edp.forgejo.forgejo.application_gitrepo -> edp.forgejoRunner 'on push' + localbox.git -> edp.forgejogit 'git push' + edp.forgejo.forgejogit -> edp.forgejoRunner 'on push' edp.forgejoRunner -> edp.forgejo.imageregistry 'pushes new image' - edp.forgejoRunner -> edp.forgejo.forgejo.applicationspec_gitrepo 'pushes new appspec' + edp.forgejoRunner -> edp.forgejo.forgejogit 'pushes new appspec' - edp.forgejo.forgejo.applicationspec_gitrepo -> edp.argoCD 'triggers deployment' + edp.forgejo.forgejogit -> edp.argoCD 'triggers deployment' edp.argoCD -> cloud 'deploys application' cloud -> edp.forgejo.imageregistry 'pulls image' }