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
etkubectl
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.
(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 exemple172.16.0.16/28
.NODE_TAG
: tag appliqué à tous les nœuds de votre cluster GKE.
Définissez les valeurs suivantes dans l'objet
spec.hierarchyController
surtrue
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...
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.
(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 exemple172.16.0.16/28
.NODE_TAG
: tag appliqué à tous les nœuds de votre cluster GKE.
Dans le fichier de configuration de l'opérateur, dans l'objet
spec.hierarchyController
, définissez la valeur deenabled
surtrue
:# 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...
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 :
Modifiez la configuration du contrôleur de hiérarchie dans votre fichier
apply-spec.yaml
et définissezhierarchyController.enabled
surfalse
.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
- En savoir plus sur le contrôleur de hiérarchie
- Appliquer des quotas de ressources hiérarchiques
- Observez les charges de travail hiérarchiques.
- Découvrir les fonctionnalités de base des espaces de noms hiérarchiques
- Découvrir les fonctionnalités d'espaces de noms hiérarchiques avancés