feat(architecture): migrate LikeC4 models from edp-doc with Git history

Port the complete LikeC4 architecture documentation from the edp-doc
repository to this repository, establishing it as the primary source
for C4 architecture models.

Migration Details:
- Migrated all C4 models from edp-doc/docs/likec4 to resources/likec4/
- Preserved Git history using git filter-branch and git read-tree
- Includes 54 C4 source files covering deployment, components, and views
- Updated LikeC4 to v1.42.1 (from deprecated v0.40.0)

Directory Structure:
- resources/likec4/models/ - C4 model definitions (components, containers, context, code)
- resources/likec4/views/ - View definitions (deployment, EDP, high-level concepts, dynamic)
- resources/likec4/deployment/ - Deployment-specific models (KIND, OTC)
- resources/likec4/doc/ - Documentation and screenshots

Architecture Coverage:
- OTC FaaS deployment architecture
- EDP component and container models
- Developer landscape and workflows
- GitOps inner/outer loop processes
- Infrastructure components (ArgoCD, Forgejo, Keycloak, Crossplane, etc.)

Dependencies:
- likec4@1.42.1
- @likec4/cli@0.40.0

This migration makes the ipceicis-developerframework repository the
authoritative source for architecture documentation. The edp-doc
repository may reference these models via git submodule if needed.

Related: Migration from https://edp.buildth.ing/DevFW/edp-doc
This commit is contained in:
Stephan Lo 2025-10-24 13:08:28 +02:00
parent bf72902237
commit 286b427ed8
73 changed files with 4188 additions and 0 deletions

View file

@ -0,0 +1,109 @@
# LikeC4 Architecture Documentation Integration
This directory contains the LikeC4 architecture models and views that power the interactive architecture diagrams throughout this documentation.
## What is LikeC4?
LikeC4 is a tool for creating interactive C4 architecture diagrams as code. It generates web components that can be embedded directly into web pages, providing an interactive way to explore complex system architectures.
## Directory Structure
```
resources/likec4/
├── models/ # C4 model definitions (.c4 files)
│ ├── components/ # Component-level models
│ ├── containers/ # Container-level models
│ ├── context/ # System context models
│ └── code/ # Code-level workflow models
├── views/ # View definitions
│ ├── deployment/ # Deployment architecture views
│ ├── edp/ # EDP-specific views
│ ├── high-level-concept/ # Conceptual views
│ └── dynamic/ # Dynamic process views
├── deployment/ # Deployment-specific models
├── doc/ # Documentation and screenshots
├── package.json # Node.js dependencies
└── README.md # This file
```
## Generating Web Components
To generate the web component that Hugo can use:
```bash
cd resources/likec4
# Install dependencies (first time only)
npm install
# Generate the web component
npx likec4 codegen webcomponent \
--webcomponent-prefix likec4 \
--outfile ../../static/js/likec4-webcomponent.js
```
This creates `static/js/likec4-webcomponent.js` which contains all your architecture views as an interactive web component.
## Using in Hugo Content
Add interactive diagrams to any Markdown page:
```markdown
## Architecture Overview
<div class="likec4-container">
<div class="likec4-header">
System Architecture - High Level View
</div>
<likec4-view view-id="otc-faas" browser="true"></likec4-view>
<div class="likec4-loading" id="likec4-loading">
Loading architecture diagram...
</div>
</div>
{{< alert title="Note" >}}
The diagram above is interactive. Click on components to explore details.
{{< /alert >}}
```
## Available Views
To discover available view IDs:
```bash
# Search for all view definitions in .c4 files
cd resources/likec4
grep -r "view\s\+\w" views/ models/ --include="*.c4"
```
Common view IDs include:
- `otc-faas` - OTC FaaS Deployment Architecture
- `edp` - EDP Main Overview
- `landscape` - Developer Landscape
- `edpbuilderworkflow` - EDP Builder Workflow
- And many more...
## Workflow for Changes
1. **Edit Models**: Modify `.c4` files in `models/` or `views/`
2. **Regenerate**: Run the codegen command (see above)
3. **Test**: Start Hugo dev server and check your pages
4. **Commit**: Commit both the `.c4` changes and regenerated JS file
## Integration with Hugo
The integration is enabled via:
- `hugo.toml` - Configuration parameter `params.likec4.enable = true`
- `layouts/partials/hooks/head-end.html` - Loads CSS and JS
- `static/css/likec4-styles.css` - Styling for diagrams
- `static/js/likec4-loader.js` - Dynamic loading logic
- `static/js/likec4-webcomponent.js` - Generated web component (you create this)
## Migrated from edp-doc
This content was migrated from the edp-doc repository with full Git history preserved. This repository is now the primary source for LikeC4 architecture documentation.
## More Information
- [LikeC4 Documentation](https://likec4.dev/)
- [C4 Model](https://c4model.com/)

View file

@ -0,0 +1,29 @@
# LikeC4 architecture documentation
Run `npx likec4 start` to start dev server
## with docker and how to render/export images
// how to create/export c4 images:
// see also https://likec4.dev/tooling/cli/
docker run -it --rm --name likec4 --user node -v $PWD:/app node bash
npm install likec4
exit
docker commit likec4 likec4
docker run -it --rm --user node -v $PWD:/app -p 5173:5173 likec4 bash
// as root
npx playwright install-deps
npx playwright install
npm install likec4
// render
node@e20899c8046f:/app/content/en/docs/project/onboarding$ ./node_modules/.bin/likec4 export png -o ./images .
## trouble shooting
when refactoring you might need to restart the languange server, just that it updates its internal model representation
In VSCode it is: `ctrl+Shift+P' + 'LikeC4: restart languange server`

View file

@ -0,0 +1,86 @@
// Deployment model
deployment {
environment local 'Local kind-cluster' {
description 'Local kind-cluster environment for EDP, typically run by edpbuilder'
technology 'Kind'
icon tech:kubernetes
namespace backstage {
instanceOf edp.ui.backstage
instanceOf edp.ui.database
}
namespace argocd {
instanceOf edp.argoCD.argocdAppController
instanceOf edp.argoCD.argocdAppSetController
instanceOf edp.argoCD.argocdRedis
instanceOf edp.argoCD.argocdRepoServer
instanceOf edp.argoCD.argocdServer
}
namespace gitea {
instanceOf edp.forgejo
instanceOf forgejoRunner
}
namespace keycloak {
instanceOf edp.keycloak.keycloak
instanceOf edp.keycloak.keycloakDB
}
namespace crossplane 'crossplane-system' {
instanceOf edp.crossplane.crossplane
instanceOf edp.crossplane.crossplaneFunction
instanceOf edp.crossplane.crossplaneRbacManager
instanceOf edp.crossplane.providerArgoCD
instanceOf edp.crossplane.providerKind
instanceOf edp.crossplane.providerShell
}
namespace externalSecrets 'external-secrets' {
instanceOf edp.externalSecrets.certController
instanceOf edp.externalSecrets.externalSecrets
instanceOf edp.externalSecrets.webhook
}
namespace velero {
instanceOf edp.velero.velero
}
namespace minio 'minio-backup' {
instanceOf edp.minio.minio
}
namespace monitoring {
instanceOf edp.monitoring.alloy
instanceOf edp.monitoring.distributor
instanceOf edp.monitoring.gateway
instanceOf edp.monitoring.ingestor
instanceOf edp.monitoring.querier
instanceOf edp.monitoring.queryFrontend
}
namespace ingressNginx 'ingress-nginx'{
instanceOf edp.ingressNginx.ingressNginx
}
namespace openbao 'openbao' {
instanceOf edp.openbao.openbao
instanceOf edp.openbao.agentInjector
}
namespace fibonacci 'fibonacci-app' {
instanceOf edp.testApp.fibonacci
}
namespace mailhog 'mailhog' {
instanceOf edp.mailhog.mailhog
}
namespace spark 'spark' {
instanceOf edp.spark.sparkoperator
}
}
}

View file

@ -0,0 +1,49 @@
// Deployment model
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.
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'
kubernetes cce 'OTC CCE' {
description 'OTC Container Cluster Engine'
icon tech:kubernetes
technology 'Kubernetes'
cluster edp 'EDP' {
instanceOf edp.argoCD
instanceOf forgejoRunner
instanceOf edp.forgejo {
-> cloudServices.elasticsearch
-> cloudServices.objectstorage
-> cloudServices.postgres
-> cloudServices.redis
}
instanceOf edp.externalSecrets
instanceOf edp.ingressNginx
}
}
paas cloudServices 'EDP Cloud Services' {
description 'EDP Cloud Services'
technology 'Cloud Services'
instanceOf postgres
instanceOf redis
instanceOf objectstorage
instanceOf elasticsearch
}
computeressource forgejoRunnerInfrastructure 'EDP ForgejoRunner infrastructure' {
description 'Infrastructure for Forgejo runners like pods, vms, lxds, etc'
instanceOf forgejoRunner {
-> cce.edp.forgejo 'registers'
}
}
}
}

View file

@ -0,0 +1,72 @@
deployment {
cloud otc-faas 'OTC prototype FaaS' {
description 'OTC environments for Prototype faaS.
'
technology 'OTC'
environment dev 'tenant Dev' {
description '*.t09.de'
technology 'OTC'
kubernetes cce 'Central Forgejo' {
description '*.t09.de'
icon tech:kubernetes
technology 'Kubernetes'
cluster edp 'Forgejo Dev for platform team' {
description 't09.de'
instanceOf edp.forgejo {
-> cloudServices
}
}
}
paas cloudServices 'EDP Cloud Services' {
description 'EDP Cloud Services (Postgres, Redis, etc.'
technology 'Cloud Services'
}
kubernetes observability 'Observability' {
description '*.t09.de'
icon tech:kubernetes
technology 'Kubernetes'
}
}
environment prod 'Tenant Prod' {
description '*.buildth.ing'
technology 'OTC'
kubernetes cce 'Central Forgejo' {
description '*.buildth.ing'
icon tech:kubernetes
technology 'Kubernetes'
cluster edp 'Forgejo for all EDP-tenants' {
instanceOf edp.forgejo 'Forgejo for all EDP-tenants' {
description 'buildth.ing'
-> cloudServices
}
}
}
paas cloudServices 'EDP Cloud Services' {
description 'EDP Cloud Services (Postgres, Redis, etc.'
technology 'Cloud Services'
}
kubernetes observability 'Observability' {
description '*.buildth.ing'
icon tech:kubernetes
technology 'Kubernetes'
}
}
}
}

View file

@ -0,0 +1,74 @@
// Deployment model
deployment {
cloud otc-edpFoundry 'OTC EDP Foundry Central Service clusters' {
description '
OTC environments for the central EDP Foundry services. This is kubernetes clusters and other infrastructure like nodes and vms, and optionally platform services. All is set up by IaC terraform and edpbuilder.
A tenant is a folder in Foundry-Config-Forgejo. On merge triggers reconciliation to EDP.
Optionally we will have a WebUI/API/CLI
'
technology 'OTC'
kubernetes cce 'OTC CCE' {
description 'OTC Container Cluster Engine'
icon tech:kubernetes
technology 'Kubernetes'
cluster internalServices 'EDP Foundry Internal Services' {
instanceOf edp.argoCD
instanceOf edp.forgejo {
-> workflowSetupEDPInfrastructure.forgejoRunner 'invokes'
-> workflowSetupArgoCDInfrastructure.forgejoRunner 'invokes'
}
instanceOf edp.externalSecrets
instanceOf edp.openbao
instanceOf edp.ingressNginx
}
cluster centralObservability 'EDP Foundry Central Observability' {
instanceOf edp.grafana
instanceOf edp.prometheus
instanceOf edp.loki
}
}
computeressource workflowSetupEDPInfrastructure 'EDP infrastructure Workflow' {
description 'EDP infrastructure Workflow'
instanceOf forgejoRunner {
-> forgejoRunnerWorker 'runs'
}
instanceOf forgejoRunnerWorker {
-> edpworkflow 'executes'
}
instanceOf edpworkflow {
-> otc-edp-per-tenant.cce.edp 'deploys edp to otc.cce'
-> otc-edp-per-tenant.cloudServices 'deploys edp to otc.paas'
}
}
computeressource workflowSetupArgoCDInfrastructure 'EDP ArgoCD Workflow' {
description 'EDP Setup ArgoCD Workflow'
instanceOf forgejoRunner {
-> forgejoRunnerWorker 'runs'
}
instanceOf forgejoRunnerWorker {
-> edpworkflow 'executes'
}
instanceOf edpworkflow {
-> otc-edp-per-tenant.cce.argoCD
}
}
computeressource forgejoRunnerInfrastructure 'EDP ForgejoRunner infrastructure' {
description 'Infrastructure for Forgejo runners like pods, vms, lxds, etc'
instanceOf forgejoRunner {
-> cce.internalServices.forgejo 'registers'
}
}
}
}

View file

@ -0,0 +1,14 @@
{
"$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.14.0/.schema/devbox.schema.json",
"packages": ["nodejs@latest"],
"shell": {
"init_hook": [
"echo 'Welcome to devbox!' > /dev/null"
],
"scripts": {
"test": [
"echo \"Error: no test specified\" && exit 1"
]
}
}
}

View file

@ -0,0 +1,73 @@
{
"lockfile_version": "1",
"packages": {
"github:NixOS/nixpkgs/nixpkgs-unstable": {
"resolved": "github:NixOS/nixpkgs/250b695f41e0e2f5afbf15c6b12480de1fe0001b?lastModified=1743814133&narHash=sha256-drDyYyUmjeYGiHmwB9eOPTQRjmrq3Yz26knwmMPLZFk%3D"
},
"nodejs@latest": {
"last_modified": "2025-03-16T16:17:41Z",
"plugin_version": "0.0.2",
"resolved": "github:NixOS/nixpkgs/8f76cf16b17c51ae0cc8e55488069593f6dab645#nodejs_23",
"source": "devbox-search",
"version": "23.10.0",
"systems": {
"aarch64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/dihlffh62qmgzsrxq1igwxicdyr3fn8a-nodejs-23.10.0",
"default": true
},
{
"name": "libv8",
"path": "/nix/store/ks94i4365833bykrzg3d3mqxnciygyrn-nodejs-23.10.0-libv8"
}
],
"store_path": "/nix/store/dihlffh62qmgzsrxq1igwxicdyr3fn8a-nodejs-23.10.0"
},
"aarch64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/m7j1lf8a4z5bfla1m78pa3y12888hl7b-nodejs-23.10.0",
"default": true
},
{
"name": "libv8",
"path": "/nix/store/kfvlfxx83n2w2fyb8hiz4p4dc165r035-nodejs-23.10.0-libv8"
}
],
"store_path": "/nix/store/m7j1lf8a4z5bfla1m78pa3y12888hl7b-nodejs-23.10.0"
},
"x86_64-darwin": {
"outputs": [
{
"name": "out",
"path": "/nix/store/nj0d1lc4nanqj7v4ibcgd26m3p5yfb0h-nodejs-23.10.0",
"default": true
},
{
"name": "libv8",
"path": "/nix/store/k5rvmvqyibamfxa7cfzjfd5ldmi38kf3-nodejs-23.10.0-libv8"
}
],
"store_path": "/nix/store/nj0d1lc4nanqj7v4ibcgd26m3p5yfb0h-nodejs-23.10.0"
},
"x86_64-linux": {
"outputs": [
{
"name": "out",
"path": "/nix/store/m7imcmwi4hschl257dzc33gxciqlf4bm-nodejs-23.10.0",
"default": true
},
{
"name": "libv8",
"path": "/nix/store/wy7ysxmd2ygdc5zpbhf9ripwgvvvnwsd-nodejs-23.10.0-libv8"
}
],
"store_path": "/nix/store/m7imcmwi4hschl257dzc33gxciqlf4bm-nodejs-23.10.0"
}
}
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

View file

@ -0,0 +1,44 @@
# Developer landscape with respect to DevOps Inner-Outer loop
## Inner loop, outer loop
![alt text](localdev.png)
* [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)
* (original articale is here](https://www.curiositysoftware.ie/blog/software-delivery-leaders-guide-inner-outer-loops)
## Landscape
### Draft
![alt text](developer-landscape-view-draft.png)
### C4
See [developer-landscape](../../views/landscape.c4)
![alt text](developer-landscape-view-c4.png)
![alt text](developer-landscape-view-c4-2.png)
![alt text](developer-landscape-view-c4-ppt-layouted.png)
![alt text](developer-landscape-view-c4-ppt-layouted-dark.png)
## CI/CD Outerloop
### Draft
![alt text](cicd-outerloop-draft.png)
ArgoCD and Cloud are CD, Forgejo is CI
### C4
![alt text](cicd-outerloop.png)
![alt text](cicd-outerloop-2.png)
## PPT
![alt text](slide-1.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 475 KiB

View file

@ -0,0 +1,3 @@
{
"name": "architecture"
}

View file

@ -0,0 +1,103 @@
model {
workflow edfbuilder_workflow "EDFbuilder" {
step runEDP "Run edpbuilder script" {
style {
opacity 25%
}
step createCrossplaneNS "Create Crossplane namespace"
step installCrossplaneHelm "Install Crossplane Helm Chart"
step installCrossplaneFunctionsAndProviders "Install Crossplane Functions and Providers"
step waitForCrossplaneFunctionsAndProviders "Wait for Crossplane Functions and Providers to become available"
step setupCrossplaneServiceAccount "Apply cluster-admin role to crossplane shell provider service account"
step createArgoCdNS "Create ArgoCD namespace"
step createGiteaNS "Create Gitea namespace"
step createArgoCdTlsCert "Create TLS Cert for Argo"
step createGiteaTlsCert "Create TLS Cert for Forgejo"
step createEDFBuilderDefinition "Create EDFbuilder crossplane definition (defines API)"
step createEDFBuilderComposition "Create EDFbuilder crossplane composition (defines what happens when EDFbuilder is applied)"
}
step applyEDFBuilder "Applies EDFbuilder resource (and triggers creation)" {
style {
opacity 15%
}
step setEnvVars "Set required environment variables"
step readWriteKubeConf "Make kube.conf write/readbale"
step setWorkDir "Set workdir to /tmp/rundir"
step cloneStacksRepo "Clone steps repo and checkout desired branch"
step hydrateStacksWithValues "Hydrate Stacks with values"
step createNamespaces "Create all required namespaces"
step createGiteaAdminPass "Create Admin Password for Forgejo"
step createGrafanaPass "Create Grafana Admin Password"
step applyServiceMonitorCRD "Apply ServiceMonitor CRDs for Prometheus"
step cloneIngressNginxChart "Git clone ingress-nginx helm chart"
step isntallIngressNginx "Install ingress-nginx from cloned chart"
step waitForIngress "Wait till ingress-nginx is ready"
step cloneArgoCDHelm "Git clone ArgoCD Helm Chart"
step installArgoCD "Install ArgoCD Helm Chart"
step installArgoCDIngress "Install ingress for ArgoCD"
step cloneForgejoHelmChart "Git clone Forgejo Helm Chart"
step installForgejo "Install Forgejo Helm Chart"
step installForgejoIngress "Install ingress for Forgejo"
step waitForArgoCD "Wait till ArgoCD is available"
step waitForForgejo "Wait till Forgejo is available"
step createForgejoUser "Create technical user for Forgejo"
step createForgejoRepo "Create repository for EDP state in Forgejo"
step installForgejoRunner "Install Forgejo Runner deployment"
step registerForgejoRunner "Create registration token secret for runner"
step configGitIdentity "Configure Git identity"
step configCrossplaneArgoCDProvider "Configure Crossplane ArgoCD provider"
step configCrossplaneKindProvider "Configure Crossplane Kind provider"
step uploadStacksToForgjo "Git push hydrated stacks to Forgejo isntance"
step configArgoDockerRegistry "Configure Docker Registry for Argo Workflows"
step createPackagesForgejoUser "Create packages user and token in Forgejo (unused?)"
step installArgoCDStacks "Apply all selected ArgoCD stacks"
step cleanup "Cleanup work folder and unset all env vars"
setEnvVars -> readWriteKubeConf
readWriteKubeConf -> setWorkDir
setWorkDir -> cloneStacksRepo
cloneStacksRepo -> hydrateStacksWithValues
hydrateStacksWithValues -> createNamespaces
createNamespaces -> createGiteaAdminPass
createGiteaAdminPass -> createGrafanaPass
createGrafanaPass -> applyServiceMonitorCRD
applyServiceMonitorCRD -> cloneIngressNginxChart
cloneIngressNginxChart -> isntallIngressNginx
isntallIngressNginx -> waitForIngress
waitForIngress -> cloneArgoCDHelm
cloneArgoCDHelm -> installArgoCD
installArgoCD -> installArgoCDIngress
installArgoCDIngress -> cloneForgejoHelmChart
cloneForgejoHelmChart -> installForgejo
installForgejo -> installForgejoIngress
installForgejoIngress -> waitForArgoCD
waitForArgoCD -> waitForForgejo
waitForForgejo -> createForgejoUser
createForgejoUser -> createForgejoRepo
createForgejoRepo -> installForgejoRunner
installForgejoRunner -> registerForgejoRunner
registerForgejoRunner -> configGitIdentity
configGitIdentity -> configCrossplaneArgoCDProvider
configCrossplaneArgoCDProvider -> configCrossplaneKindProvider
configCrossplaneKindProvider -> uploadStacksToForgjo
uploadStacksToForgjo -> configArgoDockerRegistry
configArgoDockerRegistry -> createPackagesForgejoUser
createPackagesForgejoUser -> installArgoCDStacks
installArgoCDStacks -> cleanup
}
createCrossplaneNS -> installCrossplaneHelm
installCrossplaneHelm -> installCrossplaneFunctionsAndProviders
installCrossplaneFunctionsAndProviders -> waitForCrossplaneFunctionsAndProviders
waitForCrossplaneFunctionsAndProviders -> setupCrossplaneServiceAccount
setupCrossplaneServiceAccount -> createArgoCdNS
createArgoCdNS -> createGiteaNS
createGiteaNS -> createArgoCdTlsCert
createArgoCdTlsCert -> createGiteaTlsCert
createGiteaTlsCert -> createEDFBuilderDefinition
createEDFBuilderDefinition -> createEDFBuilderComposition
createEDFBuilderComposition -> applyEDFBuilder
}
}

View file

@ -0,0 +1,6 @@
model {
workflow argocdworkflow "EDP ArgoCD Setup Workflow" {
}
}

View file

@ -0,0 +1,7 @@
model {
workflow edpworkflow "EDP Infrastructure Setup Workflow" {
// step createS3bucket "Create s3 bucket for state" {}
// step setupRedis "Setup Redis" {}
}
}

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,6 @@
model {
component forgejoRunner 'Forgejo Runner' {
description 'A runner is a service that runs jobs triggered by Forgejo. A runner can have different technical implementations like a container or a VM.'
-> edp.forgejoActions 'register'
}
}

View file

@ -0,0 +1,6 @@
model {
component forgejoRunnerWorker 'Forgejo Runner Worker' {
description 'A worker is a service that runs a job invoked by a runner. A worker typically is a container.'
}
}

View file

@ -0,0 +1,6 @@
model {
component promtail 'Promtail' {
description 'Log shipper agent for Loki'
}
}

View file

@ -0,0 +1,13 @@
model {
component edfbuilder "edfbuilder" {
description 'EDP Foundry Builder'
technology 'Golang'
icon tech:go
style {
shape rectangle
}
-> edf "boots one"
platformdeveloper -> edfbuilder "runs"
}
}

View file

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

View 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.forgejogit 'Syncs git repo'
}
}
}

View 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'
}
}
}

View 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'
}
}
}

View file

@ -0,0 +1,13 @@
model {
container elasticsearch 'Elasticsearch' {
description '
Elasticsearch is a distributed, RESTful search and analytics engine capable of
addressing a growing number of use cases. It centrally stores your data so you can
discover the expected and uncover the unexpected.
'
icon tech:elasticsearch
technology 'Elasticsearch'
}
}

View 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'
}
}
}

View file

@ -0,0 +1,42 @@
model {
extend edp {
container forgejo 'Forgejo' {
description '
Fully managed DevOps Platform
offering capabilities like
code version controling
collaboration and ticketing
and security scanning
'
technology 'Golang'
icon tech:go
component forgejocollaboration 'Collaboration' {
icon tech:github
}
component forgejoproject 'Project Mgmt' {
icon tech:github
}
}
component forgejoActions 'Forgejo Actions' {
description 'Continuous Integration like Github Actions'
technology 'Golang'
icon tech:go
-> forgejoRunner 'runs workflows'
}
component imageregistry 'Forgejo OCI Image Registry' {
description 'Container Image Registry'
technology 'Golang'
icon tech:go
}
component forgejogit 'ForgejoGit' {
icon tech:git
}
}
}

View file

@ -0,0 +1,11 @@
model {
extend edp {
container grafana 'Grafana' {
description 'Data visualization and monitoring'
icon tech:grafana
-> prometheus 'get metrics and alerts'
-> loki 'get logs'
}
}
}

View 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 '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'
}
}
}

View 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'
}
}
}

View file

@ -0,0 +1,9 @@
model {
extend edp {
container kyverno 'Kyverno' {
#internal
description 'Policy-as-Code'
}
}
}

View file

@ -0,0 +1,8 @@
model {
extend edp {
container loki 'Loki' {
description 'Log aggregation system'
}
}
}

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

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

View 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'
}
}
}
}

View file

@ -0,0 +1,8 @@
model {
container objectstorage 's3 Object Storage' {
description 's3 Object Storage'
technology 'S3 Object Storage'
}
}

View 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'
}
}
}

View file

@ -0,0 +1,13 @@
model {
container postgres 'PostgreSQL' {
description '
PostgreSQL is a powerful, open source object-relational database system.
It has more than 15 years of active development and a proven architecture
that has earned it a strong reputation for reliability, data integrity,
and correctness.'
icon tech:postgresql
technology 'PostgreSQL'
}
}

View file

@ -0,0 +1,9 @@
model {
extend edp {
container prometheus 'Prometheus' {
description 'Monitoring and alerting toolkit'
icon tech:prometheus
}
}
}

View file

@ -0,0 +1,9 @@
model {
container redis 'Redis' {
description 'Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker.'
icon tech:redis
technology 'Redis'
}
}

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

View 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'
}
}
}

View file

@ -0,0 +1,35 @@
model {
developer = actor 'Developer' {
description 'The regular user of the platform'
-> localbox 'inner loop development'
-> edp 'outer loop development'
-> edp.ui 'manages project'
-> 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'
-> edp.forgejogit 'uses git'
}
platformdeveloper = actor 'Platform Developer' {
description 'The EDP engineer'
style {
color gray
shape person
}
}
otherProductLifecycleRoles = actor 'Reviewer, Tester, Auditors, Operators' {
description 'Coworking roles in the outer loop'
-> edp 'act according to responibility'
}
customers = actor 'End Customers' {
description 'Consumers of your Application'
style {
color amber
shape person
}
-> cloud 'uses your app'
}
}

View file

@ -0,0 +1,14 @@
model {
cloud = system 'Cloud' {
description 'Cloud environments'
technology 'IaaS/PaaS'
application = schema 'application' {
description 'An application description'
technology 'DSL'
style {
color primary
}
}
}
}

View file

@ -0,0 +1,6 @@
model {
enterprise = system "Customers' Enterprise Systems" {
description "The customers' enterprise systems"
-> cloud 'app specific dependencies'
}
}

View file

@ -0,0 +1,10 @@
model {
edf = system 'EDF' {
description 'EDP Foundry is a platform for building and deploying EDPs tenantwise.'
technology 'Kubernetes'
icon tech:kubernetes
-> edp 'builds many'
platformdeveloper -> edf "develops EDP and EDF"
}
}

View file

@ -0,0 +1,31 @@
model {
edp = system 'EDP' {
description 'EDP Edge Development Platform'
technology 'Kubernetes'
icon tech:kubernetes
-> enterprise 'integrates'
-> cloud 'deploys and observes'
-> localbox // inner-outer loop synchronization
application = schema 'application' {
description 'An application description'
technology 'DSL'
style {
color primary
}
}
container testApp 'Fibonacci' {
description 'Testapp to validate deployments'
component fibonacci 'Fibonacci' {
technology 'Golang'
icon tech:go
}
}
// UI requests data from the Backend
// ui -> backend 'fetches via HTTPS'
}
}

View file

@ -0,0 +1,22 @@
model {
localbox = system 'localbox' {
description 'A local development system'
technology 'Linux/Windows/Mac'
-> edp 'inner-outer-loop synchronization'
-> enterprise 'company integration'
application = schema 'application' {
description 'An application description'
technology 'DSL'
style {
color primary
}
}
git = component 'git' {
description 'local git'
technology 'Git'
icon tech:git
}
}
}

View file

@ -0,0 +1,35 @@
specification {
element actor {
style {
shape person
color green
}
}
element component
element container {
style {
opacity 20%
}
}
element internalComponent {
style {
color muted
opacity 15%
}
}
element schema
element step
element system
element workflow
deploymentNode cloud
deploymentNode environment
deploymentNode computeressource
deploymentNode paas
deploymentNode kubernetes
deploymentNode cluster
deploymentNode namespace
tag internal
}

2455
resources/likec4/package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,19 @@
{
"name": "likec4",
"version": "1.0.0",
"description": "Run `npx likec4 start` to start dev server",
"main": "index.js",
"directories": {
"doc": "doc"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@likec4/cli": "^0.40.0",
"likec4": "^1.37.0"
}
}

View file

@ -0,0 +1,16 @@
views {
deployment view index {
title 'Local Kind Deployment'
include
*,
local.**,
local.monitoring.*,
local.openbao.*,
local.externalSecrets.*,
local.crossplane.*,
local.spark.*,
local.argocd.*
}
}

View file

@ -0,0 +1,24 @@
views {
deployment view edp-per-tenant {
title 'EDP per tenant'
include
otc-edp-per-tenant,
otc-edp-per-tenant.*,
otc-edp-per-tenant.cce,
otc-edp-per-tenant.cce.*,
otc-edp-per-tenant.cce.**,
otc-edp-per-tenant.cce.externalSecrets,
otc-edp-per-tenant.forgejoRunnerInfrastructure,
otc-edp-per-tenant.forgejoRunnerInfrastructure.*,
otc-edp-per-tenant.cloudServices,
otc-edp-per-tenant.cloudServices.*
style otc-edp-per-tenant {
color slate
}
style otc-edp-per-tenant.cce {
color red
}
}
}

View file

@ -0,0 +1,19 @@
```mermaid
flowchart TD
subgraph Forgejo
forgejoActions[Forgejo Actions]
forgejogit[ForgejoGit]
end
forgejoRunner[Forgejo Runner]
imageregistry[Forgejo OCI Image Registry]
forgejoActions -- runs workflows --> forgejoRunner
forgejogit -- triggers on push --> forgejoRunner
forgejoRunner -- pushes new image --> imageregistry
forgejoRunner -- pushes new appspec --> forgejogit
```
This diagram shows the main components that connect to `forgejo-runner`:
- `Forgejo Actions` triggers workflows to be run by the runner.
- `ForgejoGit` triggers the runner on push events.
- The runner interacts with the image registry and git as part of CI/CD flows.

View file

@ -0,0 +1,53 @@
views {
deployment view forgejo-as-a-service {
title 'Forgejo as a Service'
include
otc-edpFoundry.*,
otc-edpFoundry.internalServices,
otc-edpFoundry.internalServices.*,
otc-edpFoundry.centralObservability,
otc-edpFoundry.centralObservability.*,
otc-edpFoundry.workflowSetupEDPInfrastructure,
otc-edpFoundry.workflowSetupEDPInfrastructure.*,
otc-edpFoundry.workflowSetupArgoCDInfrastructure,
otc-edpFoundry.workflowSetupArgoCDInfrastructure.*,
otc-edpFoundry.forgejoRunnerInfrastructure,
otc-edpFoundry.forgejoRunnerInfrastructure.*,
otc-edp-per-tenant,
otc-edp-per-tenant.*,
otc-edp-per-tenant.cce,
otc-edp-per-tenant.cce.*,
otc-edp-per-tenant.cce.**,
otc-edp-per-tenant.cce.externalSecrets,
otc-edp-per-tenant.forgejoRunnerInfrastructure,
otc-edp-per-tenant.forgejoRunnerInfrastructure.*,
otc-edp-per-tenant.cloudServices,
otc-edp-per-tenant.cloudServices.*
style otc-edp-per-tenant {
color slate
}
style otc-edpFoundry {
color slate
}
style otc-edpFoundry.workflowSetupEDPInfrastructure {
color amber
}
style otc-edpFoundry.workflowSetupArgoCDInfrastructure {
color amber
}
style otc-edpFoundry.forgejoRunnerInfrastructure {
color green
}
style otc-edp-per-tenant.cce {
color red
}
style otc-edpFoundry.cce {
color red
}
}
}

View file

@ -0,0 +1,37 @@
views {
deployment view edp-foundry-central-service {
title 'EDP Foundry Central Service'
include
otc-edpFoundry,
otc-edpFoundry.*,
otc-edpFoundry.internalServices,
otc-edpFoundry.internalServices.*,
otc-edpFoundry.centralObservability,
otc-edpFoundry.centralObservability.*,
otc-edpFoundry.workflowSetupEDPInfrastructure,
otc-edpFoundry.workflowSetupEDPInfrastructure.*,
otc-edpFoundry.workflowSetupArgoCDInfrastructure,
otc-edpFoundry.workflowSetupArgoCDInfrastructure.*,
otc-edpFoundry.workflowSetupArgoCDInfrastructure.*,
otc-edpFoundry.forgejoRunnerInfrastructure,
otc-edpFoundry.forgejoRunnerInfrastructure.*
style otc-edpFoundry.forgejoRunnerInfrastructure {
color green
}
style otc-edpFoundry.workflowSetupEDPInfrastructure {
color amber
}
style otc-edpFoundry.workflowSetupArgoCDInfrastructure {
color amber
}
style otc-edpFoundry {
color slate
}
style otc-edpFoundry.cce {
color red
}
}
}

View file

@ -0,0 +1,24 @@
views {
deployment view otc-faas {
title 'OTC Prototype FaaS'
include
otc-faas,
otc-faas.*,
otc-faas.dev,
otc-faas.dev.*,
otc-faas.dev.cce,
otc-faas.dev.cce.*,
otc-faas.prod,
otc-faas.prod.*,
otc-faas.prod.cce,
otc-faas.prod.cce.*,
style otc-edp-per-tenant {
color slate
}
style otc-edp-per-tenant.cce {
color red
}
}
}

View file

@ -0,0 +1,26 @@
views {
dynamic view view_gitops-inner-outer-loop_15 {
title 'outer-ci-loop'
include localbox, edp
include edp.forgejo with {
color gray
title 'Forgejo'
}
style edp._ {
color secondary
}
localbox.git -> edp.forgejogit 'git push'
edp.forgejogit -> forgejoRunner 'on push'
forgejoRunner -> edp.imageregistry 'pushes new image'
forgejoRunner -> edp.forgejogit 'pushes new appspec'
edp.forgejogit -> edp.argoCD 'triggers deployment'
edp.argoCD -> cloud 'deploys application'
cloud -> edp.imageregistry 'pulls image'
}
}

View file

@ -0,0 +1,8 @@
views {
view edpbuilderworkflow of edfbuilder {
description 'Describes the process how to create an EDP instance'
include edfbuilder.**
autoLayout LeftRight 120 110
}
}

View file

@ -0,0 +1,44 @@
views {
/**
* @likec4-generated(v1)
* iKRoYXNo2ShjOTFkNTk3Y2QyNjFmM2Y1ZjdhOGVjNDAyOTFjM2FiODI4NTg3NTc5qmF1dG9MYXlvdXSBqWRpcmVjdGlvbqJUQqF40fzwoXnR/iqld2lkdGjNGkWmaGVpZ2h0zQjmpW5vZGVz3gAWqWRldmVsb3BlcoKhYpTR/PDR/tPNAgjNASKhY8KkQGdyMYKhYpQd0f4uzQlszQjioWPDpEBncjKCoWKURdH+Zc0JHM0DhaFjw6RAZ3I1gqFilHLNAhbNCNvNAYehY8OkQGdyNoKhYpR3zQO+zQjUzQGJoWPDpEBncjeCoWKUdM0FYc0I2s0Bh6Fjw6RAZ3IzgqFilG7R/pzNCMfNAYWhY8OkQGdyNIKhYpRtNs0IzM0BjKFjw7FlZHAuZm9yZ2Vqb1J1bm5lcoKhYpTMmM0CTM0CCM0BIqFjwrFlZHAuaW1hZ2VyZWdpc3RyeYKhYpTNA8XNAlPNAgrNASKhY8KqZWRwLmFyZ29D
* RIKhYpTNBx3NAlDNAgjNASKhY8KuZWRwLm1vbml0b3JpbmeCoWKUzQcbzQP9zQIIzQEioWPCq2VkcC5ncmFmYW5hgqFilMydzQP1zQIIzQEioWPCrGVkcC5rZXljbG9ha4KhYpTMnM0Fns0CCM0BIqFjwqtlZHAua3l2ZXJub4KhYpTNBPPNBZnNAgjNASKhY8KzZWRwLmV4dGVybmFsU2VjcmV0c4KhYpTNBx7NBZjNAgjNASKhY8KrZWRwLm9wZW5iYW+CoWKUzQLHzQWdzQIIzQEioWPCsGVkcC51aS5iYWNrc3RhZ2WCoWKUzJbR/tPNAgjNASKhY8KnZWRwLmFwaYKhYpTNBwTR/tfNAgjNASKhY8LZLGFwcGxpY2F0aW9uc3BlY2lmaWNhdGlvbi5hcHBsaWNhdGlvbl9naXRyZXBvgqFilM0DvnfNAgjNASKhY8LZMGFwcGxpY2F0aW9uc3BlY2lmaWNhdGlvbi5hcHBsaWNh
* dGlvbnNwZWNfZ2l0cmVwb4KhYpTNBwl3zQIIzQEioWPCrmVkcC5mb3JnZWpvZ2l0gqFilMyVbc0CCM0BIqFjwqVlZGdlc4anMXc5Y3BiMoOiY3CRgqF4y8BheZmZmZmaoXnR/2ShbISheNDHoXnR/2Sld2lkdGjMoaZoZWlnaHQSoXCaks0XAs0BfJLNFaPNAbOSzRMdzQIRks0Q8s0CNJLNENHNAjeSzQfUzQIzks0Htc0CPJLNB4vNAkmSzQdgzQJdks0HOs0CdacxeTNsY3lqg6JjcJGCoXjNBI2hedH+KqFshKF4zQMHoXnR/kald2lkdGg8pmhlaWdodBKhcJqSzRcCzQGNks0WAc0BxZLNFGzNAhSSzRMIzQI0ks0S6c0CN5LNCm/NAjSSzQpRzQI8ks0KIs0CSZLNCfTNAl6SzQnIzQJ1pzFhZ3ZlbjmDomNwkYKheMvAYa6Y5gyf6qF5y0BTTMzMzMzNoWyEoXjQt6F5Z6V3
* aWR0aDSmaGVpZ2h0EqFwmpLNFwLNAXGSzRU+zQGlks0Res0CDpLNDknNAjSSzQ4pzQI2ks0FUs0CM5LNBTPNAjySzQUJzQJJks0E380CXZLNBLnNAnSnMW52MHc0MYOiY3CRgqF40f9BoXnNAQ+hbISheMzNoXnNAbeld2lkdGjMl6ZoZWlnaHQSoXCaks0XAs0BtpLNFnjNAeeSzRXJzQIcks0VKM0CNJLNFP/NAjuSzQ97zQIwks0PU80CPJLNDynNAkmSzQ7/zQJdks0O2M0CdKYzbnhycTeDomNwkYKhePWhec0DmKFshKF40f8roXnNAimld2lkdGg6pmhlaWdodBKhcJqSzRcCzQGfks0WQM0B1ZLNFS7NAhiSzRQ5zQI0ks0UBc0CO5LNDQPNAi2SzQzRzQI8ks0Mp80CSZLNDH3NAl2SzQxXzQJ0pmJmZ2FwcYOiY3CRgqF40LWhec0FEKFshKF40f7voXnNAxWld2lkdGhX
* pmhlaWdodBKhcJSSzRc1zQHhks0W8c0CEJLNFqXNAkWSzRZgzQJ0
*/
view idp of edp {
title 'EDP as IDP'
global style text_large
include developer
exclude element.tag = #internal
style * {
opacity 25%
}
group 'EDP' {
group 'Developer Control Plane' {
group 'Frontend' {
include backstage, api
}
group 'Version Control' {
include applicationspecification.application_gitrepo, applicationspecification.applicationspec_gitrepo
include forgejogit
}
}
group 'Integration & Delivery Plane' {
include forgejoRunner, imageregistry, argoCD
exclude -> argoCD ->
}
group 'Monitoring Plane' {
include monitoring, grafana
}
group 'Security Plane' {
include keycloak, kyverno, externalSecrets, openbao
}
}
autoLayout TopBottom
}
}

View file

@ -0,0 +1,42 @@
views {
/**
* @likec4-generated(v1)
* iKRoYXNo2ShiMmZlZGEwNzE3MDU5ZjQ0Nzg2YzFhYjJiNTI0NmRjZmRlOWNhYjdlqmF1dG9MYXlvdXSBqWRpcmVjdGlvbqJUQqF40f8UoXkOpXdpZHRozQU6pmhlaWdodM0D7aVub2Rlc4ikQGdyMYKhYpTR/xQOzQU6zQPtoWPDpEBncjKCoWKUMEXNAUDMtKFjw6RAZ3IzgqFilM0B3kXNAUDMtKFjw6RAZ3I0gqFilDDNAXHNAUDMtKFjw6RAZ3I1gqFilM0B3s0Bcc0BQMy0oWPDpEBncjaCoWKU0f88zQJSzQTqzQGBoWPDqmVkcC5hcmdvQ0SCoWKU0f9kzQKJzQIIzQEioWPCrmVkcC5jcm9zc3BsYW5lgqFilM0B+M0Cis0CCM0BIqFjwqVlZGdlc4A=
*/
view edporchestrator of edp {
title 'EDP as Orchestrator'
global style text_large
exclude element.tag = #internal
style * {
opacity 25%
}
group 'EDP' {
group 'Developer Control Plane' {
}
group 'Integration & Delivery Plane' {
}
group 'Monitoring Plane' {
}
group 'Security Plane' {
}
group 'Backend' {
include argoCD with {
description 'Declarative management of platform tools'
}
include crossplane
}
}
autoLayout TopBottom
}
}

View file

@ -0,0 +1,86 @@
views {
view edp of edp {
title 'Context view'
include *
exclude ingressNginx ->
exclude element.tag = #internal
style * {
opacity 25%
}
}
view keycloak of edp.keycloak {
include
*,
edp.ingressNginx ->
}
view forgejo of edp.forgejo {
include
*,
edp.ingressNginx ->
}
view crossplane of edp.crossplane {
include
*,
edp.ingressNginx ->
}
view externalSecrets of edp.externalSecrets {
include
*,
edp.ingressNginx ->
}
view velero of edp.velero {
include
*,
edp.ingressNginx ->
}
view minio of edp.minio {
include
*,
edp.ingressNginx ->
}
view monitoring of edp.monitoring {
include
*,
edp.ingressNginx ->
loki.*
}
view ingressNginx of edp.ingressNginx {
include *
}
view testapp of edp.testApp {
include
*,
edp.ingressNginx ->
}
view mailhog of edp.mailhog {
include
*,
edp.ingressNginx ->
}
view spark of edp.spark {
include
*,
edp.ingressNginx ->
}
view argoCD of edp.argoCD {
include
*,
edp.ingressNginx ->
}
}

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

View file

@ -0,0 +1,41 @@
global {
style text_large * {
size xlarge
}
}
views {
view developer-landscape-with-foundry {
title 'Developer Landscape View (with Foundry)'
autoLayout LeftRight 100 100
global style text_large
include *
exclude developer, localbox, edp, otherProductLifecycleRoles
exclude element.kind = workflow
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
}
group 'Devops outer-loop' {
color gray
opacity 30%
border none
include edp
}
}
}
}

View file

@ -0,0 +1,33 @@
views {
view landscape {
title 'Developer Landscape View'
autoLayout LeftRight 100 100
include *
exclude developer, localbox, edp, otherProductLifecycleRoles
exclude element.kind = workflow
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
}
group 'Devops outer-loop' {
color gray
opacity 30%
border none
include edp
}
}
}
}