Google Distributed Cloud (GDC) air-gapped vous permet de gérer vos clusters Kubernetes après leur création à l'aide de GKE sur GDC. Ce service vous permet de vous adapter à l'évolution des exigences de vos charges de travail de conteneurs et de gérer vos nœuds de cluster existants à l'aide des workflows suivants :
Associer et dissocier des clusters partagés à des projets : associez et dissociez votre cluster partagé à plusieurs projets après la création du cluster pour modifier le champ d'application des charges de travail de votre cluster partagé.
Afficher les clusters de votre organisation : listez les clusters de votre organisation pour suivre ce qui est disponible pour vos charges de travail de conteneurs.
Lister les versions de Kubernetes : affichez la version de Kubernetes de votre cluster pour connaître ses capacités correspondant aux dernières versions de Kubernetes.
Afficher les propriétés de cluster modifiables : affichez les propriétés que vous pouvez modifier dans la définition de la ressource personnalisée
Cluster.
Ce document s'adresse aux administrateurs informatiques du groupe d'administrateurs de plate-forme, qui gèrent les charges de travail de conteneurs hébergées dans des clusters répartis sur plusieurs projets, et aux développeurs du groupe d'opérateurs d'applications, qui sont chargés de créer des charges de travail d'application dans un seul projet. Pour en savoir plus, consultez Audiences pour la documentation GDC sous air gap.
Avant de commencer
Pour effectuer les tâches décrites dans ce document, vous devez demander les autorisations nécessaires et préparer votre environnement.
Demander des rôles IAM
Vous devez disposer de rôles spécifiques pour obtenir les autorisations nécessaires à la maintenance de votre cluster Kubernetes. Les rôles dont vous avez besoin dépendent du type de cluster que vous utilisez : cluster partagé à portée d'organisation ou cluster standard à portée de projet. Pour en savoir plus, consultez Configurations de clusters Kubernetes.
Rôles de cluster partagés
Pour afficher et gérer votre cluster Kubernetes partagé et ses ressources, demandez à l'administrateur IAM de votre organisation de vous accorder les rôles suivants en fonction de la tâche à effectuer :
Créateur de projet (
project-creator) : permet de créer ou d'afficher des ressources de projet. Ce rôle est nécessaire pour associer un cluster partagé à un projet.Éditeur de projet (
project-editor) : supprimez, mettez à jour ou affichez les ressources du projet. Ce rôle est nécessaire pour dissocier un cluster partagé d'un projet.Lecteur de cluster utilisateur (
user-cluster-viewer) : permet d'afficher le cluster partagé et ses ressources. Ce rôle permet d'accéder aux API du plan de gestion pour le cluster partagé hébergé dans le serveur d'API de gestion.
Ces rôles ne sont pas liés à un espace de noms de projet.
Rôles de cluster standards
Pour afficher votre cluster Kubernetes standard et ses ressources, demandez à l'administrateur IAM de votre projet de vous attribuer le rôle Lecteur de cluster standard (standard-cluster-viewer). Ce rôle permet d'accéder aux API du plan de gestion pour le cluster standard hébergé dans le serveur d'API de gestion.
Ce rôle est lié à l'espace de noms de votre projet.
Préparer votre environnement
Pour exécuter des commandes sur un cluster Kubernetes à l'aide de l'API, assurez-vous de disposer des ressources suivantes :
Recherchez le nom du cluster Kubernetes ou demandez-le à un membre du groupe d'administrateurs de la plate-forme.
Utilisez le nom du cluster Kubernetes pour remplacer
CLUSTER_NAMEdans ces instructions.Connectez-vous et générez le fichier kubeconfig pour le serveur d'API de gestion.
Utilisez le chemin kubeconfig du serveur d'API de gestion pour remplacer
MANAGEMENT_API_SERVERdans ces instructions.
Déplacer des clusters dans la hiérarchie des projets
Les projets permettent de regrouper logiquement les instances de service. Vous pouvez ajouter et supprimer des clusters Kubernetes partagés dans la hiérarchie des projets GDC pour regrouper vos services de manière appropriée. Vous ne pouvez pas déplacer les clusters standards dans la hiérarchie des projets, car ils ne sont associés qu'à un seul projet.
Associer un projet à un cluster partagé
Lorsque vous créez un cluster partagé à partir de la console GDC, vous devez associer au moins un projet avant de pouvoir y déployer des charges de travail de conteneur. Si vous devez ajouter des projets à un cluster existant, procédez comme suit :
Console
- Dans le menu de navigation, sélectionnez Kubernetes Engine > Clusters.
- Dans la liste des clusters, cliquez sur le nom du cluster pour ouvrir la page Détails du cluster.
- Sélectionnez Associer un projet.
- Dans la liste des projets disponibles, cliquez sur le nom du projet à associer au cluster.
- Cliquez sur Enregistrer.
API
Créez une ressource personnalisée
ProjectBindingpour votre cluster :kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: resourcemanager.gdc.goog/v1 kind: ProjectBinding metadata: name: CLUSTER_NAME-PROJECT_NAME namespace: platform labels: resourcemanager.gdc.goog/projectbinding-for-user-project: "true" spec: clusterRef: name: CLUSTER_NAME selector: nameSelector: matchNames: - PROJECT_NAME EOFRemplacez les éléments suivants :
MANAGEMENT_API_SERVER: chemin d'accès kubeconfig du serveur d'API zonal.CLUSTER_NAME: nom du cluster.PROJECT_NAME: nom du projet auquel associer le cluster. Chaque ressourceProjectBindingne peut être mappée qu'à un seul cluster. Si un projet nécessite d'accéder à plusieurs clusters, unProjectBindingunique doit être créé pour chaque cluster.
Terraform
Dans un fichier de configuration Terraform, insérez l'extrait de code suivant pour créer la ressource personnalisée
ProjectBinding:provider "kubernetes" { config_path = "MANAGEMENT_API_SERVER" } resource "kubernetes_manifest" "PROJECT_BINDING_RESOURCE_NAME" { manifest = { "apiVersion" = "resourcemanager.gdc.goog/v1" "kind" = "ProjectBinding" "metadata" = { "name" = "CLUSTER_NAME-PROJECT_NAME" "namespace" = "platform" "labels" = { "resourcemanager.gdc.goog/projectbinding-for-user-project" = "true" } } "spec" = { "clusterRef" = { "name" = "CLUSTER_NAME" } "selector" = { "nameSelector" = { "matchNames" = [ "PROJECT_NAME", ] } } } } }Remplacez les éléments suivants :
MANAGEMENT_API_SERVER: chemin d'accès kubeconfig du serveur d'API zonal.PROJECT_BINDING_RESOURCE_NAME: nom de la ressource Terraform de la liaison de projet, par exempleCLUSTER_NAME-PROJECT_NAME-binding. Ce nom est utilisé par Terraform pour identifier l'association de votre projet, mais pas par GDC.CLUSTER_NAME: nom du cluster. Chaque ressourceProjectBindingne peut être mappée qu'à un seul cluster. Si un projet nécessite d'accéder à plusieurs clusters, unProjectBindingunique doit être créé pour chaque cluster.PROJECT_NAME: nom du projet auquel associer le compte. Chaque ressourceProjectBindingne peut être mappée qu'à un seul cluster. Si un projet nécessite d'accéder à plusieurs clusters, unProjectBindingunique doit être créé pour chaque cluster.
Appliquez la nouvelle liaison de projet :
terraform apply
Dissocier un projet d'un cluster partagé
Détacher un projet d'un cluster partagé peut entraîner des modifications importantes, comme la suppression des charges de travail en cours d'exécution dans le cluster. Assurez-vous de bien comprendre les conséquences avant de dissocier un projet d'un cluster partagé.
Pour dissocier un projet d'un cluster partagé existant, procédez comme suit :
Console
- Dans le menu de navigation, sélectionnez Kubernetes Engine > Clusters.
- Cliquez sur le cluster dans la liste des clusters pour ouvrir la page Détails du cluster.
- Cliquez sur delete Détacher pour dissocier le projet du cluster.
API
Supprimez la ressource
ProjectBindingqui associe le projet et le cluster :kubectl --kubeconfig MANAGEMENT_API_SERVER delete projectbinding \ CLUSTER_NAME-PROJECT_NAME -n platformRemplacez les éléments suivants :
MANAGEMENT_API_SERVER: chemin d'accès kubeconfig du serveur d'API zonal.CLUSTER_NAME: nom du cluster.PROJECT_NAME: nom du projet à dissocier du cluster.
Terraform
Supprimez la ressource de liaison de projet :
terraform destroy -target kubernetes_manifest.PROJECT_BINDING_RESOURCE_NAMERemplacez
PROJECT_BINDING_RESOURCE_NAMEpar le nom de la ressource Terraform de la liaison de projet à supprimer, par exempleCLUSTER_NAME-PROJECT_NAME-binding. Ce nom est utilisé par Terraform pour identifier l'association de votre projet, mais pas par GDC.
Afficher tous les clusters d'un projet ou d'une organisation
Vous pouvez afficher tous les clusters Kubernetes disponibles dans un projet ou une organisation, y compris leur état, leur version Kubernetes et d'autres informations.
Étant donné que les clusters Kubernetes sont des ressources zonales, vous ne pouvez lister les clusters que par zone.
Console
Dans le sélecteur de projet, sélectionnez votre projet ou votre organisation.
Les clusters standards sont limités au niveau du projet, tandis que les clusters partagés sont limités au niveau de l'organisation. Sélectionnez le champ d'application approprié pour afficher le type de cluster Kubernetes correspondant.
Dans le menu de navigation, sélectionnez Kubernetes Engine > Clusters.
Tous les clusters partagés disponibles dans l'organisation, ainsi que leur état et d'autres informations, s'affichent :

gdcloud
Affichez la liste des clusters Kubernetes disponibles dans la zone :
gdcloud clusters listLe résultat ressemble à ce qui suit :
CLUSTERREF.NAME READINESS.STATE TYPE CURRENTVERSION.USERCLUSTERVERSION CURRENTVERSION.SUPPORT.STATUS user-vm-1 Ready user 1.15.0-gdch.394225-1.28.15-gke.1200 In Support user-vm-2 Ready user 1.15.0-gdch.394225-1.29.12-gke.800 In Support
API
Affichez la liste des clusters Kubernetes disponibles dans la zone :
kubectl get clusters.cluster.gdc.goog -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig MANAGEMENT_API_SERVERRemplacez les éléments suivants :
MANAGEMENT_API_SERVER: chemin d'accès au fichier kubeconfig du serveur d'API zonal.KUBERNETES_CLUSTER_NAMESPACE: espace de noms du cluster. Pour les clusters partagés, utilisez l'espace de nomsplatform. Pour les clusters standards, utilisez l'espace de noms du projet du cluster.
Le résultat ressemble à ce qui suit :
NAME STATE K8S VERSION user-vm-1 Running 1.25.10-gke.2100 user-test Running 1.26.5-gke.2100
Lister les versions Kubernetes disponibles pour un cluster
Vous pouvez lister les versions de Kubernetes disponibles dans votre zone GDC pour vérifier les fonctionnalités Kubernetes auxquelles vous pouvez accéder dans le cluster.
Répertoriez les versions de Kubernetes disponibles dans votre zone :
kubectl get userclustermetadata.upgrade.private.gdc.goog \ -o=custom-columns=K8S-VERSION:.spec.kubernetesVersion \ --kubeconfig MANAGEMENT_API_SERVERRemplacez
MANAGEMENT_API_SERVERpar le fichier kubeconfig du serveur d'API zonal de votre cluster.La sortie ressemble à ceci :
K8S-VERSION 1.25.10-gke.2100 1.26.5-gke.2100 1.27.4-gke.500
Afficher les propriétés modifiables
Pour chaque cluster Kubernetes, un ensemble de propriétés peuvent être modifiées après sa création. Vous ne pouvez modifier que les propriétés modifiables qui se trouvent dans le spec de la ressource personnalisée Cluster. Toutes les propriétés de spec ne peuvent pas être mises à jour une fois le cluster provisionné. Pour afficher ces propriétés modifiables, procédez comme suit :
Console
Dans le menu de navigation, sélectionnez Kubernetes Engine > Clusters.
Dans la liste des clusters Kubernetes, cliquez sur le nom d'un cluster pour afficher ses propriétés.
Les propriétés modifiables sont associées à une icône Modifier edit.
API
Consultez la liste des propriétés de la spécification
Clusteret les valeurs valides correspondant à chaque propriété :kubectl explain clusters.cluster.gdc.goog.spec \ --kubeconfig MANAGEMENT_API_SERVERRemplacez
MANAGEMENT_API_SERVERpar le chemin d'accès du fichier kubeconfig pour le serveur d'API zonal.Le résultat ressemble à ce qui suit :
KIND: Cluster VERSION: cluster.gdc.goog/v1 RESOURCE: spec <Object> DESCRIPTION: <empty> FIELDS: clusterNetwork <Object> The cluster network configuration. If unset, the default configurations with pod and service CIDR sizes are used. Optional. Mutable. initialVersion <Object> The GDC air-gapped version information of the user cluster during cluster creation. Optional. Default to use the latest applicable version. Immutable. loadBalancer <Object> The load balancer configuration. If unset, the default configuration with the ingress service IP address size is used. Optional. Mutable. nodePools <[]Object> The list of node pools for the cluster worker nodes. Optional. Mutable. releaseChannel <Object> The release channel a cluster is subscribed to. When a cluster is subscribed to a release channel, GDC maintains the cluster versions for users. Optional. Mutable.Mettez à jour ces paramètres à l'aide de la console GDC ou de CLI kubectl. Par exemple, vous pouvez redimensionner un pool de nœuds.
Étapes suivantes
- Présentation des clusters Kubernetes
- Haute disponibilité pour vos applications
- Configurations de cluster Kubernetes