Hierarchy Controller installieren

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.

Hinweise

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 und kubectl 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 Policy Controller, Config Sync und Config Controller für die Installation von Hierarchy Controller zu konfigurieren.

gcloud

Führen Sie die folgenden Schritte aus, um Policy Controller, Config Sync und Config Controller für die Installation von Hierarchy Controller einschließlich aller optionalen Komponenten zu konfigurieren. Wenn Sie die hierarchische Beobachtbarkeit oder hierarchische Ressourcenkontingente nicht aktivieren möchten, kommentieren Sie die angegebenen Zeilen aus.

  1. (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
    

    Ersetzen Sie Folgendes:

    • CONTROL_PLANE_CIDR: Der IP-Bereich für die Steuerungsebene Ihres GKE-Cluster. Beispiel: 172.16.0.16/28.
    • NODE_TAG: Ein Tag, das auf alle Knoten in Ihrem GKE-Cluster angewendet wird.
  2. Legen Sie in der gcloud-Konfigurationsdatei im Objekt spec.hierarchyController für die folgenden Werte true 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...
    
  3. Wenden Sie die Datei apply-spec.yaml an:

     gcloud beta container fleet config-management apply \
         --membership=CLUSTER_NAME \
         --config=CONFIG_YAML \
         --project=PROJECT_ID
    

    Ersetzen Sie Folgendes:

    • 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 Policy Controller, Config Sync und Config Controller für die Installation von Hierarchy Controller einschließlich aller optionalen Komponenten zu konfigurieren. Wenn Sie die hierarchische Beobachtbarkeit oder hierarchische Ressourcenkontingente nicht aktivieren möchten, kommentieren Sie die angegebenen Zeilen aus.

  1. (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
    

    Ersetzen Sie Folgendes:

    • CONTROL_PLANE_CIDR: Der IP-Bereich für die Steuerungsebene Ihres GKE-Cluster. Beispiel: 172.16.0.16/28.
    • NODE_TAG: Ein Tag, das auf alle Knoten in Ihrem GKE-Cluster angewendet wird.
  2. Setzen Sie in der Konfigurationsdatei für den Operator im Objekt spec.hierarchyController den enabled-Wert auf true:

    # 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 hierarhical quota:
        enableHierarchicalResourceQuota: true
        # Comment to disable hierarchical observability:
        enablePodTreeLabels: true
       # ...other fields...
    
  3. 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 dazu diesen 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

Der Hierarchy Controller wird jedes Mal aktualisiert, wenn Sie ein Upgrade von Policy Controller, Config Sync und Config Controller durchführen. Weitere Informationen finden Sie unter Policy Controller, Config Sync und Config Controller upgraden.

Hierarchy Controller deinstallieren

Führen Sie die folgenden Schritte aus, um Hierarchy Controller aus Ihren Clustern zu deinstallieren.

gcloud

So deinstallieren Sie Hierarchy Controller:

  1. Bearbeiten Sie die Konfiguration von Hierarchy Controller in der Datei apply-spec.yaml und setzen Sie hierarchyController.enabled auf false.

  2. 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
    

    Ersetzen Sie Folgendes:

    • 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 den Hierarchy Controller deinstallieren möchten, bearbeiten Sie die Konfiguration von Policy Controller, Config Sync und Config Controller in der Datei config-management.yaml und setzen Sie hierarchyController.enabled auf false. Nachdem Policy Controller, Config Sync und Config Controller den hierarchycontroller.configmanagement.gke.io-Finalizer entfernt haben, ist die Deinstallation abgeschlossen.

Wenn Sie Policy Controller, Config Sync und Config Controller vollständig deinstallieren möchten, finden Sie weitere Informationen unter Policy Controller, Config Sync und Config Controller aus einem Cluster deinstallieren.

Nächste Schritte