# svtechnmaa/charts architecture

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

- Interactive diagram: https://gitdiagram.com/svtechnmaa/charts
- Repository: https://github.com/svtechnmaa/charts

## Overview

SVTECH_Public_Helmchart is a catalog of Helm subcharts used as building blocks in SVTECH stack solutions and published through ArtifactHub. The principal workflow is for a stack operator to select a chart, deploy it with Helm to Kubernetes, and use the resulting service. The repository spans application, data, and infrastructure charts; the README names Grafana, Icinga2, and Rundeck and stack examples such as ELK and TACGUI. The Icinga2 election script shows Lease-based leader promotion and reload behavior; wiring among other charts is not established by the sampled source.

Main entry points: [`kubernetes/icinga2/files/scripts/election.py`](https://github.com/svtechnmaa/charts/blob/main/kubernetes/icinga2/files/scripts/election.py) (Leader election), [`kubernetes/icinga2`](https://github.com/svtechnmaa/charts/tree/main/kubernetes/icinga2) (Icinga2), [`artifacthub`](https://github.com/svtechnmaa/charts/tree/main/artifacthub) (Chart packages), [`kubernetes`](https://github.com/svtechnmaa/charts/tree/main/kubernetes) (Helm chart catalog)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_catalog["Chart catalog"]
  node_charts["Helm chart catalog"]
  node_packages["Chart packages"]
end

subgraph group_apps["Applications"]
  node_grafana["Grafana"]
  node_rundeck["Rundeck"]
  node_tacgui["TACGUI"]
  node_netforge["NetForge services"]
  node_airflow["Airflow"]
  node_mage["Mage AI"]
end

subgraph group_platform["Data platform"]
  node_elasticsearch["Elasticsearch"]
  node_kafka["Kafka"]
  node_clickhouse["ClickHouse"]
  node_postgresql[("PostgreSQL HA")]
end

subgraph group_operations["Operations"]
  node_icinga["Icinga2"]
  node_election["Leader election<br/>[election.py]"]
  node_syslog["Juniper syslog API"]
  node_topology["Topology tools"]
end

node_operator(("Stack operator"))
node_helm["Helm deployment"]
node_cluster["Kubernetes cluster"]
node_artifacthub_service["ArtifactHub"]
node_lease[("Kubernetes Lease")]
node_icinga_api["Local Icinga API"]
node_syncthing["Syncthing"]

node_operator -->|"selects and deploys"| node_helm
node_helm -->|"uses charts"| node_charts
node_helm -->|"installs resources"| node_cluster
node_operator -.->|"discovers charts"| node_artifacthub_service
node_packages -.->|"published to"| node_artifacthub_service
node_cluster -->|"runs"| node_grafana
node_cluster -->|"runs"| node_rundeck
node_cluster -->|"runs"| node_tacgui
node_cluster -->|"runs"| node_netforge
node_cluster -->|"runs"| node_icinga
node_cluster -->|"runs"| node_syslog
node_cluster -->|"runs"| node_topology
node_cluster -->|"runs"| node_airflow
node_cluster -->|"runs"| node_mage
node_cluster -->|"runs"| node_elasticsearch
node_cluster -->|"runs"| node_kafka
node_cluster -->|"runs"| node_clickhouse
node_cluster -->|"runs"| node_postgresql
node_icinga -->|"runs election client"| node_election
node_election -->|"reads and updates"| node_lease
node_election -->|"checks populated config"| node_syncthing
node_election -->|"requests reload"| node_icinga_api

click node_charts "https://github.com/svtechnmaa/charts/tree/main/kubernetes"
click node_packages "https://github.com/svtechnmaa/charts/tree/main/artifacthub"
click node_grafana "https://github.com/svtechnmaa/charts/tree/main/kubernetes/grafana"
click node_rundeck "https://github.com/svtechnmaa/charts/tree/main/kubernetes/rundeck"
click node_tacgui "https://github.com/svtechnmaa/charts/tree/main/kubernetes/tacgui"
click node_netforge "https://github.com/svtechnmaa/charts/tree/main/kubernetes/netforge-be"
click node_icinga "https://github.com/svtechnmaa/charts/tree/main/kubernetes/icinga2"
click node_election "https://github.com/svtechnmaa/charts/blob/main/kubernetes/icinga2/files/scripts/election.py"
click node_syslog "https://github.com/svtechnmaa/charts/tree/main/kubernetes/juniper-syslog-api"
click node_topology "https://github.com/svtechnmaa/charts/tree/main/kubernetes/topology-app"
click node_airflow "https://github.com/svtechnmaa/charts/tree/main/kubernetes/airflow"
click node_mage "https://github.com/svtechnmaa/charts/tree/main/kubernetes/mage-ai"
click node_elasticsearch "https://github.com/svtechnmaa/charts/tree/main/kubernetes/elasticsearch"
click node_kafka "https://github.com/svtechnmaa/charts/tree/main/kubernetes/kafka"
click node_clickhouse "https://github.com/svtechnmaa/charts/tree/main/kubernetes/clickhouse"
click node_postgresql "https://github.com/svtechnmaa/charts/tree/main/kubernetes/postgresql-ha"

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_charts,node_packages toneBlue
class node_grafana,node_rundeck,node_tacgui,node_netforge,node_airflow,node_mage,node_lease toneAmber
class node_elasticsearch,node_kafka,node_clickhouse,node_postgresql,node_icinga_api toneMint
class node_icinga,node_election,node_syslog,node_topology toneRose
class node_operator,node_helm,node_cluster,node_artifacthub_service,node_syncthing toneIndigo
```

## Components

### Chart catalog

- [Helm chart catalog](https://github.com/svtechnmaa/charts/tree/main/kubernetes): `kubernetes`
- [Chart packages](https://github.com/svtechnmaa/charts/tree/main/artifacthub): `artifacthub`

### Applications

- [Grafana](https://github.com/svtechnmaa/charts/tree/main/kubernetes/grafana): `kubernetes/grafana`
- [Rundeck](https://github.com/svtechnmaa/charts/tree/main/kubernetes/rundeck): `kubernetes/rundeck`
- [TACGUI](https://github.com/svtechnmaa/charts/tree/main/kubernetes/tacgui): `kubernetes/tacgui`
- [NetForge services](https://github.com/svtechnmaa/charts/tree/main/kubernetes/netforge-be): `kubernetes/netforge-be`
- [Airflow](https://github.com/svtechnmaa/charts/tree/main/kubernetes/airflow): `kubernetes/airflow`
- [Mage AI](https://github.com/svtechnmaa/charts/tree/main/kubernetes/mage-ai): `kubernetes/mage-ai`

### Data platform

- [Elasticsearch](https://github.com/svtechnmaa/charts/tree/main/kubernetes/elasticsearch): `kubernetes/elasticsearch`
- [Kafka](https://github.com/svtechnmaa/charts/tree/main/kubernetes/kafka): `kubernetes/kafka`
- [ClickHouse](https://github.com/svtechnmaa/charts/tree/main/kubernetes/clickhouse): `kubernetes/clickhouse`
- [PostgreSQL HA](https://github.com/svtechnmaa/charts/tree/main/kubernetes/postgresql-ha): `kubernetes/postgresql-ha`

### Operations

- [Icinga2](https://github.com/svtechnmaa/charts/tree/main/kubernetes/icinga2): `kubernetes/icinga2`
- [Leader election](https://github.com/svtechnmaa/charts/blob/main/kubernetes/icinga2/files/scripts/election.py): `kubernetes/icinga2/files/scripts/election.py`
- [Juniper syslog API](https://github.com/svtechnmaa/charts/tree/main/kubernetes/juniper-syslog-api): `kubernetes/juniper-syslog-api`
- [Topology tools](https://github.com/svtechnmaa/charts/tree/main/kubernetes/topology-app): `kubernetes/topology-app`

### Other components

- **Stack operator**
- **Helm deployment**
- **Kubernetes cluster**
- **ArtifactHub**
- **Kubernetes Lease**
- **Local Icinga API**
- **Syncthing**

## Connections

- Stack operator → Helm deployment: selects and deploys
- Helm deployment → Helm chart catalog: uses charts
- Helm deployment → Kubernetes cluster: installs resources
- Stack operator → ArtifactHub: discovers charts
- Chart packages → ArtifactHub: published to
- Kubernetes cluster → Grafana: runs
- Kubernetes cluster → Rundeck: runs
- Kubernetes cluster → TACGUI: runs
- Kubernetes cluster → NetForge services: runs
- Kubernetes cluster → Icinga2: runs
- Kubernetes cluster → Juniper syslog API: runs
- Kubernetes cluster → Topology tools: runs
- Kubernetes cluster → Airflow: runs
- Kubernetes cluster → Mage AI: runs
- Kubernetes cluster → Elasticsearch: runs
- Kubernetes cluster → Kafka: runs
- Kubernetes cluster → ClickHouse: runs
- Kubernetes cluster → PostgreSQL HA: runs
- Icinga2 → Leader election: runs election client
- Leader election → Kubernetes Lease: reads and updates
- Leader election → Syncthing: checks populated config
- Leader election → Local Icinga API: requests reload
