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:
- Workspace Secrets:
artifacts/secrets/kubeconfig.yml(empfohlen für verschlüsselte Workspaces) - Workspace-Konfiguration: In
workspace.polydefinierter Pfad (kubeconfig.filename) - Workspace-Root:
kubeconfig.ymlim Workspace-Verzeichnis - Block-Artifacts:
artifacts/blocks/k8s/kubeconfig.yml(Legacy) - 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¶
In der workspace.poly kann ein Block die Kubeconfig von einem anderen Block erben:
# workspace.poly
name: my-workspace
blocks:
# Der k8s-Block generiert die Kubeconfig
- name: k8s
from: registry.my-org.com/blocks/k8s/cluster:1.0.0
config:
# ...
# Der my-app Block erbt die Kubeconfig vom k8s-Block
- name: my-app
from: registry.my-org.com/blocks/k8s/my-app:1.0.0
kubeconfig:
from: k8s # Erbt Kubeconfig von Block "k8s"
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.
Konfiguration in workspace.poly
Die kubeconfig.from Konfiguration wird immer in der workspace.poly bei der Block-Instanz definiert, nicht in der block.poly des Blocks selbst.
Empfohlene Struktur¶
Für verschlüsselte Workspaces empfehlen wir:
my-workspace/
├── workspace.poly # kubeconfig.from wird hier pro Block-Instanz definiert
├── artifacts/
│ └── secrets/
│ └── kubeconfig.yml # Wird verschlüsselt als kubeconfig.yml.age
└── blocks/
└── my-app/
└── block.poly # Block-Definition (keine kubeconfig.from hier)
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¶
Was passiert?¶
- ServiceAccount erstellen: Ein ServiceAccount
polycrate-adminwird im Ziel-Namespace erstellt (falls nicht vorhanden) - ClusterRoleBinding: Der ServiceAccount erhält
cluster-adminRechte - Pod starten: Ein Pod mit dem Polycrate-Image wird gestartet
- Attach: Polycrate verbindet sich automatisch mit der Shell im Pod
- 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 CLIhelm- Helm Package Manager (+ helm-diff Plugin)kustomize- Kubernetes Konfigurationcilium- Cilium CNI CLIargocd- Argo CD CLIvelero- Kubernetes Backup Tooldocker- Docker CLIskopeo- Container Image Management
Backup & Encryption:
restic- Backup Toolkopia- Backup Toolage- Moderne Verschlüsselung
Utilities:
ansible- Configuration Managementgit,curl,wget,rsyncjq,yq- JSON/YAML Processingpsql,mysql- Datenbank-Clientsdig,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:
Siehe auch¶
- CLI-Referenz - Vollständige Command-Referenz
- Der Polycrate Container - Verfügbare Tools im Container