Utilizzare Workload Identity

Questa pagina spiega come autenticare il servizio Cloud Run for Anthos per utilizzare le API Google Cloud attivando Workload Identity.

Per utilizzare le API Google Cloud, come le API Compute, le API di archiviazione e di database o le API Machine Learning, all'interno del tuo cluster GKE, devi disporre delle autorizzazioni e autenticare il servizio Cloud Run for Anthos abilitando Workload Identity e vincolando un account di servizio Kubernetes ad agire come account di servizio Google.

Abilitazione di Workload Identity nel cluster

Per configurare Workload Identity con Cloud Run for Anthos, consulta le seguenti istruzioni per abilitarlo sul cluster. In caso contrario, vai alla sezione successiva:

Abilita Workload Identity su un nuovo cluster o Abilita Workload Identity su un cluster esistente

Abilitazione delle metriche su un cluster con Workload Identity

Quando abiliti Workload Identity, Cloud Run for Anthos non segnala determinate metriche, come il conteggio delle richieste di revisione o la latenza delle richieste alla suite operativa di Google Cloud, ma continua a generare report sulle metriche per CPU e memoria.

Per abilitare tutte le metriche, devi impostare manualmente le autorizzazioni per scrivere metriche in Cloud Monitoring concedendo il ruolo Writer metrica di monitoraggio all'account di servizio Google (GSA) associato al servizio Cloud Run for Anthos.

Concedi le autorizzazioni del ruolo Writer metrica di monitoraggio alla versione di servizio del tuo servizio:

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

Sostituisci:

  • PROJECT_ID con l'ID progetto per il progetto cluster che ospita il tuo KSA.
  • GSA_PROJECT con l'ID progetto per una versione di GCP che non è presente nel cluster. Nella tua organizzazione puoi utilizzare tutte le applicazioni Floodlight.

Per ulteriori informazioni, vedi Concedere, modificare e revocare l'accesso alle risorse.

Associazione degli account di servizio

Devi configurare una relazione per un account di servizio Kubernetes (KSA) per agire come un account di servizio Google (GSA). Qualsiasi carico di lavoro in esecuzione come KSA si autentica automaticamente come GCP quando accede alle API Google Cloud.

  1. Se non esiste un account di servizio Kubernetes (KSA), creane uno nello stesso spazio dei nomi Kubernetes del servizio Cloud Run for Anthos, altrimenti vai al passaggio successivo:

    kubectl create serviceaccount --namespace K8S_NAMESPACE KSA_NAME
  2. Crea una relazione tra KSA e RMA, in modo che il carico di lavoro in esecuzione come KSA autentichi automaticamente come RMA quando accedi alle API di Google Cloud:

    1. Autorizzare il KSA ad agire come un {/7}

      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. Aggiorna il cluster per sfruttare l'associazione:

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

Deployment di un nuovo servizio con una nuova identità

Esegui il deployment del tuo servizio utilizzando il KSA esistente nel cluster e nello spazio dei nomi del servizio di cui vuoi eseguire il deployment. L'account di servizio potrebbe appartenere a un progetto diverso rispetto al cluster.

console

  1. Vai a Cloud Run for Anthos in Google Cloud Console:

    Vai a Cloud Run for Anthos

  2. Fai clic su Crea servizio se stai configurando un nuovo servizio in cui stai eseguendo il deployment. Se stai configurando un servizio esistente, fai clic sul servizio, quindi su Modifica e esegui il deployment di una nuova revisione.

  3. In Impostazioni avanzate, fai clic su Container.

    immagine

  4. Fai clic sul menu a discesa Account di servizio e seleziona l'account di servizio che ti interessa.

  5. Fai clic su Avanti per passare alla sezione successiva.

  6. Nella sezione Configura il funzionamento del servizio, seleziona la connettività che vuoi utilizzare per richiamare il servizio.

  7. Fai clic su Crea per eseguire il deployment dell'immagine in Cloud Run for Anthos e attendere il completamento del deployment.

Riga di comando

  • Per i servizi esistenti, configura l'account di servizio di runtime eseguendo il comando gcloud run services update con i seguenti parametri:

    gcloud run services update SERVICE --service-account SERVICE_ACCOUNT
    

    Sostituisci:

    • SERVICE con il nome del tuo servizio.
    • SERVICE_ACCOUNT con l'account di servizio associato alla nuova identità.
  • Per i nuovi servizi, configura l'account di servizio di runtime eseguendo il comando gcloud run deploy con il parametro --service-account:

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

    Sostituisci:

    • IMAGE_URL con un riferimento all'immagine container, ad esempio gcr.io/myproject/my-image:latest.
    • SERVICE_ACCOUNT con l'account di servizio associato alla nuova identità.

YAML

Puoi scaricare la configurazione di un servizio esistente in un file YAML con il comando gcloud run services describe utilizzando il flag --format=export. Puoi quindi modificare il file YAML ed eseguire il deployment di queste modifiche con il comando gcloud beta run services replace. Devi assicurarti di modificare solo gli attributi specificati.

  1. Scarica la configurazione del tuo servizio in un file denominato service.yaml nell'area di lavoro locale:

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

    Sostituisci SERVICE con il nome del tuo servizio Cloud Run for Anthos.

  2. Nel tuo file locale, aggiorna l'attributo serviceAccountName::

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

    Sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run for Anthos.
    • SERVICE_ACCOUNT con l'account di servizio associato alla nuova identità.
  3. Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:

    gcloud beta run services replace service.yaml