Avant de commencer
Avant de commencer, effectuez les tâches suivantes :
- Activez l'API Google Kubernetes Engine. Activer l'API Google Kubernetes Engine
- Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez la gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière version en exécutant la commande
gcloud components update. Il est possible que les versions antérieures de la gcloud CLI ne permettent pas d'exécuter les commandes de ce document.
Rôles requis
Pour obtenir les autorisations nécessaires pour gérer les comptes de service et les rôles IAM, demandez à votre administrateur de vous accorder les rôles IAM suivants :
-
Administrateur de sécurité (
roles/iam.securityAdmin) sur le projet de cluster -
Configurez les comptes de service dans un projet distinct :
Administrateur de sécurité (
roles/iam.securityAdmin) sur le projet de compte de service
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Attribuer le rôle minimal requis pour GKE
GKE utilise des comptes de service IAM associés à vos nœuds pour exécuter des tâches système telles que la journalisation et la surveillance. Au minimum, ces comptes de service de nœud doivent disposer du rôle Compte de service de nœud par défaut Kubernetes Engine (roles/container.defaultNodeServiceAccount) sur votre projet. Par défaut, GKE utilise le compte de service Compute Engine par défaut, qui est créé automatiquement dans votre projet, en tant que compte de service de nœud.
Si votre organisation applique la contrainte de règle d'administration iam.automaticIamGrantsForDefaultServiceAccounts, il est possible que le compte de service Compute Engine par défaut de votre projet n'obtienne pas automatiquement les autorisations requises pour GKE.
Les sections suivantes vous expliquent comment attribuer le rôle roles/container.defaultNodeServiceAccount au compte de service Compute Engine par défaut ou à un nouveau compte de service personnalisé que vous créez.
Configurer le compte de service Compute Engine par défaut
Pour attribuer le rôle roles/container.defaultNodeServiceAccount au compte de service Compute Engine par défaut, procédez comme suit :
Console
- Accédez à la page d'accueil :
- Dans le champ Numéro du projet, cliquez sur Copier dans le presse-papiers.
- Accédez à la page IAM :
- Cliquez sur Accorder l'accès.
- Dans le champ Nouveaux comptes principaux, spécifiez la valeur suivante :
RemplacezPROJECT_NUMBER-compute@developer.gserviceaccount.comPROJECT_NUMBERpar le numéro de projet que vous avez copié. - Dans le menu Sélectionner un rôle, choisissez le rôle Compte de service de nœud par défaut Kubernetes Engine.
- Cliquez sur Enregistrer.
gcloud
- Recherchez le numéro de votre projet Google Cloud :
gcloud projects describe PROJECT_ID \ --format="value(projectNumber)"
Remplacez
PROJECT_IDpar l'ID du projet.Le résultat ressemble à ce qui suit :
12345678901
- Attribuez le rôle
roles/container.defaultNodeServiceAccountau compte de service Compute Engine par défaut :gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/container.defaultNodeServiceAccount"
Remplacez
PROJECT_NUMBERpar le numéro de projet de l'étape précédente.
Configurer un compte de service de nœud personnalisé
Pour créer un compte de service personnalisé et lui attribuer le rôle requis pour GKE, procédez comme suit :
Console
- Accédez à la page Comptes de service :
- Cliquez sur Créer un compte de service.
- Saisissez un nom pour le compte de service. Le champ ID du compte de service génère automatiquement un ID unique pour le compte de service en fonction du nom.
- Cliquez sur Créer et continuer.
- Dans le menu Sélectionner un rôle, sélectionnez le rôle Compte de service de nœud par défaut Kubernetes Engine.
- Cliquez sur OK.
gcloud
- Créez le compte de service :
gcloud iam service-accounts create SA_NAME
Remplacez
SA_NAMEpar un nom unique qui identifie le compte de service. - Attribuez le rôle Compte de service de nœud par défaut Kubernetes Engine (
roles/container.defaultNodeServiceAccount) au compte de service :gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/container.defaultNodeServiceAccount
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet Google Cloud .SA_NAME: nom du compte de service que vous avez créé.
Terraform
Créez un compte de service IAM et attribuez-lui le rôle roles/container.defaultNodeServiceAccount sur le projet :
Config Connector
Remarque : Cette étape nécessite Config Connector. Suivez les instructions d'installation pour l'installer sur votre cluster.
- Pour créer le compte de service, téléchargez la ressource suivante au format
service-account.yaml:Remplacez les éléments suivants :
[SA_NAME]: nom du nouveau compte de service.[DISPLAY_NAME]: nom à afficher pour le compte de service.
- Créez le compte de service :
kubectl apply -f service-account.yaml
- Appliquez le rôle
roles/logging.logWriterau compte de service :- Téléchargez la ressource suivante en tant que
policy-logging.yaml.Remplacez les éléments suivants :
[SA_NAME]: nom du compte de service.[PROJECT_ID]: ID de votre projet Google Cloud .
- Appliquez le rôle au compte de service :
kubectl apply -f policy-logging.yaml
- Téléchargez la ressource suivante en tant que
- Appliquez le rôle
roles/monitoring.metricWriterau compte de service :- Téléchargez la ressource suivante en tant que
policy-metrics-writer.yaml. Remplacez[SA_NAME]et[PROJECT_ID]par vos propres informations.Remplacez les éléments suivants :
[SA_NAME]: nom du compte de service.[PROJECT_ID]: ID de votre projet Google Cloud .
- Appliquez le rôle au compte de service :
kubectl apply -f policy-metrics-writer.yaml
- Téléchargez la ressource suivante en tant que
- Appliquez le rôle
roles/monitoring.viewerau compte de service :- Téléchargez la ressource suivante en tant que
policy-monitoring.yaml.Remplacez les éléments suivants :
[SA_NAME]: nom du compte de service.[PROJECT_ID]: ID de votre projet Google Cloud .
- Appliquez le rôle au compte de service :
kubectl apply -f policy-monitoring.yaml
- Téléchargez la ressource suivante en tant que
- Appliquez le rôle
roles/autoscaling.metricsWriterau compte de service :- Téléchargez la ressource suivante en tant que
policy-autoscaling-metrics-writer.yaml.Remplacez les éléments suivants :
[SA_NAME]: nom du compte de service.[PROJECT_ID]: ID de votre projet Google Cloud .
- Appliquez le rôle au compte de service :
kubectl apply -f policy-autoscaling-metrics-writer.yaml
- Téléchargez la ressource suivante en tant que
Vous pouvez également utiliser ce compte de service pour les ressources d'autres projets. Pour obtenir les instructions nécessaires, consultez Activer l'emprunt d'identité des comptes de service entre les projets.
Autoriser les comptes principaux à associer des comptes de service personnalisés
Vous pouvez associer un compte de service personnalisé lorsque vous créez un cluster ou un pool de nœuds. Pour permettre à un compte principal (tel qu'un administrateur de plate-forme) d'utiliser un compte de service personnalisé pour créer des ressources GKE, attribuez-lui le rôle Utilisateur du compte de service (roles/iam.serviceAccountUser) sur le compte de service personnalisé. Pour accorder ce rôle, sélectionnez l'une des options suivantes :
Console
Dans la console Google Cloud , accédez à la page Comptes de service :
Accéder à la page "Comptes de service"
Dans le sélecteur de ressources, choisissez le projet contenant votre compte de service personnalisé.
Cochez la case du compte de service personnalisé que vous avez créé pour l'utiliser avec les nœuds GKE.
Cliquez sur Gérer l'accès. Le volet Gérer l'accès s'ouvre.
Cliquez sur Ajouter un compte principal. Le volet Accorder l'accès s'affiche.
Dans le champ Nouveaux comptes principaux, spécifiez le compte principal, tel qu'un groupe d'administrateurs.
Dans le menu déroulant Sélectionner un rôle, sélectionnez le rôle Utilisateur du compte de service.
Cliquez sur Enregistrer. Le volet Accorder l'accès se ferme.
Fermez le volet Gérer l'accès.
gcloud
Attribuez le rôle roles/iam.serviceAccountUser :
gcloud iam service-accounts add-iam-policy-binding \
SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
--member=PRINCIPAL \
--role=roles/iam.serviceAccountUser
Remplacez les éléments suivants :
SA_NAME: nom du compte de service personnalisé.SERVICE_ACCOUNT_PROJECT_ID: ID du projet contenant le compte de service personnalisé.PRINCIPAL: identifiant du compte principal, tel queuser:baklavainthebalkans@example.com.
Config Connector
Remarque : Cette étape nécessite Config Connector. Suivez les instructions d'installation pour l'installer sur votre cluster.
Appliquez le rôle iam.serviceAccountUser à votre compte de service. Téléchargez la ressource suivante en tant que policy-service-account-user.yaml. Remplacez [SA_NAME] et [PROJECT_ID] par vos propres informations.
kubectl apply -f policy-service-account-user.yaml
Une fois le rôle attribué au compte de service, ces comptes principaux peuvent utiliser ce compte de service pour créer des clusters et des pools de nœuds. Pour en savoir plus, consultez les documents suivants :
Configurer l'utilisation des comptes de service dans les projets
Si le compte de service de votre nœud ne se trouve pas dans le même projet que votre cluster, les agents de service du projet de cluster ont besoin d'autorisations supplémentaires sur le compte de service. Pour en savoir plus, consultez Comptes de service des nœuds et agents de service du projet.
Pour attribuer les rôles requis aux comptes de service de nœud qui ne se trouvent pas dans le projet de votre cluster, procédez comme suit :
- Pour activer l'association des comptes de service à plusieurs projets, mettez à jour vos règles d'administration.
Pour attribuer les rôles requis sur le compte de service personnalisé aux agents de service dans votre projet de cluster, sélectionnez l'une des options suivantes :
Console
Dans la console Google Cloud , accédez à la page Comptes de service.
Cochez la case du compte de service personnalisé que vous avez créé pour l'utiliser avec les nœuds GKE.
Cliquez sur Gérer l'accès. Le volet Gérer l'accès s'ouvre.
Attribuez le rôle de créateur de jetons de compte de service à l'agent de service Compute Engine dans le projet de votre cluster :
- Dans le volet Gérer l'accès, cliquez sur Ajouter un compte principal. Le volet Accorder l'accès s'ouvre.
Dans le champ Nouveaux comptes principaux, spécifiez l'adresse e-mail de l'agent de service Compute Engine dans votre projet de cluster :
service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.comRemplacez
CLUSTER_PROJECT_NUMBERpar le numéro de projet de votre cluster.Dans le menu Sélectionner un rôle, sélectionnez le rôle Créateur de jetons de compte de service.
Cliquez sur Enregistrer. Le volet Accorder l'accès se ferme.
Attribuez le rôle Utilisateur du compte de service à l'agent de service GKE dans votre projet de cluster :
- Dans le volet Gérer l'accès, cliquez sur Ajouter un compte principal. Le volet Accorder l'accès s'ouvre.
Dans le champ Nouveaux comptes principaux, spécifiez l'adresse e-mail de l'agent de service GKE dans le projet de votre cluster :
service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.comDans le menu Sélectionner un rôle, sélectionnez le rôle Utilisateur du compte de service.
Cliquez sur Enregistrer. Le volet Accorder l'accès se ferme.
Fermez le volet Gérer l'accès.
gcloud
Obtenez le numéro du projet de votre cluster :
gcloud projects describe CLUSTER_PROJECT_ID \ --format='value(projectNumber)'Remplacez
CLUSTER_PROJECT_IDpar l'ID du projet de votre cluster.Le résultat est semblable à
123456789.Attribuez le rôle
roles/iam.serviceAccountTokenCreatorsur le compte de service personnalisé à l'agent de service Compute Engine dans le projet de votre cluster :gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member=service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreatorRemplacez les éléments suivants :
SA_NAME: nom du compte de service personnalisé.SERVICE_ACCOUNT_PROJECT_ID: ID du projet contenant votre compte de service personnalisé.CLUSTER_PROJECT_NUMBER: numéro de projet de votre projet de cluster.
Accordez le rôle
roles/iam.serviceAccountUsersur le compte de service personnalisé à l'agent de service GKE dans le projet de votre cluster :gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member=service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountUser
Autoriser l'extraction d'images à partir de dépôts privés
Si vous avez des images dans des dépôts Artifact Registry privés, vous devez accorder à votre compte de service de nœud l'accès à ces dépôts. Même si vous utilisez le compte de service Compute Engine par défaut, vous devrez peut-être accorder au compte de service l'accès à votre dépôt si celui-ci se trouve dans un autre projet.
Pour extraire des images privées d'Artifact Registry, accordez le rôle Lecteur Artifact Registry (roles/artifactregistry.reader) sur le dépôt à votre compte de service de nœud.
Console
Dans la console Google Cloud , accédez à la page Dépôts.
Cochez la case correspondant à votre dépôt.
Cliquez sur Afficher le panneau d'informations. Le volet d'informations sur le dépôt s'ouvre.
Dans l'onglet Autorisations, cliquez sur Ajouter un compte principal. Le volet Accorder l'accès s'ouvre.
Dans le champ Nouveaux comptes principaux, spécifiez l'adresse e-mail de votre compte de service de nœud.
Cliquez sur Sélectionner un rôle pour ouvrir la boîte de dialogue de sélection des rôles.
Sélectionnez le rôle Lecteur Artifact Registry.
Cliquez sur Enregistrer.
gcloud
Attribuez le rôle roles/artifactregistry.reader au dépôt :
gcloud artifacts repositories add-iam-policy-binding REPOSITORY_NAME \
--member=serviceAccount:SERVICE_ACCOUNT_EMAIL \
--project=REPOSITORY_PROJECT_ID \
--role=roles/artifactregistry.reader
Remplacez les éléments suivants :
REPOSITORY_NAME: nom du dépôt Artifact Registry.SERVICE_ACCOUNT_EMAIL: adresse e-mail de votre compte de service de nœud.REPOSITORY_PROJECT_ID: ID du projet contenant votre dépôt.
Config Connector
Remarque : Cette étape nécessite Config Connector. Suivez les instructions d'installation pour l'installer sur votre cluster.
Enregistrez le manifeste suivant sous le nom
policy-artifact-registry-reader.yaml:Remplacez les éléments suivants :
- SA_NAME : nom de votre compte de service IAM.
- PROJECT_ID : ID de votre projet Google Cloud .
- REPOSITORY_NAME : nom de votre dépôt Artifact Registry.
Attribuez le rôle de lecteur Artifact Registry au compte de service :
kubectl apply -f policy-artifact-registry-reader.yaml