feat(c4-arch): created edp-as.idp.view. added new elemenst api and garfana. refactored forgejo, it also contains git and collaboration. rmeoved repos from forgejo

This commit is contained in:
Stephan Lo 2025-04-07 17:01:06 +02:00
parent e5d387ba3c
commit 3d43f58742
11 changed files with 84 additions and 45 deletions

View file

@ -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
}
}
}

View file

@ -0,0 +1,9 @@
model {
extend edp {
container api 'API' {
description 'API for the EDP platform'
icon tech:swagger
}
}
}

View file

@ -18,7 +18,7 @@ model {
argocdAppController -> argocdRedis 'read/write' argocdAppController -> argocdRedis 'read/write'
argocdAppSetController -> argocdRedis 'read/write' argocdAppSetController -> argocdRedis 'read/write'
argocdRepoServer -> edp.forgejo.forgejo 'Syncs git repo' argocdRepoServer -> edp.forgejo.forgejogit 'Syncs git repo'
} }
} }
} }

View file

@ -12,19 +12,12 @@ model {
technology 'Golang' technology 'Golang'
icon tech:go icon tech:go
component forgejo 'Git' { component forgejogit 'Git' {
// this is ugly ... basically there should be a logical git component type icon tech:git
// which gets deployed and then can have multiple deployed repos }
component application_gitrepo 'Git App Repo' {
description 'Git Application Repository' component forgejocollaboration 'Collaboration' {
technology 'Git' icon tech:github
icon tech:git
}
component applicationspec_gitrepo 'Git AppSpec Repo' {
description 'Git Application Specification Repository'
technology 'Git'
icon tech:git
}
} }
component forgejoRunner 'Forgejo Actions' { component forgejoRunner 'Forgejo Actions' {
@ -42,7 +35,7 @@ model {
icon tech:go icon tech:go
} }
forgejoRunner -> forgejo 'executes pipelines' forgejocollaboration -> forgejoRunner 'executes pipelines'
} }
} }
} }

View file

@ -0,0 +1,9 @@
model {
extend edp {
container grafana 'Grafana' {
description 'Data visualization and monitoring'
icon tech:grafana
}
}
}

View file

@ -10,7 +10,7 @@ model {
icon tech:nginx icon tech:nginx
} }
ingressNginx -> edp.forgejo.forgejo 'https' ingressNginx -> edp.forgejo 'https'
ingressNginx -> edp.keycloak.keycloak 'https' ingressNginx -> edp.keycloak.keycloak 'https'
ingressNginx -> edp.openbao.openbao 'https' ingressNginx -> edp.openbao.openbao 'https'
ingressNginx -> edp.argoCD.argocdServer 'https' ingressNginx -> edp.argoCD.argocdServer 'https'

View file

@ -7,6 +7,10 @@ model {
-> edp.forgejo 'manages code' -> edp.forgejo 'manages code'
-> edp.keycloak 'authenticates' -> edp.keycloak 'authenticates'
-> edp.argoCD 'manages deployments' -> 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' { platformdeveloper = actor 'Platform Developer' {
description 'The EDP engineer' description 'The EDP engineer'

View file

@ -19,7 +19,7 @@ deployment {
} }
namespace gitea { namespace gitea {
instanceOf edp.forgejo.forgejo instanceOf edp.forgejo
instanceOf edp.forgejo.forgejoRunner instanceOf edp.forgejo.forgejoRunner
} }

View file

@ -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
}
}

View file

@ -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
}
}

View file

@ -12,13 +12,13 @@ views {
color secondary color secondary
} }
localbox.git -> edp.forgejo.forgejo.application_gitrepo 'git push' localbox.git -> edp.forgejogit 'git push'
edp.forgejo.forgejo.application_gitrepo -> edp.forgejoRunner 'on push' edp.forgejo.forgejogit -> edp.forgejoRunner 'on push'
edp.forgejoRunner -> edp.forgejo.imageregistry 'pushes new image' 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' edp.argoCD -> cloud 'deploys application'
cloud -> edp.forgejo.imageregistry 'pulls image' cloud -> edp.forgejo.imageregistry 'pulls image'
} }