# 2ralxix/my_lab architecture

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

- Interactive diagram: https://gitdiagram.com/2ralxix/my_lab
- Repository: https://github.com/2ralxix/my_lab

## Overview

This repository is a Kubernetes GitOps configuration for deploying a collection of self-hosted services and cluster infrastructure. Its apparent workflow is that an Argo CD ApplicationSet controller reads the top-level application-set definitions and applies the referenced application configurations to a Kubernetes cluster. The tree also describes ingress, persistent storage, secrets, monitoring, and supporting services. There is no README or sampled manifest content, so deployment links and service-to-service relationships are limited to what the file and directory names support.

Main entry points: [`applicationsets/apps.yaml`](https://github.com/2ralxix/my_lab/blob/main/applicationsets/apps.yaml) (App ApplicationSet), [`applicationsets/apps-charts.yaml`](https://github.com/2ralxix/my_lab/blob/main/applicationsets/apps-charts.yaml) (Chart ApplicationSet), [`apps/networking/ingress-nginx`](https://github.com/2ralxix/my_lab/tree/main/apps/networking/ingress-nginx) (ingress-nginx), [`apps/cloudnative-pg`](https://github.com/2ralxix/my_lab/tree/main/apps/cloudnative-pg) (CloudNative PG)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_gitops["GitOps configuration"]
  node_appsets_apps["App ApplicationSet<br/>[apps.yaml]"]
  node_appsets_charts["Chart ApplicationSet<br/>[apps-charts.yaml]"]
end

subgraph group_platform["Cluster platform"]
  node_cloudnative_pg["CloudNative PG"]
  node_cert_manager["cert-manager"]
  node_ingress_nginx["ingress-nginx"]
  node_sealed_secrets["Sealed Secrets"]
  node_valkey["Valkey"]
end

subgraph group_services["Hosted services"]
  node_gitea["Gitea"]
  node_gitea_runner["Gitea Runner"]
  node_wg_easy["WireGuard VPN"]
  node_registry["Docker Registry"]
  node_hello_app["Hello App"]
  node_n8n["n8n"]
end

subgraph group_operations["Operations and access"]
  node_monitoring["Prometheus and Grafana"]
  node_uptime_kuma["Uptime Kuma"]
end

node_argocd(("Argo CD"))
node_cluster{{"Kubernetes cluster"}}
node_users(("Service users"))

node_argocd -->|"reads definitions"| node_appsets_apps
node_argocd -->|"reads definitions"| node_appsets_charts
node_appsets_apps -->|"declares apps"| node_cloudnative_pg
node_appsets_apps -->|"declares apps"| node_gitea
node_appsets_apps -->|"declares apps"| node_gitea_runner
node_appsets_apps -->|"declares apps"| node_wg_easy
node_appsets_apps -->|"declares apps"| node_registry
node_appsets_apps -->|"declares apps"| node_hello_app
node_appsets_apps -->|"declares apps"| node_n8n
node_appsets_apps -->|"declares apps"| node_uptime_kuma
node_appsets_apps -->|"declares apps"| node_valkey
node_appsets_charts -->|"declares chart"| node_monitoring
node_appsets_charts -->|"declares chart"| node_cert_manager
node_appsets_charts -->|"declares chart"| node_ingress_nginx
node_appsets_charts -->|"declares chart"| node_sealed_secrets
node_argocd -->|"syncs resources"| node_cluster
node_users -.->|"accesses services"| node_ingress_nginx

click node_appsets_apps "https://github.com/2ralxix/my_lab/blob/main/applicationsets/apps.yaml"
click node_appsets_charts "https://github.com/2ralxix/my_lab/blob/main/applicationsets/apps-charts.yaml"
click node_cloudnative_pg "https://github.com/2ralxix/my_lab/tree/main/apps/cloudnative-pg"
click node_gitea "https://github.com/2ralxix/my_lab/tree/main/apps/gitea"
click node_gitea_runner "https://github.com/2ralxix/my_lab/tree/main/apps/gitea/gitea-runner"
click node_monitoring "https://github.com/2ralxix/my_lab/tree/main/apps/monitoring/kube-prometheus-stack"
click node_cert_manager "https://github.com/2ralxix/my_lab/tree/main/apps/networking/cert-manager"
click node_ingress_nginx "https://github.com/2ralxix/my_lab/tree/main/apps/networking/ingress-nginx"
click node_wg_easy "https://github.com/2ralxix/my_lab/tree/main/apps/networking/wg-easy"
click node_registry "https://github.com/2ralxix/my_lab/tree/main/apps/registry/docker-registry"
click node_sealed_secrets "https://github.com/2ralxix/my_lab/tree/main/apps/security/sealed-secrets"
click node_hello_app "https://github.com/2ralxix/my_lab/tree/main/apps/utilities/hello-app"
click node_n8n "https://github.com/2ralxix/my_lab/tree/main/apps/utilities/n8n"
click node_uptime_kuma "https://github.com/2ralxix/my_lab/tree/main/apps/utilities/uptime-kuma"
click node_valkey "https://github.com/2ralxix/my_lab/tree/main/apps/valkey"

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_appsets_apps,node_appsets_charts,node_users toneBlue
class node_cloudnative_pg,node_cert_manager,node_ingress_nginx,node_sealed_secrets,node_valkey toneAmber
class node_gitea,node_gitea_runner,node_wg_easy,node_registry,node_hello_app,node_n8n toneMint
class node_monitoring,node_uptime_kuma toneRose
class node_argocd,node_cluster toneIndigo
```

## Components

### GitOps configuration

- [App ApplicationSet](https://github.com/2ralxix/my_lab/blob/main/applicationsets/apps.yaml): `applicationsets/apps.yaml`
- [Chart ApplicationSet](https://github.com/2ralxix/my_lab/blob/main/applicationsets/apps-charts.yaml): `applicationsets/apps-charts.yaml`

### Cluster platform

- [CloudNative PG](https://github.com/2ralxix/my_lab/tree/main/apps/cloudnative-pg): `apps/cloudnative-pg`
- [cert-manager](https://github.com/2ralxix/my_lab/tree/main/apps/networking/cert-manager): `apps/networking/cert-manager`
- [ingress-nginx](https://github.com/2ralxix/my_lab/tree/main/apps/networking/ingress-nginx): `apps/networking/ingress-nginx`
- [Sealed Secrets](https://github.com/2ralxix/my_lab/tree/main/apps/security/sealed-secrets): `apps/security/sealed-secrets`
- [Valkey](https://github.com/2ralxix/my_lab/tree/main/apps/valkey): `apps/valkey`

### Hosted services

- [Gitea](https://github.com/2ralxix/my_lab/tree/main/apps/gitea): `apps/gitea`
- [Gitea Runner](https://github.com/2ralxix/my_lab/tree/main/apps/gitea/gitea-runner): `apps/gitea/gitea-runner`
- [WireGuard VPN](https://github.com/2ralxix/my_lab/tree/main/apps/networking/wg-easy): `apps/networking/wg-easy`
- [Docker Registry](https://github.com/2ralxix/my_lab/tree/main/apps/registry/docker-registry): `apps/registry/docker-registry`
- [Hello App](https://github.com/2ralxix/my_lab/tree/main/apps/utilities/hello-app): `apps/utilities/hello-app`
- [n8n](https://github.com/2ralxix/my_lab/tree/main/apps/utilities/n8n): `apps/utilities/n8n`

### Operations and access

- [Prometheus and Grafana](https://github.com/2ralxix/my_lab/tree/main/apps/monitoring/kube-prometheus-stack): `apps/monitoring/kube-prometheus-stack`
- [Uptime Kuma](https://github.com/2ralxix/my_lab/tree/main/apps/utilities/uptime-kuma): `apps/utilities/uptime-kuma`

### Other components

- **Argo CD**
- **Kubernetes cluster**
- **Service users**

## Connections

- Argo CD → App ApplicationSet: reads definitions
- Argo CD → Chart ApplicationSet: reads definitions
- App ApplicationSet → CloudNative PG: declares apps
- App ApplicationSet → Gitea: declares apps
- App ApplicationSet → Gitea Runner: declares apps
- App ApplicationSet → WireGuard VPN: declares apps
- App ApplicationSet → Docker Registry: declares apps
- App ApplicationSet → Hello App: declares apps
- App ApplicationSet → n8n: declares apps
- App ApplicationSet → Uptime Kuma: declares apps
- App ApplicationSet → Valkey: declares apps
- Chart ApplicationSet → Prometheus and Grafana: declares chart
- Chart ApplicationSet → cert-manager: declares chart
- Chart ApplicationSet → ingress-nginx: declares chart
- Chart ApplicationSet → Sealed Secrets: declares chart
- Argo CD → Kubernetes cluster: syncs resources
- Service users → ingress-nginx: accesses services
