Configurer les ressources Google Cloud

Cette page décrit les Google Cloud ressources que vous devez créer et configurer avant de créer des clusters.

Avant de commencer

  1. Créez un projet Google Cloud et un compte de facturation.

  2. Si vous n'êtes pas le propriétaire du projet, demandez à un propriétaire de projet de vous accorder les rôles IAM (Identity and Access Management) suivants : Google Cloud

    Rôle Objectif
    roles/compute.viewer Obligatoire: requis lorsque bmctl valide le champ clusterOperations.location dans le fichier de configuration du cluster.
    roles/iam.serviceAccountAdmin Obligatoire: nécessaire pour créer les comptes de service requis par Google Distributed Cloud.
    roles/iam.securityAdmin Obligatoire: nécessaire pour attribuer des rôles IAM aux comptes de service requis par Google Distributed Cloud.
    roles/iam.serviceAccountKeyAdmin Obligatoire: nécessaire pour créer des fichiers de clé JSON pour les comptes de service requis par Google Distributed Cloud.
    roles/serviceusage.serviceUsageAdmin Obligatoire: nécessaire pour activer les API Google requises par Google Distributed Cloud.
    roles/gkeonprem.admin Facultatif: nécessaire si vous souhaitez créer des clusters à l'aide de clients API GKE On-Prem ou configurer un cluster pour qu'il soit géré par l'API GKE On-Prem.
    roles/gkehub.viewer
    roles/container.viewer
    Facultatif: nécessaire si vous souhaitez accéder aux pages GKE Enterprise et Google Kubernetes Engine dans la console Google Cloud.

    Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Activer les API

Plusieurs API Google doivent être activées dans votre projet Google Cloud associé. Google Distributed Cloud utilise les API lors de la création de clusters. Les API sont également nécessaires pour maintenir une connexion à Google Cloud. La connexion à Google Cloud permet à Google Distributed Cloud d'utiliser Cloud Logging et Cloud Monitoring, ainsi que des fonctionnalités de parc telles que Cloud Service Mesh, Config Sync, Policy Controller et Config Controller.

Si vous utilisez l'outil bmctl pour créer des clusters, vous pouvez inclure l'indicateur --enable-apis lorsque vous exécutez bmctl create config. bmctl activera alors les API listées dans la commande gcloud services enable suivante. Si vous utilisez un client d'API GKE On-Prem pour créer un cluster administrateur ou un cluster d'utilisateur, vous devez activer les API avant de créer le cluster.

Pour activer les API, exécutez les commandes suivantes :

  1. Connectez-vous à la Google Cloud CLI:

    gcloud auth login
    
  2. Activez les API suivantes :

    gcloud services enable --project=PROJECT_ID \
        anthos.googleapis.com \
        anthosaudit.googleapis.com \
        anthosgke.googleapis.com \
        cloudresourcemanager.googleapis.com \
        compute.googleapis.com \
        connectgateway.googleapis.com \
        container.googleapis.com \
        gkeconnect.googleapis.com \
        gkehub.googleapis.com \
        gkeonprem.googleapis.com \
        iam.googleapis.com \
        kubernetesmetadata.googleapis.com \
        logging.googleapis.com \
        monitoring.googleapis.com \
        opsconfigmonitoring.googleapis.com \
        serviceusage.googleapis.com \
        stackdriver.googleapis.com \
        storage.googleapis.com
    

    À l'exception de gkeonprem.googleapis.com, ces API Google sont requises pour votre projet. Les deux API suivantes sont requises pour la version 1.29 et les versions ultérieures uniquement:

    • compute.googleapis.com
    • kubernetesmetadata.googleapis.com

    Si vous installez vos clusters derrière un proxy, vous devez ajouter un grand nombre de ces API à la liste des connexions autorisées. Pour obtenir la liste des API et des points de terminaison que vous devez ajouter à la liste d'autorisation et la raison de leur accès, consultez la section Installer derrière un proxy .

  3. Pour afficher les API et les services activés dans votre projet, exécutez la commande suivante:

    gcloud services list --project=PROJECT_ID \
        --enabled
    

Configurer des comptes de service

Pour utiliser les API Google, Google Distributed Cloud nécessite un compte de service configuré avec des rôles IAM spécifiques dans votre projet Google Cloud associé. Il est recommandé de créer des comptes de service distincts pour remplir différents objectifs, en particulier dans les environnements de production.

Si vous utilisez l'outil bmctl pour créer des clusters, vous pouvez inclure l'indicateur --create-service-accounts lorsque vous exécutez bmctl create config pour que bmctl crée les comptes de service avec les rôles IAM requis. Si vous utilisez un client d'API GKE On-Prem pour créer un cluster d'administrateur, la commande bmctl register bootstrap crée par défaut les comptes de service avec les rôles IAM requis lorsque vous exécutez la commande pour créer un cluster d'amorçage.

Les comptes de service sont également requis pour la création de clusters utilisateur, mais ils ont été créés et configurés lors de la création du cluster d'administrateur qui gère les clusters utilisateur.

Le tableau suivant décrit les comptes de service créés automatiquement:

Compte de service Objectif Rôles
anthos-baremetal-gcr Google Distributed Cloud utilise ce compte de service pour télécharger des images de conteneurs à partir de Container Registry. Aucun
anthos-baremetal-connect L'agent Connect utilise ce compte de service pour maintenir une connexion entre votre cluster et Google Cloud. Vous pouvez ainsi accéder au cluster et aux fonctionnalités de gestion de charge de travail, y compris à la console Google Cloud et à la passerelle Connect pour interagir avec votre cluster. roles/gkehub.connect
anthos-baremetal-register L'agent Connect utilise ce compte de service pour enregistrer vos clusters auprès d' un parc. roles/gkehub.admin
anthos-baremetal-cloud-ops L'agent Stackdriver utilise ce compte de service pour exporter les journaux et les métriques des clusters vers Cloud Logging et Cloud Monitoring. roles/logging.logWriter
roles/monitoring.metricWriter
roles/stackdriver.resourceMetadata.writer
roles/opsconfigmonitoring.resourceMetadata.writer
roles/monitoring.dashboardEditor
roles/monitoring.viewer
roles/serviceusage.serviceUsageViewer
roles/kubernetesmetadata.publisher

Configurer des comptes de service manuellement

Si vous préférez, vous pouvez créer manuellement les comptes de service, les configurer avec les rôles nécessaires et télécharger des fichiers de clé JSON avant de créer des clusters. Si vous utilisez bmctl pour créer des clusters, vous ajoutez des références aux fichiers de clé JSON dans le fichier de configuration du cluster approprié. Pour en savoir plus, consultez la section Modifier le fichier de configuration. Si vous utilisez une API GKE On-Prem pour créer un cluster d'administrateur, vous pouvez spécifier les fichiers de clés lorsque vous exécutez bmctl register bootstrap pour créer le cluster d'amorçage.

Pour créer les comptes de service et les fichiers de clé, procédez comme suit :

  1. Sur votre poste de travail administrateur, assurez-vous d'être dans le répertoire baremetal.

  2. Si ce n'est pas déjà fait, connectez-vous à Google Cloud CLI:

    gcloud auth login
    
  3. Créez les comptes de service:

    gcloud iam service-accounts create anthos-baremetal-gcr \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create anthos-baremetal-connect \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create anthos-baremetal-register \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create anthos-baremetal-cloud-ops \
        --project=PROJECT_ID
    
  4. Attribuez les rôles IAM requis aux comptes de service:

    gcloud projects add-iam-policy-binding  PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/gkehub.connect"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com" \
        --role=roles/gkehub.admin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/logging.logWriter"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.metricWriter"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/stackdriver.resourceMetadata.writer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/opsconfigmonitoring.resourceMetadata.writer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.dashboardEditor"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.viewer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/serviceusage.serviceUsageViewer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/kubernetesmetadata.publisher"
    
  5. Téléchargez les fichiers de clé JSON du compte de service:

    gcloud iam service-accounts keys create anthos-baremetal-gcr.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com
    
    gcloud iam service-accounts keys create connect-agent.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com
    
    gcloud iam service-accounts keys create connect-register.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com
    
    gcloud iam service-accounts keys create anthos-baremetal-cloud-ops.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com
    

Configurer un compte de service pouvant accéder à un bucket Cloud Storage

Vous utilisez un compte de service et un fichier de clé pour accéder à Cloud Storage. Vous pouvez utiliser ce compte de service pour autoriser l'importation automatique des instantanés des clusters dans les buckets Cloud Storage ou pour importer des images de machine virtuelle (VM) à partir de buckets Cloud Storage afin de les utiliser avec l'environnement d'exécution de VM sur GDC.

Pour créer le compte de service et le fichier de clé, procédez comme suit :

  1. Assurez-vous que vous vous trouvez dans le répertoire baremetal.

  2. Si ce n'est pas déjà fait, connectez-vous à Google Cloud CLI:

    gcloud auth login
    
  3. Si ce n'est pas déjà fait, activez l'API Cloud Storage (storage.googleapis.com) dans votre projet Google Cloud:

    gcloud services enable --project=PROJECT_ID \
        storage.googleapis.com
    
  4. Créez un compte de service que votre cluster peut utiliser pour accéder aux buckets Cloud Storage:

    gcloud iam service-accounts create SA_NAME \
        --project=PROJECT_ID
    

    Remplacez SA_NAME par le nom du nouveau compte de service. Ce nom de compte de service apparaît dans l'adresse e-mail provisionnée lors de la création, au format SA_NAME@PROJECT_ID.iam.gserviceaccount.com.

  5. Créez un rôle personnalisé avec les autorisations suivantes:

    • storage.buckets.create
    • storage.buckets.get
    • storage.buckets.list
    • storage.objects.create
    • resourcemanager.projects.get
    gcloud iam roles create ROLE_ID \
        --permissions=storage.buckets.create,storage.buckets.get,storage.buckets.list,storage.objects.create \
        --project=PROJECT_ID
    

    Remplacez ROLE_ID par le nom du nouveau rôle personnalisé, par exemple snapshotUpload. Le chemin d'accès complet de ce rôle personnalisé est au format projects/PROJECT_ID/roles/ROLE_ID.

  6. Ajoutez une liaison de stratégie au compte de service:

    gcloud iam service-accounts add-iam-policy-binding SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role='projects/PROJECT_ID/roles/ROLE_ID'
    
  7. Téléchargez le fichier de clé JSON du compte de service :

    gcloud iam service-accounts keys create OUTPUT_FILE \
        --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
    

Pour savoir comment créer des instantanés de cluster et les importer automatiquement dans un bucket Cloud Storage, consultez la section Créer des instantanés pour diagnostiquer les problèmes de cluster.

Pour savoir comment importer des images de VM depuis Cloud Storage, consultez la page Créer et utiliser des identifiants pour importer des images depuis Cloud Storage pour l'environnement d'exécution de VM sur GDC.