Zum Inhalt

Kubernetes

Polycrate bietet native Kubernetes-Integration für die Verwaltung von Clustern und das Debugging.

Kubeconfig

Polycrate ist in Kubernetes integriert und kann sich über eine Kubeconfig-Datei mit einem Cluster verbinden.

Kubeconfig-Suchpfade

Polycrate sucht nach einer Kubeconfig in folgender Reihenfolge:

  1. Workspace Secrets: artifacts/secrets/kubeconfig.yml (empfohlen für verschlüsselte Workspaces)
  2. Workspace-Konfiguration: In workspace.poly definierter Pfad (kubeconfig.filename)
  3. Workspace-Root: kubeconfig.yml im Workspace-Verzeichnis
  4. Block-Artifacts: artifacts/blocks/k8s/kubeconfig.yml (Legacy)
  5. Globale Kubeconfig: ~/.kube/config (Fallback)

Kubeconfig in workspace.poly

Die Kubeconfig kann in der workspace.poly konfiguriert werden:

# workspace.poly
name: my-workspace

kubeconfig:
  filename: kubeconfig.yml  # Pfad relativ zum Workspace

Kubeconfig von anderem Block erben (block.poly)

In der block.poly kann ein Block die Kubeconfig von einem anderen Block erben:

# blocks/my-app/block.poly
name: my-app
version: 1.0.0

# Kubeconfig von k8s-Block erben
kubeconfig:
  from: k8s

actions:
  - name: deploy
    playbook: deploy.yml

Dies fügt automatisch eine Umgebungsvariable (KUBECONFIG=pfad/zur/kubeconfig/von/k8s) zum Container hinzu, sodass kubectl, helm und andere Tools die richtige Kubeconfig verwenden.

Empfohlene Struktur

Für verschlüsselte Workspaces empfehlen wir:

my-workspace/
├── workspace.poly
├── artifacts/
│   └── secrets/
│       └── kubeconfig.yml      # Wird verschlüsselt als kubeconfig.yml.age
└── blocks/
    └── my-app/
        └── block.poly          # kubeconfig: from: ... (optional)

Verschlüsselung

Speichern Sie die Kubeconfig in artifacts/secrets/ und verschlüsseln Sie den Workspace mit polycrate workspace encrypt. Siehe Workspace-Verschlüsselung.

Debug-Pod

Mit polycrate k8s debug können Sie einen temporären Debug-Pod im Cluster starten, um direkt im Cluster-Kontext zu arbeiten.

Verwendung

polycrate k8s debug

Was passiert?

  1. ServiceAccount erstellen: Ein ServiceAccount polycrate-admin wird im Ziel-Namespace erstellt (falls nicht vorhanden)
  2. ClusterRoleBinding: Der ServiceAccount erhält cluster-admin Rechte
  3. Pod starten: Ein Pod mit dem Polycrate-Image wird gestartet
  4. Attach: Polycrate verbindet sich automatisch mit der Shell im Pod
  5. Cleanup: Nach Beenden der Session wird der Pod automatisch gelöscht

Optionen

Flag Standard Beschreibung
-n, --namespace kube-system Namespace für den Debug-Pod

Beispiele

# Debug-Pod im Standard-Namespace (kube-system)
polycrate k8s debug

# Debug-Pod in einem anderen Namespace
polycrate k8s debug -n default

# Mit explizitem Workspace-Pfad
polycrate k8s debug -w /path/to/workspace

Beispiel-Session

$ polycrate k8s debug
INFO Starting debug pod polycrate-debug-1701234567 in namespace kube-system
INFO Creating service account polycrate-admin in namespace kube-system
INFO Creating cluster role binding polycrate-admin-cluster-admin
INFO Pod created, waiting for it to be ready...
INFO Pod is running, attaching...

# Jetzt im Pod:
bash-5.1# kubectl get nodes
NAME           STATUS   ROLES           AGE   VERSION
master-1       Ready    control-plane   30d   v1.28.2
worker-1       Ready    <none>          30d   v1.28.2
worker-2       Ready    <none>          30d   v1.28.2

bash-5.1# helm list -A
NAME            NAMESPACE       REVISION    STATUS      CHART
ingress-nginx   ingress         1           deployed    ingress-nginx-4.8.0
cert-manager    cert-manager    1           deployed    cert-manager-1.13.0

bash-5.1# exit

INFO Debug session ended
INFO Cleaning up debug pod polycrate-debug-1701234567...
INFO Debug pod deleted

Use Cases

Szenario Beschreibung
Cluster-Debugging Direkt im Cluster mit allen Polycrate-Tools arbeiten
Netzwerk-Tests Service-Konnektivität innerhalb des Clusters testen
Helm-Operationen Helm-Charts installieren, upgraden oder debuggen
Log-Analyse Pod-Logs und Events analysieren
Secret-Inspection Secrets und ConfigMaps einsehen

Im Pod verfügbare Tools

Der Debug-Pod enthält alle Tools aus dem Polycrate-Image:

Kubernetes & Container: - kubectl - Kubernetes CLI - helm - Helm Package Manager (+ helm-diff Plugin) - kustomize - Kubernetes Konfiguration - cilium - Cilium CNI CLI - argocd - Argo CD CLI - velero - Kubernetes Backup Tool - docker - Docker CLI - skopeo - Container Image Management

Backup & Encryption: - restic - Backup Tool - kopia - Backup Tool - age - Moderne Verschlüsselung

Utilities: - ansible - Configuration Management - git, curl, wget, rsync - jq, yq - JSON/YAML Processing - psql, mysql - Datenbank-Clients - dig, nslookup, telnet - Netzwerk-Tools

Siehe Der Polycrate Container für die vollständige Tool-Liste.

Sicherheitshinweis

Der Debug-Pod hat cluster-admin Rechte. Verwenden Sie diesen Befehl nur in vertrauenswürdigen Umgebungen und löschen Sie den ServiceAccount nach dem Debugging falls nötig:

kubectl delete serviceaccount polycrate-admin -n kube-system
kubectl delete clusterrolebinding polycrate-admin-cluster-admin

Siehe auch