Files
terraform-rancher-clusters/README.md
T
2025-07-17 01:15:20 +02:00

6.9 KiB

Kubernetes Cluster Management mit Terraform

Dieses Modul erstellt und verwaltet Kubernetes Cluster auf Harvester mit den folgenden Features:

  • Cilium CNI (von Rancher)
  • Aktiviertes KubeProxyReplacement
  • Gateway API Support

Voraussetzungen

Folgende Tools werden benötigt:

  • Terraform v1.5.0 oder höher
  • Infisical CLI (für Secrets Management)
  • kubectl (optional)

Vor der ersten Verwendung muss eine kubeconfig-Datei erstellt werden:

./scripts/create_kubeconfig.sh <cluster-name> <umgebung>

Cluster Management mit Workspaces

Das Modul verwendet Terraform Workspaces für die Verwaltung verschiedener Cluster-Umgebungen. Jeder Workspace hat seinen eigenen State und spezifische Konfigurationen.

1. Workspace Verwaltung

Verfügbare Workspace-Befehle:

# Workspace erstellen
terraform workspace new [dev|test|prod]

# Workspace auswählen
terraform workspace select [dev|test|prod]

# Alle Workspaces anzeigen
terraform workspace list

# Aktuellen Workspace anzeigen
terraform workspace show

2. Cluster Deployment

Cluster erstellen oder aktualisieren:

# Workspace auswählen
terraform workspace select [dev|test|prod]

# Konfiguration prüfen
terraform plan -var-file="cluster-configs/${terraform.workspace}.tfvars"

# Cluster erstellen/aktualisieren
terraform apply -var-file="cluster-configs/${terraform.workspace}.tfvars"

3. Cluster Entfernen

Zum Löschen eines Clusters:

# Workspace auswählen
terraform workspace select [dev|test|prod]

# Cluster löschen
terraform destroy -var-file="cluster-configs/${terraform.workspace}.tfvars"

4. State Management

Jeder Workspace verwaltet seinen eigenen State in einem separaten Verzeichnis:

terraform.tfstate.d/
├── dev/
│   └── terraform.tfstate
├── test/
│   └── terraform.tfstate
└── prod/
    └── terraform.tfstate

Cluster Konfigurationen

Die Cluster werden je nach Workspace unterschiedlich konfiguriert:

Workspace Beschreibung Nodes
dev Entwicklungsumgebung 1 All-in-One Node (4 CPU, 16GB RAM)
test Testumgebung 1 Control-Plane (2 CPU, 4GB RAM) + 1 Worker (4 CPU, 8GB RAM)
prod Produktionsumgebung 3 Control-Plane (2 CPU, 4GB RAM) + 2 Worker (4 CPU, 8GB RAM)

Nach dem Deployment

Nach erfolgreicher Cluster-Erstellung:

  1. Kubeconfig generieren:

    ./scripts/create_kubeconfig.sh ${terraform.workspace}
    

    Die Kubeconfig wird als hnrx-${terraform.workspace}-kubeconfig gespeichert.

  2. Gateway API CRDs installieren:

    # Kubeconfig verwenden
    export KUBECONFIG=hnrx-${terraform.workspace}-kubeconfig
    
    # Gateway API CRDs installieren
    kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/standard-install.yaml
    

Terraform Module Description

Requirements

Name Version
terraform >= 1.0.0
infisical 0.15.21
rancher2 7.3.2

Providers

No providers.

Modules

Name Source Version
rancher_cluster git::https://git.hnrx.net/terraform-modules/rancher-cluster.git main

Resources

No resources.

Inputs

Name Description Type Default Required
cluster_kubernetes_version Kubernetes Version für die Cluster string "v1.32.5+rke2r1" no
cluster_vm_image Image für die VMs string "default/image-62xch" no
cluster_vm_network Netzwerk für die VMs string "default/vmnetwork" no
harvester_cluster_name Name des Harvester Clusters string "c-g8zlv" no
infisical_api_url Infisical API URL string "https://app.infisical.com" no
infisical_client_id Infisical Client ID für die Authentifizierung string n/a yes
infisical_client_secret Infisical Client Secret für die Authentifizierung string n/a yes
infisical_environment Infisical Umgebung (z.B. dev, test, prod) string "dev" no
infisical_project_id Infisical Projekt ID string n/a yes
rancher2_api_url Rancher API URL string n/a yes
rancher2_insecure SSL-Verifizierung für Rancher API überspringen bool false no

Outputs

Name Description
cluster Details des Clusters