322 lines
6.7 KiB
Text
322 lines
6.7 KiB
Text
model {
|
|
developer = actor 'Developer' {
|
|
description 'The regular user of the platform'
|
|
}
|
|
|
|
edp = system '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'
|
|
}
|
|
|
|
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 -> 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 -> 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' {
|
|
description 'Testapp to validate deployments'
|
|
|
|
component fibonacci 'Fibonacci' {
|
|
technology 'Golang'
|
|
icon tech:go
|
|
}
|
|
}
|
|
|
|
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'
|
|
}
|
|
|
|
developer -> ui 'manages project'
|
|
developer -> forgejo 'manages code'
|
|
developer -> keycloak 'authenticates'
|
|
developer -> argoCD 'manages deployments'
|
|
}
|
|
|
|
views {
|
|
|
|
view overview {
|
|
title 'Landscape view'
|
|
|
|
include *
|
|
}
|
|
|
|
view edp of edp {
|
|
title 'Context view'
|
|
include *
|
|
exclude ingressNginx ->
|
|
exclude element.tag = #internal
|
|
|
|
style * {
|
|
opacity 25%
|
|
}
|
|
}
|
|
|
|
view keycloak of keycloak {
|
|
include
|
|
*,
|
|
ingressNginx ->
|
|
}
|
|
|
|
view forgejo of forgejo {
|
|
include
|
|
*,
|
|
ingressNginx ->
|
|
}
|
|
|
|
view crossplane of crossplane {
|
|
include
|
|
*,
|
|
ingressNginx ->
|
|
}
|
|
|
|
view externalSecrets of externalSecrets {
|
|
include
|
|
*,
|
|
ingressNginx ->
|
|
}
|
|
|
|
view velero of velero {
|
|
include
|
|
*,
|
|
ingressNginx ->
|
|
}
|
|
|
|
view minio of minio {
|
|
include
|
|
*,
|
|
ingressNginx ->
|
|
}
|
|
|
|
view monitoring of monitoring {
|
|
include
|
|
*,
|
|
ingressNginx ->,
|
|
loki.*
|
|
}
|
|
|
|
view ingressNginx of ingressNginx {
|
|
include *
|
|
}
|
|
|
|
view testapp of testApp {
|
|
include
|
|
*,
|
|
ingressNginx ->
|
|
}
|
|
|
|
view mailhog of mailhog {
|
|
include
|
|
*,
|
|
ingressNginx ->
|
|
}
|
|
|
|
view spark of spark {
|
|
include
|
|
*,
|
|
ingressNginx ->
|
|
}
|
|
|
|
view argoCD of argoCD {
|
|
include
|
|
*,
|
|
ingressNginx ->
|
|
}
|
|
}
|
|
|
|
|