Add Argo CD — GitOps controller for legion app deployments

This commit is contained in:
Will Anderson
2026-03-23 07:52:07 -05:00
parent 7f022d3a67
commit 13e71fd491
+84
View File
@@ -0,0 +1,84 @@
# Argo CD — GitOps controller watching will/infrastructure on Gitea
# App manifests live in: servers/legion/apps/
resource "kubernetes_namespace" "argocd" {
metadata {
name = "argocd"
labels = {
managed-by = "terraform"
tier = "infrastructure"
}
}
}
resource "helm_release" "argocd" {
name = "argocd"
namespace = kubernetes_namespace.argocd.metadata[0].name
repository = "https://argoproj.github.io/argo-helm"
chart = "argo-cd"
version = "7.8.0"
values = [<<-YAML
global:
domain: argocd.${var.domain_suffix}
server:
ingress:
enabled: true
ingressClassName: traefik
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
cert-manager.io/cluster-issuer: letsencrypt-prod
tls: true
configs:
params:
server.insecure: true # TLS terminated at Traefik
repositories:
gitea-infrastructure:
url: http://10.43.1.53:3000/will/infrastructure.git
name: infrastructure
type: git
YAML
]
depends_on = [kubernetes_namespace.argocd, helm_release.cert_manager]
}
resource "kubernetes_ingress_v1" "argocd" {
metadata {
name = "argocd"
namespace = kubernetes_namespace.argocd.metadata[0].name
annotations = {
"traefik.ingress.kubernetes.io/router.entrypoints" = "websecure"
"cert-manager.io/cluster-issuer" = "letsencrypt-prod"
}
}
spec {
tls {
hosts = ["argocd.${var.domain_suffix}"]
secret_name = "argocd-tls"
}
rule {
host = "argocd.${var.domain_suffix}"
http {
path {
path = "/"
path_type = "Prefix"
backend {
service {
name = "argocd-server"
port {
number = 80
}
}
}
}
}
}
}
depends_on = [helm_release.argocd, helm_release.cert_manager]
}