Utiliser Workload Identity

Cette page explique comment authentifier votre service Cloud Run for Anthos sur Google Cloud 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 des opérations Google Cloud. 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 sur Google Cloud.

  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 Créer ou Déployer.

gcloud

Vous pouvez mettre à jour un service existant de façon à disposer d'un nouveau compte de service d'exécution à l'aide de la commande suivante :

gcloud kuberun core 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é. Vous pouvez également définir un compte de service lors du déploiement à l'aide de la commande suivante :
gcloud kuberun core services create --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

Pour utiliser un fichier YAML afin de modifier la configuration de votre service existant, vous devez obtenir une copie de la configuration actuelle, modifier et enregistrer vos modifications dans un fichier local, puis déployer ces modifications dans votre service.

  1. Affichez en YAML puis copiez la configuration de votre service dans un fichier local, par exemple service.yaml :

    gcloud kuberun core services describe SERVICE --format 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

    Remplacez

    • SERVICE par le nom de votre service Cloud Run for Anthos sur Google Cloud ;
    • 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