Mit Hierarchy Controller können Sie Kubernetes-Namespaces in Hierarchien organisieren, Richtlinien auf sie anwenden (z. B. RBAC und hierarchische Ressourcenkontingente) und Arbeitslasten von verwandten Namespaces verarbeiten.
Auf dieser Seite erfahren Sie, wie Sie den Hierarchy Controller installieren, konfigurieren und deinstallieren.
Hinweis
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
Installieren und initialisieren Sie das Google Cloud CLI, das die in dieser Anleitung verwendeten Befehle
gcloud
undkubectl
enthält. Wenn Sie Cloud Shell verwenden, ist Google Cloud CLI vorinstalliert.Sie benötigen einen Cluster mit der Kubernetes-Version 1.16.x oder höher.
Hierarchy Controller ist eng auf Config Sync abgestimmt, sodass Sie Ihre hierarchischen Namespaces und Richtlinien über ein Git-Repository verwalten können. Wenn Sie sich dafür entscheiden, empfehlen wir Ihnen, bei der Installation von Config Sync ein unstrukturiertes Repository auszuwählen, mit dem Sie Ihr Repository in der von Ihnen gewünschten Weise organisieren und gleichzeitig von den Vorteilen hierarchischer Richtlinien profitieren. Ein hierarchisches Repository kann dagegen in Konflikt mit Hierarchy Controller stehen; sie sollten daher nicht zusammen verwendet werden.
Alternativ können Sie Hierarchy Controller installieren, ohne ein Config Sync-Repository zu konfigurieren. Hierarchische Namespaces können über die Kubernetes API vollständig im Cluster definiert werden. Wenn Sie Git nicht verwenden möchten, müssen Sie dem Operator keinen Zugriff auf Git gewähren und ihn nicht auf andere Weise konfigurieren als im folgenden Abschnitt beschrieben.
Hierarchy Controller aktivieren
Führen Sie die folgenden Schritte aus, um Config Sync für die Installation von Hierarchy Controller zu konfigurieren.
gcloud
Führen Sie die folgenden Schritte aus, um Config Sync so zu konfigurieren, dass der Hierarchie-Controller installiert wird, einschließlich aller optionalen Komponenten. Wenn Sie die hierarchische Beobachtbarkeit oder hierarchische Ressourcenkontingente nicht aktivieren möchten, kommentieren Sie die angegebenen Zeilen aus.
(Optional) Wenn Sie private Cluster verwenden, fügen Sie den Projekten jedes Clusters Firewallregeln hinzu, um den GKE-Cluster-Steuerungsebenen zu ermöglichen, eine Verbindung zu den Hierarchy Controller-Webhooks an Port
9443
herzustellen:gcloud compute firewall-rules create allow-cluster-control-plane-tcp-9443 \ --allow tcp:9443 \ --network default \ --source-ranges CONTROL_PLANE_CIDR \ --target-tags NODE_TAG
Dabei gilt:
CONTROL_PLANE_CIDR
: Der IP-Bereich für die GKE-Cluster-Steuerungsebene, z. B.172.16.0.16/28
.NODE_TAG
: Ein Tag, das auf alle Knoten in Ihrem GKE-Cluster angewendet wird.
Legen Sie in der gcloud-Konfigurationsdatei im Objekt
spec.hierarchyController
für die folgenden Wertetrue
fest:# apply-spec.yaml applySpecVersion: 1 spec: hierarchyController: # Set to true to enable hierarchical namespaces enabled: true # Comment to disable hierarchical quota: enableHierarchicalResourceQuota: true # Comment to disable hierarchical observability: enablePodTreeLabels: true # ...other fields...
Wenden Sie die Datei
apply-spec.yaml
an:gcloud beta container fleet config-management apply \ --membership=CLUSTER_NAME \ --config=CONFIG_YAML \ --project=PROJECT_ID
Dabei gilt:
- CLUSTER_NAME: Fügen Sie den registrierten Cluster hinzu, auf den Sie diese Konfiguration anwenden möchten.
- CONFIG_YAML: Fügen Sie den Pfad zur Datei
apply-spec.yaml
hinzu. - PROJECT_ID: Fügen Sie Ihre Projekt-ID hinzu.
Da mehrere Arbeitslasten bereitgestellt werden, kann der Hierarchy Controller in Ihrem Cluster verwendet werden. Dies kann bis zu einer Minute dauern.
kubectl
Führen Sie die folgenden Schritte aus, um Config Sync so zu konfigurieren, dass der Hierarchie-Controller installiert wird, einschließlich aller optionalen Komponenten. Wenn Sie die hierarchische Beobachtbarkeit oder hierarchische Ressourcenkontingente nicht aktivieren möchten, kommentieren Sie die angegebenen Zeilen aus.
(Optional) Wenn Sie private Cluster verwenden, fügen Sie den Projekten jedes Clusters Firewallregeln hinzu, um den GKE-Cluster-Steuerungsebenen zu ermöglichen, eine Verbindung zu den Hierarchy Controller-Webhooks an Port
9443
herzustellen:gcloud compute firewall-rules create allow-cluster-control-plane-tcp-9443 \ --allow tcp:9443 \ --network default \ --source-ranges CONTROL_PLANE_CIDR \ --target-tags NODE_TAG
Dabei gilt:
CONTROL_PLANE_CIDR
: Der IP-Bereich für die GKE-Cluster-Steuerungsebene, z. B.172.16.0.16/28
.NODE_TAG
: Ein Tag, das auf alle Knoten in Ihrem GKE-Cluster angewendet wird.
Setzen Sie in der Konfigurationsdatei für den Operator im Objekt
spec.hierarchyController
denenabled
-Wert auftrue
:# config-management.yaml apiVersion: configmanagement.gke.io/v1 kind: ConfigManagement metadata: name: config-management spec: # Set to true to enable hierarchical namespaces hierarchyController: enabled: true # Comment to disable hierarchical quota: enableHierarchicalResourceQuota: true # Comment to disable hierarchical observability: enablePodTreeLabels: true # ...other fields...
Wenden Sie die Konfiguration an:
kubectl apply -f config-management.yaml
Da mehrere Arbeitslasten bereitgestellt werden, kann der Hierarchy Controller in Ihrem Cluster verwendet werden. Dies kann bis zu einer Minute dauern.
kubectl
-Plug-in installieren
Mit Hierarchy Controller können Sie nur über Kubernetes-Clienttools wie kubectl
interagieren. Das Open-Source-kubectl-hns
kubectl-Plug-in vereinfacht einige Aufgaben jedoch erheblich. Dieses Plug-in gehört zum Hierarchical Namespace Controller (HNC), einer Komponente des Hierarchy Controllers.
Dieses Plug-in wird von der OSS-Community verteilt und ist derzeit für Linux und macOS verfügbar. Informationen zur Installation auf Ihrer Workstation finden Sie in der Config Sync-Dokumentation unter Plug-in kubectl
installieren.
Installation überprüfen
Nachdem Sie Hierarchy Controller installiert haben, können Sie prüfen, ob die Installation erfolgreich abgeschlossen wurde.
gcloud
Führen Sie den folgenden Befehl aus:
gcloud beta container fleet config-management status \
--project=PROJECT_ID
Ersetzen Sie PROJECT_ID
durch die ID Ihres Projekts.
Die Ausgabe sollte in etwa wie im folgenden Beispiel aussehen:
Name ...other columns... Hierarchy_Controller
CLUSTER_NAME ...other fields ... INSTALLED
Eine erfolgreiche Installation hat den Status INSTALLED
in der Spalte Hierarchy_Controller
. Nach der Aktivierung des Hierarchy Controllers kann es einige Minuten dauern, bis der Status angezeigt wird.
kubectl
Wenn Hierarchy Controller korrekt installiert ist, werden die Pods ausgeführt. Die Pods können mehrmals neu gestartet werden, bevor sie verfügbar sind.
Da die Hierarchy Controller-Pods im Namespace hnc-system
ausgeführt werden, können Sie ihren Status mit folgendem Befehl aufrufen:
kubectl get pods -n hnc-system
Die Ausgabe sollte in etwa wie im folgenden Beispiel aussehen:
NAME READY STATUS RESTARTS AGE gke-hc-controller-manager-6f4dbb484d-t8tdm 2/2 Running 1 1m hnc-controller-manager-7b75655894-tzqvx 2/2 Running 1 1m
Upgraden des Hierarchie-Controller
Hierarchy Controller wird beim Upgrade von Config Sync aktualisiert. Weitere Informationen finden Sie unter Config Sync aktualisieren.
Hierarchy Controller deinstallieren
Führen Sie die folgenden Schritte aus, um Hierarchy Controller aus Ihren Clustern zu deinstallieren.
gcloud
So deinstallieren Sie Hierarchy Controller:
Bearbeiten Sie die Konfiguration von Hierarchy Controller in der Datei
apply-spec.yaml
und setzen SiehierarchyController.enabled
auffalse
.Wenden Sie die Änderungen in der Datei
apply-spec.yaml
an:gcloud beta container fleet config-management apply \ --membership=CLUSTER_NAME \ --config=CONFIG_YAML \ --project=PROJECT_ID
Dabei gilt:
- CLUSTER_NAME: Fügen Sie den registrierten Cluster hinzu, auf den Sie diese Konfiguration anwenden möchten.
- CONFIG_YAML: Fügen Sie den Pfad zur Datei
apply-spec.yaml
hinzu. - PROJECT_ID: Fügen Sie Ihre Projekt-ID hinzu.
Nachdem Hierarchy Controller den hierarchycontroller.configmanagement.gke.io
-Finalizer entfernt hat, ist die Deinstallation abgeschlossen.
kubectl
Wenn Sie Hierarchy Controller deinstallieren möchten, bearbeiten Sie die Config Sync-Konfiguration in der Datei config-management.yaml
und setzen Sie hierarchyController.enabled
auf false
. Nachdem Config Sync den hierarchycontroller.configmanagement.gke.io
-Finalizer entfernt hat, ist die Deinstallation abgeschlossen.
Wenn Sie Config Sync vollständig deinstallieren möchten, finden Sie unter Config Sync aus einem Cluster deinstallieren weitere Informationen.
Nächste Schritte
- Weitere Informationen zu Hierarchy Controller
- Hierarchische Ressourcenkontingente anwenden
- Hierarchische Arbeitslasten beobachten
- Grundlegende Features hierarchischer Namespaces kennenlernen
- Erweiterte Features hierarchischer Namespaces kennenlernen