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.
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
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:
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
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
Vai a Cloud Run for Anthos in Google Cloud Console:
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.
In Impostazioni avanzate, fai clic su Container.
Fai clic sul menu a discesa Account di servizio e seleziona l'account di servizio che ti interessa.
Fai clic su Avanti per passare alla sezione successiva.
Nella sezione Configura il funzionamento del servizio, seleziona la connettività che vuoi utilizzare per richiamare il servizio.
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à.
- IMAGE_URL con un riferimento all'immagine container, ad esempio
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.
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.
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à.
Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:
gcloud beta run services replace service.yaml