Installer Hierarchy Controller

Le contrôleur de hiérarchie vous permet d'organiser les espaces de noms Kubernetes dans des hiérarchies, d'appliquer des règles à ces espaces (tels que RBAC et les quotas de ressources hiérarchiques). et Observer les charges de travail des espaces de noms associés.

Cette page vous explique comment installer, configurer et désinstaller Hierarchy Controller.

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Installez et initialisez Google Cloud CLI, qui fournit les commandes gcloud et kubectl utilisées dans ces instructions. Si vous utilisez Cloud Shell, Google Cloud CLI est préinstallé.

  • Vous devez disposer d'un cluster exécutant Kubernetes 1.16.x ou version ultérieure.

Le contrôleur de hiérarchie est conçu pour fonctionner étroitement avec Config Sync afin de vous permettre de gérer vos règles et espaces de noms hiérarchiques via un dépôt Git. Si vous choisissez cette option, nous vous recommandons de sélectionner un dépôt non structuré lorsque vous installez Config Sync, qui vous permet d'organiser votre dépôt comme vous le souhaitez tout en conservant les avantages des règles hiérarchiques. En revanche, un dépôt hiérarchique peut entrer en conflit avec Hierarchy Controller. Il n'est pas recommandé d'utiliser les deux à la fois.

Vous pouvez également choisir d'installer Hierarchy Controller sans configurer de dépôt Config Sync. Les espaces de noms hiérarchiques peuvent être définis entièrement sur le cluster via l'API Kubernetes. Si vous ne prévoyez pas d'utiliser Git, vous n'avez pas besoin d'accorder à l'opérateur l'accès à Git ni de le configurer d'une certaine façon, sauf comme décrit dans la section suivante.

Activer Hierarchy Controller

Procédez comme suit pour configurer Config Sync afin d'installer Hierarchy Controller.

gcloud

Suivez ces étapes pour configurer Config Sync de sorte qu'il installe Hierarchy Controller, y compris tous les composants facultatifs. Si vous ne souhaitez pas activer l'observabilité hiérarchique ni les quotas de ressources hiérarchiques, ajoutez un commentaire aux lignes indiquées.

  1. (Facultatif) Si vous utilisez des clusters privés, ajoutez des règles de pare-feu aux projets de chaque cluster pour autoriser les plans de contrôle de cluster GKE de se connecter aux webhooks du contrôleur de hiérarchie sur le port 9443 :

     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
    

    Remplacez l'élément suivant :

    • CONTROL_PLANE_CIDR : plage d'adresses IP pour le plan de contrôle du cluster GKE, par exemple 172.16.0.16/28.
    • NODE_TAG : tag appliqué à tous les nœuds de votre cluster GKE.
  2. Définissez les valeurs suivantes dans l'objet spec.hierarchyController sur true dans le fichier de configuration gcloud :

    # 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. Appliquez le fichier apply-spec.yaml :

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

    Remplacez l'élément suivant :

    • CLUSTER_NAME : ajoutez le cluster enregistré auquel vous souhaitez appliquer cette configuration.
    • CONFIG_YAML : ajoutez le chemin d'accès à votre fichier apply-spec.yaml.
    • PROJECT_ID : ajoutez l'ID de votre projet.

    Plusieurs charges de travail sont déployées, puis Hierarchy Controller devient utilisable sur votre cluster. Cette opération peut prendre jusqu'à une minute.

kubectl

Suivez ces étapes pour configurer Config Sync de sorte qu'il installe Hierarchy Controller, y compris tous les composants facultatifs. Si vous ne souhaitez pas activer l'observabilité hiérarchique ni les quotas de ressources hiérarchiques, ajoutez un commentaire aux lignes indiquées.

  1. (Facultatif) Si vous utilisez des clusters privés, ajoutez des règles de pare-feu aux projets de chaque cluster pour autoriser les plans de contrôle de cluster GKE de se connecter aux webhooks du contrôleur de hiérarchie sur le port 9443 :

     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
    

    Remplacez l'élément suivant :

    • CONTROL_PLANE_CIDR : plage d'adresses IP pour le plan de contrôle du cluster GKE, par exemple 172.16.0.16/28.
    • NODE_TAG : tag appliqué à tous les nœuds de votre cluster GKE.
  2. Dans le fichier de configuration de l'opérateur, dans l'objet spec.hierarchyController, définissez la valeur de enabled sur 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 hierarchical quota:
        enableHierarchicalResourceQuota: true
        # Comment to disable hierarchical observability:
        enablePodTreeLabels: true
       # ...other fields...
    
  3. Appliquez la configuration :

      kubectl apply -f config-management.yaml
    

    Plusieurs charges de travail sont déployées, puis Hierarchy Controller devient utilisable sur votre cluster. Cette opération peut prendre jusqu'à une minute.

Installer le plug-in kubectl

Il est possible d'interagir avec Hierarchy Controller en n'utilisant que les outils clients Kubernetes, tels que kubectl. Il est toutefois beaucoup plus simple, pour certaines tâches, de faire appel au plug-in kubectl Open Source kubectl-hns. Ce plug-in fait partie du contrôleur d'espace de noms hiérarchique (HNC, Hierarchical Namespace Controller), qui est un composant de Hierarchy Controller.

Ce plug-in est distribué par la communauté OSS et est actuellement disponible pour Linux et macOS. Pour l'installer sur votre poste de travail, consultez la section Installer le plug-in kubectl dans la documentation de Config Sync.

Vérifiez l'installation

Une fois Hierarchy Controller installé, vous pouvez vérifier que l'installation s'est bien déroulée.

gcloud

Exécutez la commande suivante :

gcloud beta container fleet config-management status \
    --project=PROJECT_ID

Remplacez PROJECT_ID par l'ID de votre projet.

Un résultat semblable aux lignes suivantes doit s'afficher :

Name          ...other columns... Hierarchy_Controller
CLUSTER_NAME  ...other fields ... INSTALLED

Une installation réussie est signalée par l'état INSTALLED dans la colonne Hierarchy_Controller. L'affichage de l'état peut prendre plusieurs minutes après l'activation de Hierarchy Controller.

kubectl

Si Hierarchy Controller est correctement installé, ses pods seront en cours d'exécution. Les pods peuvent redémarrer plusieurs fois avant d'être disponibles.

Étant donné que les pods du contrôleur de hiérarchie s'exécutent dans l'espace de noms hnc-system, vous pouvez afficher leur état en exécutant la commande suivante :

kubectl get pods -n hnc-system

Un résultat semblable aux lignes suivantes doit s'afficher :

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

Mettre à niveau Hierarchy Controller

Hierarchy Controller est mis à niveau chaque fois que vous mettez à niveau Config Sync. Pour en savoir plus, consultez la page Mettre à niveau Config Sync.

Désinstaller Hierarchy Controller

Suivez ces étapes pour désinstaller Hierarchy Controller de vos clusters.

gcloud

Pour désinstaller Hierarchy Controller, procédez comme suit :

  1. Modifiez la configuration du contrôleur de hiérarchie dans votre fichier apply-spec.yaml et définissez hierarchyController.enabled sur false.

  2. Appliquez les modifications dans le fichier apply-spec.yaml :

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

    Remplacez les éléments suivants :

    • CLUSTER_NAME : ajoutez le cluster enregistré auquel vous souhaitez appliquer cette configuration.
    • CONFIG_YAML : ajoutez le chemin d'accès à votre fichier apply-spec.yaml.
    • PROJECT_ID : ajoutez l'ID de votre projet.

Une fois que Hierarchy Controller a supprimé le finaliseur hierarchycontroller.configmanagement.gke.io, la désinstallation est terminée.

kubectl

Pour désinstaller Hierarchy Controller, modifiez la configuration Config Sync dans votre fichier config-management.yaml et définissez hierarchyController.enabled sur false. Une fois que Config Sync supprime le finaliseur hierarchycontroller.configmanagement.gke.io, la désinstallation est terminée.

Si vous souhaitez désinstaller complètement Config Sync, consultez la section Désinstaller Config Sync d'un cluster.

Étapes suivantes