# balachmir-cp-2077/cloud-native-devops-platform architecture

> Architecture diagram of the GitHub repository balachmir-cp-2077/cloud-native-devops-platform, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/balachmir-cp-2077/cloud-native-devops-platform
- Repository: https://github.com/balachmir-cp-2077/cloud-native-devops-platform

## Overview

This repository delivers a Flask service through a documented CI, image-publishing, and GitOps workflow. A developer change triggers GitHub Actions to test, build, scan, and publish an immutable image to ECR, then update the Helm image tag. Argo CD watches that desired state and synchronizes it to Kubernetes, where the service is exposed through ingress. Helm also defines configuration, secrets, probes, and scaling. Terraform provisions AWS registry resources. Workflow and deployment links follow the README; application behavior is grounded in the sampled Flask source, while unsampled deployment wiring is represented only where documented.

Main entry points: [`.github/workflows/ci.yml`](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/.github/workflows/ci.yml) (CI Workflow), [`kubernetes/cluster/kind-config.yaml`](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/kubernetes/cluster/kind-config.yaml) (kind Cluster), [`argocd/application.yaml`](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/argocd/application.yaml) (Argo CD), [`app/src/app.py`](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/app/src/app.py) (Flask Application)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application"]
  node_flask["Flask Application<br/>[app.py]"]
end

subgraph group_ci["CI and Publishing"]
  node_workflow["CI Workflow<br/>[ci.yml]"]
  node_tests["Python Tests"]
  node_container["Image Build"]
  node_trivy["Vulnerability Scan<br/>[ci.yml]"]
  node_oidc["AWS OIDC Auth<br/>[ci.yml]"]
  node_tag_update["Helm Tag Update<br/>[ci.yml]"]
end

subgraph group_gitops["GitOps Deployment"]
  node_chart["Helm Chart"]
  node_argocd["Argo CD<br/>[application.yaml]"]
  node_cluster["kind Cluster<br/>[kind-config.yaml]"]
  node_deployment["App Deployment<br/>[deployment.yaml]"]
  node_service["Kubernetes Service<br/>[service.yaml]"]
  node_ingress["NGINX Ingress<br/>[ingress.yaml]"]
  node_config["App Configuration<br/>[configmap.yaml]"]
  node_secrets["App Secrets<br/>[secret.yaml]"]
end

subgraph group_aws["AWS Infrastructure"]
  node_ecr[("Amazon ECR")]
  node_iam["AWS IAM"]
  node_terraform["ECR Provisioning"]
end

node_developer(("Developer"))
node_repo["GitHub Repository"]
node_user(("HTTP Client"))

node_developer -->|"pushes changes"| node_repo
node_repo -->|"triggers"| node_workflow
node_workflow -->|"runs tests"| node_tests
node_workflow -->|"builds image"| node_container
node_workflow -->|"scans image"| node_trivy
node_workflow -->|"authenticates via"| node_oidc
node_oidc -->|"assumes role"| node_iam
node_workflow -->|"publishes image"| node_ecr
node_terraform -->|"provisions registry"| node_ecr
node_workflow -->|"updates tag"| node_tag_update
node_tag_update -->|"commits change"| node_repo
node_argocd -->|"watches chart"| node_repo
node_argocd -->|"synchronizes desired state"| node_cluster
node_cluster -->|"runs workload"| node_deployment
node_cluster -->|"creates service"| node_service
node_cluster -->|"applies configuration"| node_config
node_cluster -->|"applies secrets"| node_secrets
node_deployment -->|"pulls image"| node_ecr
node_ingress -->|"routes requests"| node_flask
node_user -->|"sends HTTP request"| node_ingress
node_flask -->|"returns JSON"| node_user

click node_workflow "https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/.github/workflows/ci.yml"
click node_tests "https://github.com/balachmir-cp-2077/cloud-native-devops-platform/tree/master/app/tests"
click node_container "https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/app/Dockerfile"
click node_trivy "https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/.github/workflows/ci.yml"
click node_oidc "https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/.github/workflows/ci.yml"
click node_iam "https://github.com/balachmir-cp-2077/cloud-native-devops-platform/tree/master/infrastructure/aws/iam"
click node_terraform "https://github.com/balachmir-cp-2077/cloud-native-devops-platform/tree/master/infrastructure/modules/ecr"
click node_tag_update "https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/.github/workflows/ci.yml"
click node_chart "https://github.com/balachmir-cp-2077/cloud-native-devops-platform/tree/master/helm/cloud-native-app"
click node_argocd "https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/argocd/application.yaml"
click node_cluster "https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/kubernetes/cluster/kind-config.yaml"
click node_deployment "https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/helm/cloud-native-app/templates/deployment.yaml"
click node_service "https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/helm/cloud-native-app/templates/service.yaml"
click node_ingress "https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/helm/cloud-native-app/templates/ingress.yaml"
click node_config "https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/helm/cloud-native-app/templates/configmap.yaml"
click node_secrets "https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/helm/cloud-native-app/templates/secret.yaml"
click node_flask "https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/app/src/app.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_flask,node_user toneBlue
class node_workflow,node_tests,node_container,node_trivy,node_oidc,node_tag_update toneAmber
class node_chart,node_argocd,node_cluster,node_deployment,node_service,node_ingress,node_config,node_secrets toneMint
class node_ecr,node_iam,node_terraform toneRose
class node_developer,node_repo toneIndigo
```

## Components

### Application

- [Flask Application](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/app/src/app.py): `app/src/app.py`

### CI and Publishing

- [CI Workflow](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/.github/workflows/ci.yml): `.github/workflows/ci.yml`
- [Python Tests](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/tree/master/app/tests): `app/tests`
- [Image Build](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/app/Dockerfile): `app/Dockerfile`
- [Vulnerability Scan](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/.github/workflows/ci.yml): `.github/workflows/ci.yml`
- [AWS OIDC Auth](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/.github/workflows/ci.yml): `.github/workflows/ci.yml`
- [Helm Tag Update](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/.github/workflows/ci.yml): `.github/workflows/ci.yml`

### GitOps Deployment

- [Helm Chart](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/tree/master/helm/cloud-native-app): `helm/cloud-native-app`
- [Argo CD](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/argocd/application.yaml): `argocd/application.yaml`
- [kind Cluster](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/kubernetes/cluster/kind-config.yaml): `kubernetes/cluster/kind-config.yaml`
- [App Deployment](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/helm/cloud-native-app/templates/deployment.yaml): `helm/cloud-native-app/templates/deployment.yaml`
- [Kubernetes Service](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/helm/cloud-native-app/templates/service.yaml): `helm/cloud-native-app/templates/service.yaml`
- [NGINX Ingress](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/helm/cloud-native-app/templates/ingress.yaml): `helm/cloud-native-app/templates/ingress.yaml`
- [App Configuration](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/helm/cloud-native-app/templates/configmap.yaml): `helm/cloud-native-app/templates/configmap.yaml`
- [App Secrets](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/blob/master/helm/cloud-native-app/templates/secret.yaml): `helm/cloud-native-app/templates/secret.yaml`

### AWS Infrastructure

- **Amazon ECR**
- [AWS IAM](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/tree/master/infrastructure/aws/iam): `infrastructure/aws/iam`
- [ECR Provisioning](https://github.com/balachmir-cp-2077/cloud-native-devops-platform/tree/master/infrastructure/modules/ecr): `infrastructure/modules/ecr`

### Other components

- **Developer**
- **GitHub Repository**
- **HTTP Client**

## Connections

- Developer → GitHub Repository: pushes changes
- GitHub Repository → CI Workflow: triggers
- CI Workflow → Python Tests: runs tests
- CI Workflow → Image Build: builds image
- CI Workflow → Vulnerability Scan: scans image
- CI Workflow → AWS OIDC Auth: authenticates via
- AWS OIDC Auth → AWS IAM: assumes role
- CI Workflow → Amazon ECR: publishes image
- ECR Provisioning → Amazon ECR: provisions registry
- CI Workflow → Helm Tag Update: updates tag
- Helm Tag Update → GitHub Repository: commits change
- Argo CD → GitHub Repository: watches chart
- Argo CD → kind Cluster: synchronizes desired state
- kind Cluster → App Deployment: runs workload
- kind Cluster → Kubernetes Service: creates service
- kind Cluster → App Configuration: applies configuration
- kind Cluster → App Secrets: applies secrets
- App Deployment → Amazon ECR: pulls image
- NGINX Ingress → Flask Application: routes requests
- HTTP Client → NGINX Ingress: sends HTTP request
- Flask Application → HTTP Client: returns JSON
