Utiliser Workload Identity

Cette page explique comment authentifier votre service Cloud Run pour Anthos afin d'utiliser les API Google Cloud en activant Workload Identity.

Pour utiliser des API Google Cloud telles que les API Compute, Storage, Database ou les API de machine learning depuis votre cluster GKE, vous devez disposer d'autorisations et authentifier votre service Cloud Run pour Anthos en activant Workload Identity, puis lier un compte de service Kubernetes afin qu'il agisse en tant que compte de service Google.

Activer Workload Identity sur votre cluster

Pour configurer Workload Identity dans le cadre de Cloud Run pour Anthos, consultez les instructions ci-dessous afin de l'activer sur votre cluster. Sinon, passez à la section suivante :

Activer Workload Identity sur un nouveau cluster ou Activer Workload Identity sur un cluster existant

Activer les métriques sur un cluster avec Workload Identity

Lorsque vous activez Workload Identity, Cloud Run pour Anthos ne remonte pas certaines métriques, telles que le nombre de requêtes de révision ou la latence des requêtes, à la suite Google Cloud Operations. Il continue néanmoins à générer des rapports sur les métriques associées au processeur et à la mémoire.

Pour activer l'ensemble des métriques, vous devez définir manuellement les autorisations d'écriture de métriques dans Cloud Monitoring en attribuant le rôle "Rédacteur de métriques Monitoring" au compte de service Google (GSA, Google Service Account) associé à votre service Cloud Run pour Anthos.

Accordez au GSA de votre service les autorisations liées au rôle "Rédacteur de métriques Monitoring" :

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com \
--role=roles/monitoring.metricWriter

Remplacez :

  • PROJECT_ID par l'ID du projet de cluster où se trouve votre KSA ;
  • GSA_PROJECT par l'ID de projet associé à un GSA qui n'est pas dans le cluster. Vous pouvez utiliser n'importe quel GSA de votre organisation.

Pour en savoir plus, consultez la page Accorder, modifier et révoquer les accès à des ressources.

Lier des comptes de service

Vous devez configurer une relation afin qu'un compte de service Kubernetes (KSA) agisse en tant que compte de service Google (GSA). Toute charge de travail exécutée en tant que KSA s'authentifie automatiquement en tant que GSA lors de l'accès aux API Google Cloud.

  1. Si aucun compte de service Kubernetes (KSA) n'existe, créez-en un dans le même espace de noms Kubernetes que votre service Cloud Run pour Anthos. Sinon, passez à l'étape suivante :

    kubectl create serviceaccount --namespace K8S_NAMESPACE KSA_NAME
  2. Créez une relation entre le KSA et le GSA, de sorte que la charge de travail exécutée en tant que KSA s'authentifie automatiquement en tant que GSA lors de l'accès aux API Google Cloud :

    1. Autorisez votre KSA à agir en tant que GSA :

      gcloud iam service-accounts add-iam-policy-binding \
      --role roles/iam.workloadIdentityUser \
      --member "serviceAccount:PROJECT_ID.svc.id.goog[K8S_NAMESPACE/KSA_NAME]" \
      GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com
    2. Mettez à jour le cluster pour exploiter la liaison :

      kubectl annotate serviceaccount \
      --namespace K8S_NAMESPACE \
       KSA_NAME \
       iam.gke.io/gcp-service-account=GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com

Déployer un service avec une nouvelle identité

Déployez votre service à l'aide du KSA existant dans le cluster et l'espace de noms du service que vous souhaitez déployer. Le compte de service peut appartenir à un projet différent de celui du cluster.

Console

  1. Accédez à Cloud Run for Anthos dans la console Google Cloud :

    Accéder à Cloud Run pour Anthos

  2. Cliquez sur Créer un service si vous configurez un nouveau service sur lequel effectuer un déploiement. Si vous configurez un service existant, cliquez sur celui-ci, puis sur Modifier et déployer la nouvelle révision.

  3. Sous Paramètres avancés, cliquez sur Conteneur.

    image

  4. Cliquez sur le menu déroulant Service account (Compte de service), puis sélectionnez le compte de service souhaité.

  5. Cliquez sur Next (Suivant) pour passer à la section suivante.

  6. Dans la section Configurer la manière dont ce service est déclenché, sélectionnez la connectivité que vous souhaitez utiliser pour appeler le service.

  7. Cliquez sur Create (Créer) pour déployer l'image sur Cloud Run pour Anthos et attendez la fin du déploiement.

Ligne de commande

  • Pour les services existants, configurez le compte de service d'exécution en exécutant la commande gcloud run services update avec les paramètres suivants :

    gcloud run services update SERVICE --service-account SERVICE_ACCOUNT
    

    Remplacez :

    • SERVICE par le nom de votre service ;
    • SERVICE_ACCOUNT par le compte de service associé à la nouvelle identité.
  • Pour les nouveaux services, configurez le compte de service d'exécution en exécutant la commande gcloud run deploy avec le paramètre --service-account :

    gcloud run deploy --image IMAGE_URL --service-account SERVICE_ACCOUNT
    

    Remplacez :

    • IMAGE_URL par une référence à l'image de conteneur, par exemple gcr.io/myproject/my-image:latest ;
    • SERVICE_ACCOUNT par le compte de service associé à la nouvelle identité.

YAML

Vous pouvez télécharger la configuration d'un service existant dans un fichier YAML avec la commande gcloud run services describe à l'aide de l'option --format=export. Vous pouvez ensuite modifier ce fichier YAML et déployer ces modifications à l'aide de la commande gcloud beta run services replace. Veillez à ne modifier que les attributs spécifiés.

  1. Téléchargez la configuration de votre service dans un fichier nommé service.yaml sur l'espace de travail local :

    gcloud run services describe SERVICE --format export > service.yaml

    Remplacez SERVICE par le nom de votre service Cloud Run pour Anthos.

  2. Dans votre fichier local, mettez à jour l'attribut serviceAccountName: :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          serviceAccountName: SERVICE_ACCOUNT

    Remplacer

    • SERVICE par le nom de votre service Cloud Run for Anthos ;
    • SERVICE_ACCOUNT par le compte de service associé à la nouvelle identité.
  3. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud beta run services replace service.yaml