Merge branch 'development' into feature/tech-doc-refactoring
14
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
devbox.lock
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
{
|
||||||
|
"lockfile_version": "1",
|
||||||
|
"packages": {
|
||||||
|
"github:NixOS/nixpkgs/nixpkgs-unstable": {
|
||||||
|
"resolved": "github:NixOS/nixpkgs/2d9e4457f8e83120c9fdf6f1707ed0bc603e5ac9?lastModified=1741462378&narHash=sha256-ZF3YOjq%2BvTcH51S%2BqWa1oGA9FgmdJ67nTNPG2OIlXDc%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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"name": "project-management"
|
||||||
|
}
|
1
likec4/README.md
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Run ´npx likec4 start´ to start dev server
|
14
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
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
likec4/doc/developer-landscape/cicd-outerloop-2.png
Normal file
After Width: | Height: | Size: 71 KiB |
BIN
likec4/doc/developer-landscape/cicd-outerloop-draft.png
Normal file
After Width: | Height: | Size: 467 KiB |
BIN
likec4/doc/developer-landscape/cicd-outerloop.png
Normal file
After Width: | Height: | Size: 88 KiB |
44
likec4/doc/developer-landscape/devday-presentation.md
Normal file
|
@ -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
|
||||||
|
|
||||||
|

|
BIN
likec4/doc/developer-landscape/developer-landscape-view-c4-2.png
Normal file
After Width: | Height: | Size: 121 KiB |
After Width: | Height: | Size: 240 KiB |
After Width: | Height: | Size: 265 KiB |
BIN
likec4/doc/developer-landscape/developer-landscape-view-c4.png
Normal file
After Width: | Height: | Size: 178 KiB |
After Width: | Height: | Size: 374 KiB |
BIN
likec4/doc/developer-landscape/localdev.png
Normal file
After Width: | Height: | Size: 238 KiB |
BIN
likec4/doc/developer-landscape/slide-1.png
Normal file
After Width: | Height: | Size: 475 KiB |
3
likec4/likec4.config.json
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"name": "architecture"
|
||||||
|
}
|
111
likec4/models/code/workflow.c4
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
views {
|
||||||
|
view edpbuilderworkflow of edfbuilder {
|
||||||
|
description 'Describes the process how to create an EDP instance'
|
||||||
|
include edfbuilder.**
|
||||||
|
autoLayout LeftRight 120 110
|
||||||
|
}
|
||||||
|
}
|
16
likec4/models/components/application-specification.c4
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
13
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
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
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
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
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
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'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
45
likec4/models/containers/forgejo.c4
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
model {
|
||||||
|
|
||||||
|
extend edp {
|
||||||
|
container forgejo 'Forgejo' {
|
||||||
|
description '
|
||||||
|
Fully managed DevOps Platfrom
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
forgejoproject -> forgejoRunner 'executes pipelines'
|
||||||
|
}
|
||||||
|
|
||||||
|
component forgejoRunner 'Forgejo Actions' {
|
||||||
|
description 'Continuous Integration like Github Actions'
|
||||||
|
technology 'Golang'
|
||||||
|
icon tech:go
|
||||||
|
style {
|
||||||
|
multiple true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
component imageregistry 'Forgejo OCI Image Registry' {
|
||||||
|
description 'Container Image Registry'
|
||||||
|
technology 'Golang'
|
||||||
|
icon tech:go
|
||||||
|
}
|
||||||
|
|
||||||
|
component forgejogit 'ForgejoGit' {
|
||||||
|
icon tech:git
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
9
likec4/models/containers/grafana.c4
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
model {
|
||||||
|
|
||||||
|
extend edp {
|
||||||
|
container grafana 'Grafana' {
|
||||||
|
description 'Data visualization and monitoring'
|
||||||
|
icon tech:grafana
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
25
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
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
likec4/models/containers/kyverno.c4
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
model {
|
||||||
|
|
||||||
|
extend edp {
|
||||||
|
container kyverno 'Kyverno' {
|
||||||
|
#internal
|
||||||
|
description 'Policy-as-Code'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
13
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
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
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'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
17
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'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
14
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
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
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
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
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'
|
||||||
|
}
|
||||||
|
}
|
9
likec4/models/context/edfoundry.c4
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
model {
|
||||||
|
edf = system 'EDF' {
|
||||||
|
description 'EDP Foundry, the EDP builder'
|
||||||
|
technology 'Kubernetes'
|
||||||
|
icon tech:kubernetes
|
||||||
|
-> edp 'builds many'
|
||||||
|
platformdeveloper -> edf "develops EDP and EDF"
|
||||||
|
}
|
||||||
|
}
|
31
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
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
101
likec4/models/deployment/deployment.c4
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
// Deployment model
|
||||||
|
deployment {
|
||||||
|
|
||||||
|
environment local 'Local' {
|
||||||
|
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 edp.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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
views {
|
||||||
|
deployment view index {
|
||||||
|
title 'Local Deployment'
|
||||||
|
|
||||||
|
include
|
||||||
|
*,
|
||||||
|
local.**,
|
||||||
|
monitoring.*,
|
||||||
|
openbao.*,
|
||||||
|
externalSecrets.*,
|
||||||
|
crossplane.*,
|
||||||
|
spark.*,
|
||||||
|
argocd.*
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
31
likec4/models/spec.c4
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
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 node
|
||||||
|
deploymentNode environment
|
||||||
|
deploymentNode namespace
|
||||||
|
|
||||||
|
tag internal
|
||||||
|
}
|
35
likec4/views/application-transition.c4
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
41
likec4/views/developer-landscape-with-foundry.c4
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
33
likec4/views/developer-landscape.c4
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
44
likec4/views/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
likec4/views/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
likec4/views/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 ->
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
26
likec4/views/gitops-inner-outer-loop.c4
Normal 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 -> edp.forgejoRunner 'on push'
|
||||||
|
|
||||||
|
edp.forgejoRunner -> edp.imageregistry 'pushes new image'
|
||||||
|
edp.forgejoRunner -> edp.forgejogit 'pushes new appspec'
|
||||||
|
|
||||||
|
edp.forgejogit -> edp.argoCD 'triggers deployment'
|
||||||
|
edp.argoCD -> cloud 'deploys application'
|
||||||
|
cloud -> edp.imageregistry 'pulls image'
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|