|
Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar. |
Kubeconfigs
Kubeconfig-Ressource
Kubeconfig ist eine Rancher-Ressource kubeconfigs.ext.cattle.io, die es ermöglicht, v1.Config Kubeconfig-Dateien zu generieren, um mit Rancher und von Rancher verwalteten Clustern zu interagieren.
kubectl api-resources --api-group=ext.cattle.io
Um eine Beschreibung der Felder und der Struktur der Kubeconfig-Ressource zu erhalten, führen Sie Folgendes aus:
kubectl explain kubeconfigs.ext.cattle.io
Erstellen eines Kubeconfigs
Seit Rancher v2.13 enthält das status.bearerToken ein vollständig ausgeformtes und einsatzbereites Bearer-Token, das zur Authentifizierung bei der Rancher API verwendet werden kann.
Nur ein gültiger und aktiver Rancher-Benutzer kann ein Kubeconfig erstellen. Wenn Sie beispielsweise versuchen, ein Kubeconfig mit einem system:admin Dienstkonto zu erstellen, führt dies zu einem Fehler:
kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Kubeconfig
EOF
Error from server (Forbidden): error when creating "STDIN": kubeconfigs.ext.cattle.io is forbidden: user system:admin is not a Rancher user
|
Der Inhalt des Kubeconfigs wird generiert und im |
Ein Kubeconfig kann für mehr als einen Cluster gleichzeitig erstellt werden, indem eine Liste von Clusternamen im spec.clusters Feld angegeben wird. Sie können Clusternamen abrufen, indem Sie clusters.management.cattle.io Ressourcen auflisten.
kubectl get clusters.management.cattle.io -o=jsonpath="{.items[*]['metadata.name', 'spec.displayName']}{'\n'}"
local local
c-m-p66cdvlj downstream1
Die Felder metadata.name und metadata.generateName werden ignoriert, und der Name des neuen Kubeconfigs wird automatisch mit dem Präfix kubeconfig- generiert.
Sie können das spec.currentContext Feld verwenden, um den Clusternamen festzulegen, und es wird verwendet, um den aktuellen Kontext im Kubeconfig festzulegen. Wenn Sie das spec.currentContext Feld nicht festlegen, wird der erste Cluster in der spec.clusters Liste als aktueller Kontext verwendet. Für ACE-aktivierte Cluster, die keinen FQDN festgelegt haben, wird der erste Steuerungsknoten als aktueller Kontext verwendet.
Für ACE-aktivierte Cluster, wenn der FQDN festgelegt ist, wird dieser als Cluster-Eintrag im Kubeconfig verwendet; andernfalls werden Einträge für alle Steuerungsknoten erstellt.
kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Kubeconfig
spec:
clusters: [c-m-p66cdvlj, c-m-fcd3g5h]
description: My Kubeconfig
currentContext: c-m-p66cdvlj
EOF
Wenn "*" als erstes Element im spec.clusters Feld angegeben ist, wird das Kubeconfig für alle Cluster erstellt, auf die der Benutzer Zugriff hat, falls vorhanden.
kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Kubeconfig
spec:
clusters: ["*"]
description: My Kubeconfig
EOF
Wenn spec.ttl nicht angegeben ist, werden die Tokens des Kubeconfigs mit der im kubeconfig-default-token-ttl-minutes Einstellung definierten Ablaufzeit erstellt, die standardmäßig 30 Tage beträgt. Wenn spec.ttl angegeben ist, sollte es größer als 0 und kleiner oder gleich dem Wert der kubeconfig-default-token-ttl-minutes Einstellung, ausgedrückt in Sekunden, sein.
kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Kubeconfig
spec:
clusters: [c-m-p66cdvlj] # Downstream cluster
ttl: 7200 # 2 hours
EOF
Auflisten von Kubeconfigs
Das Auflisten zuvor generierter Kubeconfigs kann nützlich sein, um Backing-Token zu bereinigen, wenn der Kubeconfig nicht mehr benötigt wird (z. B. wenn er vorübergehend ausgestellt wurde). Administratoren können alle Kubeconfigs auflisten, während reguläre Benutzer nur ihre eigenen einsehen können.
kubectl get kubeconfig
NAME TTL TOKENS STATUS AGE
kubeconfig-zp786 30d 2/2 Complete 18d
kubeconfig-7zvzp 30d 1/1 Complete 12d
kubeconfig-jznml 30d 1/1 Complete 12d
Verwenden Sie -o wide, um weitere Details zu erhalten:
kubectl get kubeconfig -o wide
NAME TTL TOKENS STATUS AGE USER CLUSTERS DESCRIPTION
kubeconfig-zp786 30d 2/2 Complete 18d user-w5gcf * all clusters
kubeconfig-7zvzp 30d 1/1 Complete 12d u-w7drc *
kubeconfig-jznml 30d 1/1 Complete 12d u-w7drc *
Anzeigen eines Kubeconfigs
Administratoren können jeden Kubeconfig abrufen, während reguläre Benutzer nur ihren eigenen abrufen können.
kubectl get kubeconfig kubeconfig-zp786
NAME TTL TOKENS STATUS AGE
kubeconfig-zp786 30d 2/2 Complete 18d
Verwenden Sie -o wide, um weitere Details zu erhalten:
kubectl get kubeconfig kubeconfig-zp786 -o wide
NAME TTL TOKENS STATUS AGE USER CLUSTERS DESCRIPTION
kubeconfig-zp786 30d 2/2 Complete 18d user-w5gcf * all clusters
Löschen eines Kubeconfigs
Administratoren können jeden Kubeconfig löschen, während reguläre Benutzer nur ihren eigenen löschen können. Wenn ein Kubeconfig gelöscht wird, werden auch die Kubeconfig-Token gelöscht.
kubectl delete kubeconfig kubeconfig-zp786
kubeconfig.ext.cattle.io "kubeconfig-zp786" deleted
Um einen Kubeconfig unter Verwendung von Vorbedingungen zu löschen:
cat <<EOF | k delete --raw /apis/ext.cattle.io/v1/kubeconfigs/kubeconfig-zp786 -f -
{
"apiVersion": "v1",
"kind": "DeleteOptions",
"preconditions": {
"uid": "52183e05-d382-47d2-b4b9-d0735823ce90",
"resourceVersion": "31331505"
}
}
EOF
Löschen einer Sammlung von Kubeconfigs
Administratoren können jeden Kubeconfig löschen, während reguläre Benutzer nur ihren eigenen löschen können.
Um alle Kubeconfigs zu löschen:
kubectl delete --raw /apis/ext.cattle.io/v1/kubeconfigs
Um eine Sammlung von Kubeconfigs nach Label zu löschen:
kubectl delete --raw /apis/ext.cattle.io/v1/kubeconfigs?labelSelector=foo%3Dbar
Aktualisieren eines Kubeconfigs
Nur das metadata-Feld, z. B. das Hinzufügen eines Labels oder einer Annotation, und das spec.description-Feld können aktualisiert werden. Alle anderen spec-Felder sind unveränderlich.
Um einen Kubeconfig zu bearbeiten:
kubectl edit kubeconfig kubeconfig-zp786
Um einen Kubeconfig zu patchen und seine Beschreibung zu aktualisieren:
kubectl patch kubeconfig kubeconfig-zp786 -type merge -p '{"spec":{"description":"Updated description"}}'
kubeconfig.ext.cattle.io/kubeconfig-zp786 patched
kubectl get kubeconfig kubeconfig-fdcpl -o jsonpath='{.spec.description}'
Updated description
Um einen Kubeconfig zu patchen und ein Label hinzuzufügen:
kubectl patch kubeconfig kubeconfig-zp786 -type merge -p '{"metadata":{"labels":{"foo":"bar"}}}'
kubeconfig.ext.cattle.io/kubeconfig-zp786 patched
kubectl get kubeconfig kubeconfig-zp786 -o jsonpath='{.metadata.labels.foo}'
bar