Hierarchy Controller installieren

In diesem Dokument wird beschrieben, wie Sie den Hierarchy Controller installieren und deinstallieren. Der Hierarchy Controller erweitert reguläre Kubernetes-Namespaces, um hierarchische Richtlinien und deren Erstellung zu ermöglichen, ohne das Config Sync-Repository ändern zu müssen.

Hinweis

Sie benötigen einen Cluster mit Google Kubernetes Engine (GKE) Version 1.15.x oder höher, auf dem der Config Sync Operator bereits installiert ist. Für den Hierarchy Controller ist es nicht erforderlich, dass Sie dem Operator Zugriff auf Git gewähren oder den Operator anderweitig konfigurieren. Ausnahmen finden Sie im folgenden Abschnitt.

Hierarchy Controller aktivieren

So konfigurieren Sie Config Sync, um Hierarchy Controller im Cluster zu aktivieren:

  1. 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
    
        # ...other fields...
    
  2. 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 den folgenden Abschnitten.

Erforderliche Plug-in-Version ermitteln

Jede Version von Config Sync entspricht einer Version des OSS-Projekts, wie in der folgenden Tabelle dargestellt. Die besten Ergebnisse erzielen Sie, wenn die Version des heruntergeladenen Plug-ins mit der Version von Config Sync übereinstimmt.

Config Sync-Version kubectl-hns-Version Hinweise
1.6.2 0.7.0 Diese Version des Plug-ins ist möglicherweise über Krew verfügbar.
1.6.1 0.7.0 Diese Version des Plug-ins ist möglicherweise über Krew verfügbar.
1.6.0 0.6.0
1.5.2 0.6.0 kubectl-hns Version 0.6.0 ist nicht mit Config Sync 1.5.1 oder niedriger kompatibel
1.5.1 0.5.3 kubectl-hns Version 0.5.3 und niedriger sind nicht mit Config Sync 1.5.2 oder höher kompatibel
1.5.0 0.5.2
1.4.2 0.5.1
1.4.1 0.5.0
Vor 1.4.0

Plug-in auf Ihrer Workstation installieren

Die neueste Version des Plug-ins wird in der Regel von Krew unterstützt. Wenn Sie Krew verwenden, können Sie das Plug-in über den folgenden Befehl installieren:

kubectl krew install hns

So können Sie das Plug-in auch manuell installieren:

  1. Setzen Sie eine Umgebungsvariable auf die kubectl-hns-Version aus der vorherigen Tabelle. Beispiel:

     HNC_VERSION=v0.5.0   # Example for Config Sync 1.4.1
    
  2. Wählen Sie aus, wo Sie das Plug-in installieren möchten. Dies kann an einer beliebigen Stelle in Ihrem PATH sein.

     PLUGIN_DIR=~/kubectl-plugins   # Example path
    
  3. Laden Sie das Plug-in herunter und machen Sie es ausführbar:

    Linux

    Seit Config Sync 1.5.0 / HNC v0.5.2:

    curl -L -o ${PLUGIN_DIR}/kubectl-hns \
       https://github.com/kubernetes-sigs/multi-tenancy/releases/download/hnc-${HNC_VERSION}/kubectl-hns_linux_amd64
    chmod +x ${PLUGIN_DIR}/kubectl-hns
    

    In Config Sync 1.4.2 / HNC v0.5.1 und früheren Versionen:

    curl -L -o ${PLUGIN_DIR}/kubectl-hns \
       https://github.com/kubernetes-sigs/multi-tenancy/releases/download/hnc-${HNC_VERSION}/kubectl-hns
    chmod +x ${PLUGIN_DIR}/kubectl-hns
    

    macOS

    macOS ist nur für Config Sync 1.5.0 / HNC v0.5.2 und höher verfügbar.

    curl -L -o ${PLUGIN_DIR}/kubectl-hns \
       https://github.com/kubernetes-sigs/multi-tenancy/releases/download/hnc-${HNC_VERSION}/kubectl-hns_darwin_amd64
    chmod +x ${PLUGIN_DIR}/kubectl-hns
    

Installation prüfen

  1. Wenn Hierarchy Controller korrekt installiert ist, können Sie unter einem vorhandenen Namespace untergeordnete Namespaces erstellen:

     kubectl hns create sub -n default
    
  2. Wenn Hierarchy Controller ordnungsgemäß funktioniert, können Sie die resultierende Hierarchie prüfen:

     kubectl hns tree default
    

    Ausgabe:

     default
      └── sub
    
  3. Bereinigen Sie den Subnamespace. Subnamespaces können nicht direkt gelöscht werden. Sie müssen stattdessen den Subnamespace-Anker aus dem übergeordneten Namespace löschen:

    kubectl delete subns sub -n default
    # subnamespaceanchor.hnc.x-k8s.io "sub" deleted
    

Hierarchy Controller deinstallieren

So deinstallieren Sie den Hierarchy Controller:

  1. Setzen Sie in der Konfigurationsdatei für den Operator im Objekt spec.hierarchyController den enabled-Wert auf false. Andere Felder wie enablePodTreeLabels müssen nicht geändert werden.
  2. Nachdem der Operator den hierarchycontroller.configmanagement.gke.io-Finalizer entfernt hat, wird Hierarchy Controller deinstalliert.

Durch die Deinstallation des Hierarchy Controllers werden keine Namespaces entfernt noch eines der Objekte, die von Ancestor-Namespaces auf Nachfolgerelemente übernommen wurden. Alle weiteren Änderungen an den Objekten werden jedoch nicht übernommen.

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

Nächste Schritte