Utilizzo di Workload Identity Federation for GKE

Scopri come autenticare i tuoi servizi Knative con Workload Identity Federation per GKE per accedere alle APIGoogle Cloud come le API Compute, Storage e Database o le API Machine Learning.

Per autenticare i servizi Knative serving, devi:

  1. Abilita la federazione delle identità per i carichi di lavoro per GKE nel cluster
  2. Crea un service account Kubernetes e concedigli i ruoli IAM richiesti

Dopo aver seguito questi passaggi, puoi eseguire il deployment di un nuovo servizio Knative serving che utilizza l'identità che hai creato.

Abilitazione di Workload Identity Federation for GKE sul cluster

Per configurare la federazione delle identità per i carichi di lavoro per GKE con Knative Serving, puoi configurare la federazione delle identità per i carichi di lavoro della fleet anziché utilizzare un Google Cloud file JSON del service account.

Configura le autorizzazioni per attivare tutte le metriche

Per attivare le metriche, ad esempio il conteggio delle richieste di report o la latenza delle richieste in Google Cloud Observability, devi concedere le autorizzazioni di scrittura per Cloud Monitoring. Ad esempio, puoi concedere il ruolo Scrittore metriche Monitoring (roles/monitoring.metricWriter) al service account Kubernetes associato a Knative Serving perché include le autorizzazioni necessarie per scrivere i dati di monitoraggio.

Concessione di ruoli IAM a un service account Kubernetes

Qualsiasi servizio Knative Serving in esecuzione come service account Kubernetes che configuri si autentica automaticamente con la sua identità federata quando accede alle API Google Cloud . Il service account Kubernetes deve esistere all'interno del cluster e dello spazio dei nomi del servizio Knative Serving per cui vuoi utilizzare Workload Identity Federation for GKE.

  1. Se non esiste un service account Kubernetes, creane uno nello stesso spazio dei nomi Kubernetes del servizio Knative Serving; altrimenti, vai al passaggio successivo:

    kubectl create serviceaccount --namespace K8S_NAMESPACE KUBERNETES_SERVICEACCOUNT
  2. Concedi i ruoli IAM richiesti direttamente al service account Kubernetes:

    gcloud projects add-iam-policy-binding RESOURCE_PROJECT_ID \
        --member "principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/K8S_NAMESPACE/sa/KUBERNETES_SERVICEACCOUNT" \
        --role "ROLE_NAME" \
        --condition=None

    Sostituisci:

    • RESOURCE_PROJECT_ID con l'ID progetto Google Cloud in cui risiedono le risorse Google Cloud di destinazione.
    • PROJECT_NUMBER con il numero di progetto del progettoGoogle Cloud per il cluster in cui si trovano il tuo service account Kubernetes e i servizi Knative Serving.
    • PROJECT_ID con l'ID del Google Cloud progetto per il cluster in cui si trovano il service account Kubernetes e i servizi Knative Serving.
    • K8S_NAMESPACE e KUBERNETES_SERVICEACCOUNT con lo spazio dei nomi e il nome del service account Kubernetes.
    • ROLE_NAME con il ruolo IAM da assegnare al tuo service account Kubernetes, ad esempio roles/monitoring.metricWriter.

Deployment di un nuovo servizio per utilizzare Workload Identity Federation for GKE

Esegui il deployment di un nuovo servizio Knative serving che utilizza Workload Identity Federation for GKE che hai creato.

Console

  1. Vai a Knative Serving nella console Google Cloud :

    Vai a Knative serving

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

  3. In Impostazioni avanzate, fai clic su Contenitore.

  4. Fai clic sul menu a discesa Service account e seleziona il service account che preferisci.

  5. Fai clic su Avanti per continuare con la sezione successiva.

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

  7. Fai clic su Crea per eseguire il deployment dell'immagine in Knative Serving e attendi il completamento del deployment.

Riga di comando

  • Per i servizi esistenti, imposta il service account Kubernetes eseguendo il comando gcloud run services update con i seguenti parametri:

    gcloud run services update SERVICE --service-account KUBERNETES_SERVICEACCOUNT

    Sostituisci:

    • SERVICE con il nome del tuo servizio Knative serving.
    • KUBERNETES_SERVICEACCOUNT con il service account Kubernetes che hai utilizzato per creare l'identità del workload.
  • Per i nuovi servizi, imposta l'account di servizio Kubernetes eseguendo il comando gcloud run deploy con il parametro --service-account:

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

    Sostituisci:

    • IMAGE_URL con un riferimento all'immagine container, ad esempio gcr.io/cloudrun/hello.
    • KUBERNETES_SERVICEACCOUNT con il service account Kubernetes che hai utilizzato per creare l'identità del workload.

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 e implementare le modifiche con il comando gcloud run services replace. Devi assicurarti di modificare solo gli attributi specificati.

  1. Scarica la configurazione del servizio in un file denominato service.yaml nello spazio di lavoro locale:

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

    Sostituisci SERVICE con il nome del tuo servizio Knative serving.

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

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

    Sostituisci

    • SERVICE con il nome del tuo servizio Knative serving.
    • KUBERNETES_SERVICEACCOUNT con il service account Kubernetes che hai utilizzato per creare l'identità del workload.
  3. Esegui il deployment della configurazione nel servizio Knative Serving eseguendo questo comando:

    gcloud run services replace service.yaml

Migrazione dei servizi esistenti per utilizzare Workload Identity Federation for GKE

Se hai abilitato Workload Identity Federation for GKE su un cluster esistente, devi eseguire la migrazione di ogni servizio su quel cluster per cui vuoi utilizzare Workload Identity Federation for GKE. Scopri come eseguire la migrazione dei servizi esistenti.

Passaggi successivi

Scopri come gestire l'accesso ai tuoi servizi.