# egovernments/digit-devops architecture

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

- Interactive diagram: https://gitdiagram.com/egovernments/digit-devops
- Repository: https://github.com/egovernments/digit-devops

## Overview

This repository provides DIGIT infrastructure provisioning and deployment tooling: operators configure an environment, select a product or image set, and deploy Helm-rendered services to Kubernetes. The main CLI also supports cluster configuration, while Terraform helper programs populate infrastructure and Helm environment inputs. The chart tree represents platform, business, frontend, health, and domain-service workloads; JupyterHub has a substantial runtime configuration subsystem. Relationships among unsampled chart families are omitted; chart deployment and infrastructure-file updates are shown only where sampled code supports them.

Main entry points: [`deploy-as-code/egov-deployer/pkg/cmd/deployer/deployer.go`](https://github.com/egovernments/digit-devops/blob/master/deploy-as-code/egov-deployer/pkg/cmd/deployer/deployer.go) (Chart deployment), [`deploy-as-code/egov-deployer/cmd/deploy.go`](https://github.com/egovernments/digit-devops/blob/master/deploy-as-code/egov-deployer/cmd/deploy.go) (Deploy command), [`infra-as-code/terraform/scripts/init.go`](https://github.com/egovernments/digit-devops/blob/master/infra-as-code/terraform/scripts/init.go) (Terraform initializer), [`deploy-as-code/egov-deployer/main.go`](https://github.com/egovernments/digit-devops/blob/master/deploy-as-code/egov-deployer/main.go) (CLI entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_deploy["Deployment CLI"]
  node_entry["CLI entry<br/>[main.go]"]
  node_root["Root command<br/>[root.go]"]
  node_deploycmd["Deploy command<br/>[deploy.go]"]
  node_options["Deploy options<br/>[options.go]"]
  node_engine["Chart deployment<br/>[deployer.go]"]
  node_wizard["Setup wizard<br/>[digit_setup.go]"]
end

subgraph group_charts["Helm Workloads"]
  node_cluster["Cluster configs"]
  node_backbone["Backbone services"]
  node_core["Core services"]
  node_business["Business services"]
  node_frontend["Frontend apps"]
  node_health["Health services"]
  node_works["DIGIT Works"]
  node_ifix["iFix services"]
  node_ispirit["iSpirit services"]
end

subgraph group_infra["Infrastructure Inputs"]
  node_init["Terraform initializer<br/>[init.go]"]
  node_envupdate["Environment updater<br/>[envYAMLUpdater.go]"]
  node_envfiles["Helm environment files"]
end

subgraph group_hub["JupyterHub Runtime"]
  node_jconfig["Hub configuration"]
  node_z2jh["Config utilities<br/>[z2jh.py]"]
end

node_operator(("Operator"))
node_kubernetes["Kubernetes cluster"]
node_terraform["Terraform provider files"]

node_operator -->|"runs CLI"| node_entry
node_entry -->|"executes"| node_root
node_root -->|"registers command"| node_deploycmd
node_deploycmd -->|"sets options"| node_options
node_deploycmd -->|"calls deploy"| node_engine
node_engine -->|"renders configs"| node_cluster
node_engine -.->|"renders charts"| node_backbone
node_engine -.->|"renders charts"| node_core
node_engine -.->|"renders charts"| node_business
node_engine -.->|"renders charts"| node_frontend
node_engine -.->|"renders charts"| node_health
node_engine -.->|"renders charts"| node_works
node_engine -.->|"renders charts"| node_ifix
node_engine -.->|"renders charts"| node_ispirit
node_engine -->|"applies manifests"| node_kubernetes
node_operator -->|"selects modules"| node_wizard
node_wizard -.->|"starts deployment"| node_engine
node_operator -->|"provides inputs"| node_init
node_init -->|"updates files"| node_terraform
node_init -->|"updates environment"| node_envfiles
node_terraform -->|"emits outputs"| node_envupdate
node_envupdate -->|"updates YAML"| node_envfiles
node_jconfig -->|"imports utilities"| node_z2jh

click node_entry "https://github.com/egovernments/digit-devops/blob/master/deploy-as-code/egov-deployer/main.go"
click node_root "https://github.com/egovernments/digit-devops/blob/master/deploy-as-code/egov-deployer/cmd/root.go"
click node_deploycmd "https://github.com/egovernments/digit-devops/blob/master/deploy-as-code/egov-deployer/cmd/deploy.go"
click node_options "https://github.com/egovernments/digit-devops/blob/master/deploy-as-code/egov-deployer/pkg/cmd/deployer/options.go"
click node_engine "https://github.com/egovernments/digit-devops/blob/master/deploy-as-code/egov-deployer/pkg/cmd/deployer/deployer.go"
click node_wizard "https://github.com/egovernments/digit-devops/blob/master/deploy-as-code/egov-deployer/digit_setup.go"
click node_cluster "https://github.com/egovernments/digit-devops/tree/master/deploy-as-code/helm/charts/cluster-configs"
click node_backbone "https://github.com/egovernments/digit-devops/tree/master/deploy-as-code/helm/charts/backbone-services"
click node_core "https://github.com/egovernments/digit-devops/tree/master/deploy-as-code/helm/charts/core-services"
click node_business "https://github.com/egovernments/digit-devops/tree/master/deploy-as-code/helm/charts/business-services"
click node_frontend "https://github.com/egovernments/digit-devops/tree/master/deploy-as-code/helm/charts/frontend"
click node_health "https://github.com/egovernments/digit-devops/tree/master/deploy-as-code/helm/charts/health-services"
click node_works "https://github.com/egovernments/digit-devops/tree/master/deploy-as-code/helm/charts/digit-works"
click node_ifix "https://github.com/egovernments/digit-devops/tree/master/deploy-as-code/helm/charts/ifix"
click node_ispirit "https://github.com/egovernments/digit-devops/tree/master/deploy-as-code/helm/charts/ispirit"
click node_init "https://github.com/egovernments/digit-devops/blob/master/infra-as-code/terraform/scripts/init.go"
click node_envupdate "https://github.com/egovernments/digit-devops/blob/master/infra-as-code/terraform/scripts/envYAMLUpdater.go"
click node_envfiles "https://github.com/egovernments/digit-devops/tree/master/deploy-as-code/helm"
click node_jconfig "https://github.com/egovernments/digit-devops/blob/master/deploy-as-code/helm/charts/backbone-services/jupyterhub/files/hub/jupyterhub_config.py"
click node_z2jh "https://github.com/egovernments/digit-devops/blob/master/deploy-as-code/helm/charts/backbone-services/jupyterhub/files/hub/z2jh.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_entry,node_root,node_deploycmd,node_options,node_engine,node_wizard toneBlue
class node_cluster,node_backbone,node_core,node_business,node_frontend,node_health,node_works,node_ifix,node_ispirit toneAmber
class node_init,node_envupdate,node_envfiles toneMint
class node_jconfig,node_z2jh toneRose
class node_operator,node_kubernetes,node_terraform toneIndigo
```

## Components

### Deployment CLI

- [CLI entry](https://github.com/egovernments/digit-devops/blob/master/deploy-as-code/egov-deployer/main.go): `deploy-as-code/egov-deployer/main.go`
- [Root command](https://github.com/egovernments/digit-devops/blob/master/deploy-as-code/egov-deployer/cmd/root.go): `deploy-as-code/egov-deployer/cmd/root.go`
- [Deploy command](https://github.com/egovernments/digit-devops/blob/master/deploy-as-code/egov-deployer/cmd/deploy.go): `deploy-as-code/egov-deployer/cmd/deploy.go`
- [Deploy options](https://github.com/egovernments/digit-devops/blob/master/deploy-as-code/egov-deployer/pkg/cmd/deployer/options.go): `deploy-as-code/egov-deployer/pkg/cmd/deployer/options.go`
- [Chart deployment](https://github.com/egovernments/digit-devops/blob/master/deploy-as-code/egov-deployer/pkg/cmd/deployer/deployer.go): `deploy-as-code/egov-deployer/pkg/cmd/deployer/deployer.go`
- [Setup wizard](https://github.com/egovernments/digit-devops/blob/master/deploy-as-code/egov-deployer/digit_setup.go): `deploy-as-code/egov-deployer/digit_setup.go`

### Helm Workloads

- [Cluster configs](https://github.com/egovernments/digit-devops/tree/master/deploy-as-code/helm/charts/cluster-configs): `deploy-as-code/helm/charts/cluster-configs`
- [Backbone services](https://github.com/egovernments/digit-devops/tree/master/deploy-as-code/helm/charts/backbone-services): `deploy-as-code/helm/charts/backbone-services`
- [Core services](https://github.com/egovernments/digit-devops/tree/master/deploy-as-code/helm/charts/core-services): `deploy-as-code/helm/charts/core-services`
- [Business services](https://github.com/egovernments/digit-devops/tree/master/deploy-as-code/helm/charts/business-services): `deploy-as-code/helm/charts/business-services`
- [Frontend apps](https://github.com/egovernments/digit-devops/tree/master/deploy-as-code/helm/charts/frontend): `deploy-as-code/helm/charts/frontend`
- [Health services](https://github.com/egovernments/digit-devops/tree/master/deploy-as-code/helm/charts/health-services): `deploy-as-code/helm/charts/health-services`
- [DIGIT Works](https://github.com/egovernments/digit-devops/tree/master/deploy-as-code/helm/charts/digit-works): `deploy-as-code/helm/charts/digit-works`
- [iFix services](https://github.com/egovernments/digit-devops/tree/master/deploy-as-code/helm/charts/ifix): `deploy-as-code/helm/charts/ifix`
- [iSpirit services](https://github.com/egovernments/digit-devops/tree/master/deploy-as-code/helm/charts/ispirit): `deploy-as-code/helm/charts/ispirit`

### Infrastructure Inputs

- [Terraform initializer](https://github.com/egovernments/digit-devops/blob/master/infra-as-code/terraform/scripts/init.go): `infra-as-code/terraform/scripts/init.go`
- [Environment updater](https://github.com/egovernments/digit-devops/blob/master/infra-as-code/terraform/scripts/envYAMLUpdater.go): `infra-as-code/terraform/scripts/envYAMLUpdater.go`
- [Helm environment files](https://github.com/egovernments/digit-devops/tree/master/deploy-as-code/helm): `deploy-as-code/helm`

### JupyterHub Runtime

- [Hub configuration](https://github.com/egovernments/digit-devops/blob/master/deploy-as-code/helm/charts/backbone-services/jupyterhub/files/hub/jupyterhub_config.py): `deploy-as-code/helm/charts/backbone-services/jupyterhub/files/hub/jupyterhub_config.py`
- [Config utilities](https://github.com/egovernments/digit-devops/blob/master/deploy-as-code/helm/charts/backbone-services/jupyterhub/files/hub/z2jh.py): `deploy-as-code/helm/charts/backbone-services/jupyterhub/files/hub/z2jh.py`

### Other components

- **Operator**
- **Kubernetes cluster**
- **Terraform provider files**

## Connections

- Operator → CLI entry: runs CLI (evidence: `deploy-as-code/egov-deployer/main.go`)
- CLI entry → Root command: executes (evidence: `deploy-as-code/egov-deployer/main.go`)
- Root command → Deploy command: registers command (evidence: `deploy-as-code/egov-deployer/cmd/deploy.go`)
- Deploy command → Deploy options: sets options (evidence: `deploy-as-code/egov-deployer/cmd/deploy.go`)
- Deploy command → Chart deployment: calls deploy (evidence: `deploy-as-code/egov-deployer/cmd/deploy.go`)
- Chart deployment → Cluster configs: renders configs (evidence: `deploy-as-code/egov-deployer/pkg/cmd/deployer/deployer.go`)
- Chart deployment → Backbone services: renders charts
- Chart deployment → Core services: renders charts
- Chart deployment → Business services: renders charts
- Chart deployment → Frontend apps: renders charts
- Chart deployment → Health services: renders charts
- Chart deployment → DIGIT Works: renders charts
- Chart deployment → iFix services: renders charts
- Chart deployment → iSpirit services: renders charts
- Chart deployment → Kubernetes cluster: applies manifests (evidence: `deploy-as-code/egov-deployer/pkg/cmd/deployer/deployer.go`)
- Operator → Setup wizard: selects modules (evidence: `deploy-as-code/egov-deployer/digit_setup.go`)
- Setup wizard → Chart deployment: starts deployment
- Operator → Terraform initializer: provides inputs (evidence: `infra-as-code/terraform/scripts/init.go`)
- Terraform initializer → Terraform provider files: updates files (evidence: `infra-as-code/terraform/scripts/init.go`)
- Terraform initializer → Helm environment files: updates environment (evidence: `infra-as-code/terraform/scripts/init.go`)
- Terraform provider files → Environment updater: emits outputs (evidence: `infra-as-code/terraform/scripts/envYAMLUpdater.go`)
- Environment updater → Helm environment files: updates YAML (evidence: `infra-as-code/terraform/scripts/envYAMLUpdater.go`)
- Hub configuration → Config utilities: imports utilities (evidence: `deploy-as-code/helm/charts/backbone-services/jupyterhub/files/hub/jupyterhub_config.py`)
