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
109
resources/likec4/INTEGRATION.md
Normal 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/)
|
||||
29
resources/likec4/README.md
Normal 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`
|
||||
86
resources/likec4/deployment/kind/edp.c4
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
49
resources/likec4/deployment/otc/edp.c4
Normal 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'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
72
resources/likec4/deployment/otc/faas-deployment.c4
Normal 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'
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
74
resources/likec4/deployment/otc/foundry.c4
Normal 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'
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
14
resources/likec4/devbox.json
Normal 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"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
73
resources/likec4/devbox.lock
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
resources/likec4/doc/developer-landscape/cicd-outerloop-2.png
Normal file
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 467 KiB |
BIN
resources/likec4/doc/developer-landscape/cicd-outerloop.png
Normal file
|
After Width: | Height: | Size: 88 KiB |
|
|
@ -0,0 +1,44 @@
|
|||
# Developer landscape with respect to DevOps Inner-Outer loop
|
||||
|
||||
## 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)
|
||||
|
||||
* (original articale is here](https://www.curiositysoftware.ie/blog/software-delivery-leaders-guide-inner-outer-loops)
|
||||
|
||||
## Landscape
|
||||
|
||||
### Draft
|
||||
|
||||

|
||||
|
||||
### C4
|
||||
|
||||
See [developer-landscape](../../views/landscape.c4)
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||
## CI/CD Outerloop
|
||||
|
||||
### Draft
|
||||
|
||||

|
||||
|
||||
ArgoCD and Cloud are CD, Forgejo is CI
|
||||
|
||||
### C4
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
## PPT
|
||||
|
||||

|
||||
|
After Width: | Height: | Size: 121 KiB |
|
After Width: | Height: | Size: 240 KiB |
|
After Width: | Height: | Size: 265 KiB |
|
After Width: | Height: | Size: 178 KiB |
|
After Width: | Height: | Size: 374 KiB |
BIN
resources/likec4/doc/developer-landscape/localdev.png
Normal file
|
After Width: | Height: | Size: 238 KiB |
BIN
resources/likec4/doc/developer-landscape/slide-1.png
Normal file
|
After Width: | Height: | Size: 475 KiB |
3
resources/likec4/likec4.config.json
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"name": "architecture"
|
||||
}
|
||||
103
resources/likec4/models/code/workflow-edpbuilder.c4
Normal 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
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
model {
|
||||
workflow argocdworkflow "EDP ArgoCD Setup Workflow" {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
model {
|
||||
workflow edpworkflow "EDP Infrastructure Setup Workflow" {
|
||||
// step createS3bucket "Create s3 bucket for state" {}
|
||||
// step setupRedis "Setup Redis" {}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
6
resources/likec4/models/components/forgejoRunner.c4
Normal 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'
|
||||
}
|
||||
}
|
||||
|
|
@ -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.'
|
||||
|
||||
}
|
||||
}
|
||||
6
resources/likec4/models/components/promtail.c4
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
model {
|
||||
component promtail 'Promtail' {
|
||||
description 'Log shipper agent for Loki'
|
||||
|
||||
}
|
||||
}
|
||||
13
resources/likec4/models/components/tools.c4
Normal 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"
|
||||
}
|
||||
|
||||
}
|
||||
9
resources/likec4/models/containers/api.c4
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
model {
|
||||
|
||||
extend edp {
|
||||
container api 'API' {
|
||||
description 'API for the EDP platform'
|
||||
icon tech:swagger
|
||||
}
|
||||
}
|
||||
}
|
||||
24
resources/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.forgejogit 'Syncs git repo'
|
||||
}
|
||||
}
|
||||
}
|
||||
25
resources/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
resources/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
resources/likec4/models/containers/elasticsearch.c4
Normal 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'
|
||||
}
|
||||
|
||||
}
|
||||
13
resources/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'
|
||||
}
|
||||
}
|
||||
}
|
||||
42
resources/likec4/models/containers/forgejo.c4
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
||||
11
resources/likec4/models/containers/grafana.c4
Normal 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'
|
||||
}
|
||||
}
|
||||
}
|
||||
25
resources/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 '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
resources/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'
|
||||
}
|
||||
}
|
||||
}
|
||||
9
resources/likec4/models/containers/kyverno.c4
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
model {
|
||||
|
||||
extend edp {
|
||||
container kyverno 'Kyverno' {
|
||||
#internal
|
||||
description 'Policy-as-Code'
|
||||
}
|
||||
}
|
||||
}
|
||||
8
resources/likec4/models/containers/loki.c4
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
model {
|
||||
|
||||
extend edp {
|
||||
container loki 'Loki' {
|
||||
description 'Log aggregation system'
|
||||
}
|
||||
}
|
||||
}
|
||||
13
resources/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
resources/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
resources/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'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
8
resources/likec4/models/containers/objectstorage.c4
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
model {
|
||||
|
||||
container objectstorage 's3 Object Storage' {
|
||||
description 's3 Object Storage'
|
||||
technology 'S3 Object Storage'
|
||||
}
|
||||
|
||||
}
|
||||
17
resources/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'
|
||||
}
|
||||
}
|
||||
}
|
||||
13
resources/likec4/models/containers/postgres.c4
Normal 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'
|
||||
}
|
||||
|
||||
}
|
||||
9
resources/likec4/models/containers/prometheus.c4
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
model {
|
||||
|
||||
extend edp {
|
||||
container prometheus 'Prometheus' {
|
||||
description 'Monitoring and alerting toolkit'
|
||||
icon tech:prometheus
|
||||
}
|
||||
}
|
||||
}
|
||||
9
resources/likec4/models/containers/redis.c4
Normal 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'
|
||||
}
|
||||
|
||||
}
|
||||
14
resources/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
resources/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'
|
||||
}
|
||||
}
|
||||
}
|
||||
35
resources/likec4/models/context/actors.c4
Normal 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'
|
||||
}
|
||||
}
|
||||
14
resources/likec4/models/context/cloud.c4
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
6
resources/likec4/models/context/customer-systems.c4
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
model {
|
||||
enterprise = system "Customers' Enterprise Systems" {
|
||||
description "The customers' enterprise systems"
|
||||
-> cloud 'app specific dependencies'
|
||||
}
|
||||
}
|
||||
10
resources/likec4/models/context/edfoundry.c4
Normal 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"
|
||||
|
||||
}
|
||||
}
|
||||
31
resources/likec4/models/context/edp.c4
Normal 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'
|
||||
}
|
||||
}
|
||||
|
||||
22
resources/likec4/models/context/localbox.c4
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
||||
35
resources/likec4/models/spec.c4
Normal 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
19
resources/likec4/package.json
Normal 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"
|
||||
}
|
||||
}
|
||||
16
resources/likec4/views/deployment/kind/kind.c4
Normal 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.*
|
||||
}
|
||||
}
|
||||
|
||||
24
resources/likec4/views/deployment/otc/edp.c4
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -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.
|
||||
53
resources/likec4/views/deployment/otc/foundry-and-edp.c4
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
37
resources/likec4/views/deployment/otc/foundry.c4
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
24
resources/likec4/views/deployment/otc/otc-faas.c4
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -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'
|
||||
}
|
||||
|
||||
}
|
||||
8
resources/likec4/views/edp/edfbuilder.c4
Normal 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
|
||||
}
|
||||
}
|
||||
44
resources/likec4/views/edp/edp-as-idp.c4
Normal 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
|
||||
}
|
||||
}
|
||||
42
resources/likec4/views/edp/edp-as-orchestrator.c4
Normal 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
|
||||
}
|
||||
}
|
||||
86
resources/likec4/views/edp/edp.c4
Normal 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 ->
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||