Files
homelab/terraform/argocd-bootstrap.tf
T
Story Crater Bot 074b43e1f2 Temp: disable kubernetes_manifest cert-manager resources (already live)
- Will import separately after helm issues resolved
- Avoids re-create conflicts during bootstrap apply
2026-07-14 13:26:26 -07:00

144 lines
2.9 KiB
Terraform

resource "kubernetes_namespace" "argocd" {
metadata {
name = "argocd"
labels = {
"pod-security.kubernetes.io/enforce" = "baseline"
"pod-security.kubernetes.io/enforce-version" = "latest"
}
}
}
resource "helm_release" "argocd" {
name = "argocd"
repository = local.helm_repos["argo"]
chart = "argo-cd"
version = "7.3.3"
namespace = kubernetes_namespace.argocd.metadata[0].name
values = [
yamlencode({
global = {
domain = "argocd.${var.cluster_domain}"
}
configs = {
params = {
"application.instanceLabelKey" = "argocd.argoproj.io/instance"
}
rbac = {
"policy.default" = "role:readonly"
}
}
server = {
extraArgs = [
"--insecure"
]
ingress = {
enabled = true
hosts = [
"argocd.${var.cluster_domain}"
]
}
}
repoServer = {
autoscaling = {
enabled = true
minReplicas = 2
}
}
controller = {
replicas = 2
}
})
]
depends_on = [
kubernetes_namespace.argocd,
kubernetes_manifest.wildcard_cert
]
lifecycle {
ignore_changes = [
values
]
}
}
resource "kubernetes_manifest" "argocd_project" {
manifest = {
apiVersion = "argoproj.io/v1alpha1"
kind = "AppProject"
metadata = {
name = "homelab"
namespace = kubernetes_namespace.argocd.metadata[0].name
}
spec = {
sourceRepos = [
"https://forgejo.forge.riotpiao.homelab.com/rock/*"
]
destinations = [
{
server = "https://kubernetes.default.svc"
namespace = "*"
}
]
clusterResourceWhitelist = [
{
group = "*"
kind = "*"
}
]
}
}
field_manager {
name = "terraform"
}
depends_on = [
helm_release.argocd
]
}
resource "kubernetes_manifest" "argocd_root_app" {
manifest = {
apiVersion = "argoproj.io/v1alpha1"
kind = "Application"
metadata = {
name = "homelab-root"
namespace = kubernetes_namespace.argocd.metadata[0].name
}
spec = {
project = kubernetes_manifest.argocd_project.manifest.metadata.name
source = {
repoURL = "https://forgejo.riotpiao.homelab.com/riotpiao.com/homelab.git"
targetRevision = "main"
path = "k8s/argocd/apps"
directory = {
recurse = true
}
}
destination = {
server = "https://kubernetes.default.svc"
namespace = kubernetes_namespace.argocd.metadata[0].name
}
syncPolicy = {
automated = {
prune = true
selfHeal = true
}
syncOptions = [
"CreateNamespace=true"
]
}
}
}
field_manager {
name = "terraform"
}
depends_on = [
kubernetes_manifest.argocd_project
]
}