Skip to content

Infrastructure Components Reference

This page maps the infrastructure folders to their roles in the cluster.

flowchart TB
  subgraph Git["Git repo folders"]
    Boot["bootstrap/"]
    Infra["infrastructure/"]
    Apps["apps/"]
  end

  subgraph Argo["ArgoCD"]
    AppSetInfra["ApplicationSet infra"]
    AppSetApps["ApplicationSet apps"]
    InfraApps["infra-* apps"]
    UserApps["app-* apps"]
  end

  subgraph Cluster["Cluster namespaces"]
    Tailscale["tailscale"]
    Envoy["envoy-gateway"]
    Cert["cert-manager"]
    ExtDNS["external-dns"]
    ExtSecrets["external-secrets"]
    Vault["vault"]
    Longhorn["longhorn-system"]
    Monitoring["monitoring"]
  end

  Boot --> AppSetInfra
  Boot --> AppSetApps
  Infra --> InfraApps
  Apps --> UserApps
  AppSetInfra --> InfraApps
  AppSetApps --> UserApps
  InfraApps --> Tailscale
  InfraApps --> Envoy
  InfraApps --> Cert
  InfraApps --> ExtDNS
  InfraApps --> ExtSecrets
  InfraApps --> Vault
  InfraApps --> Longhorn
  InfraApps --> Monitoring

ApplicationSets watch apps/ and infrastructure/ and create ArgoCD Applications automatically.

  • bootstrap/templates/infra-appset.yaml
  • bootstrap/templates/apps-appset.yaml
ComponentPathPurposeNotes
ArgoCDbootstrap/argocd/GitOps controller installApply once before bootstrap
ArgoCD Image Updaterinfrastructure/argocd-image-updater/Automated image updatesUses ImageUpdater CRD and Vault creds
Ciliuminfrastructure/cilium/CNI and kube-proxy replacementInstall once manually, ArgoCD manages after bootstrap; creates cilium-secrets namespace
Gateway API CRDsinfrastructure/gateway-api-crds/gateway-api-crds.yamlInstalls Gateway API CRDsArgoCD pulls upstream config/crd
Envoy Gateway CRDsinfrastructure/envoy-gateway-crds/Installs Envoy Gateway CRDsKustomize pulls upstream CRD bundle
Envoy Gatewayinfrastructure/envoy-gateway/envoy-gateway.yamlIngress controller for Gateway APIHelm chart with pinned image tag
Tailscale Operatorinfrastructure/tailscale/tailscale-operator.yamlTailnet integration and LoadBalancer proxy podsRequires operator-oauth Secret
cert-managerinfrastructure/cert-manager/cert-manager.yamlTLS certificate managementUsed with DNS-01
ClusterIssuerinfrastructure/cert-manager-issuer/cluster-issuer.yamlACME issuer for wildcard certsUpdate email and Cloudflare token
ExternalDNSinfrastructure/external-dns/external-dns.yamlCreates DNS records for HTTPRoutesWatches external-dns.alpha.kubernetes.io/expose=true
CoreDNS overrideinfrastructure/coredns/configmap.yamlRewrites *.sudhanva.me to gateway-internalSplit-horizon DNS for in-cluster access
Tailscale DNSinfrastructure/tailscale-dns/Split-horizon DNS for tailnet clientsCoreDNS exposed via Tailscale LoadBalancer
External Secrets CRDsinfrastructure/external-secrets-crds/Installs External Secrets CRDsKustomize pulls upstream CRD bundle
External Secrets Operatorinfrastructure/external-secrets/external-secrets.yamlSyncs secrets from VaultClusterSecretStore and ExternalSecret manifests live in infrastructure/external-secrets/
Gatewayinfrastructure/gateway/GatewayClass, Gateway, EnvoyProxy, cert, internal-serviceUses Tailscale gatewayClassName
Longhornbootstrap/templates/longhorn.yamlStorage via LonghornHelm chart in ArgoCD
Vaultinfrastructure/vault/vault.yamlCentral secrets storagePVC on Longhorn
Hubble UIinfrastructure/hubble-ui/httproute.yamlExposes Hubble UI over TailscaleHTTPRoute to hubble-ui service in kube-system
Prometheus Operator CRDsinfrastructure/prometheus-operator-crds/Prometheus CRDsInstalled before the monitoring stack
Prometheus stackinfrastructure/prometheus/Metrics, alerting, dashboardsGrafana, Prometheus, Alertmanager, and HTTPRoutes
Kubescapeinfrastructure/kubescape/Cluster security scanningOperator runs in offline mode
ntfyinfrastructure/ntfy/Push notification serviceTailscale HTTPRoute with persistent cache
ntfy alertsinfrastructure/ntfy-alerts/Alertmanager webhook adapter and alert rulesRoutes alert rules into ntfy
Metrics Serverinfrastructure/metrics-server/CPU and memory metrics APIRequired for Headlamp usage graphs
GPU pluginsinfrastructure/gpu/Intel and NVIDIA device pluginsOptional, based on node hardware

Gateway resources are split by purpose:

  • infrastructure/gateway/gatewayclass.yaml
  • infrastructure/gateway/gateway.yaml
  • infrastructure/gateway/envoyproxy.yaml
  • infrastructure/gateway/certificate.yaml
  • infrastructure/gateway/internal-service.yaml
  • infrastructure/gateway/argocd-httproute.yaml
  • infrastructure/gateway/longhorn-httproute.yaml
  • infrastructure/gateway/vault-httproute.yaml
  • infrastructure/hubble-ui/httproute.yaml
  • infrastructure/prometheus/httproute-grafana.yaml
  • infrastructure/prometheus/httproute-prometheus.yaml
  • infrastructure/prometheus/httproute-alertmanager.yaml

HTTPRoutes for apps live alongside each app under apps/*/httproute.yaml.