Utilizzare Workload Identity

Scopri come autenticare i tuoi servizi Knative serving con Identità carico di lavoro per accedere alle API Google Cloud come le API Compute, Storage e API di database o API Machine Learning.

Per autenticare i tuoi servizi Knative serving, devi:

  1. Abilita Workload Identity nel tuo cluster
  2. Configura autorizzazioni
  3. Associa Account di servizio Kubernetes (Arabia Saudita) a un Account di servizio Google (GSA)

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 nel tuo cluster in corso...

Per configurare Workload Identity con Knative serving, puoi configurare Federazione delle identità per i carichi di lavoro del parco risorse anziché utilizzare un file JSON dell'account di servizio Google Cloud.

Configura le autorizzazioni per abilitare tutte le metriche

Per attivare metriche come il conteggio delle richieste di report o la latenza delle richieste a Google Cloud Observability, devi concedere le autorizzazioni di scrittura per Cloud Monitoring. Per Ad esempio, puoi concedere Ruolo Writer metriche Monitoring (roles/monitoring.metricWriter) all'Account di servizio Google che associati a Knative serving perché include i necessari autorizzazioni per la scrittura dei dati di monitoraggio. Consulta Utilizzare gli account di servizio informazioni sulla creazione di account di servizio Google.

Associazione degli account di servizio

Affinché un account di servizio Kubernetes (KSA) agisca, devi configurare una relazione come account di servizio Google (GSA). Qualsiasi carico di lavoro in esecuzione come Arabia Saudita , esegue automaticamente l'autenticazione come Google Cloud quando accede alle API Google Cloud. L'Arabia Saudita associato deve esistere all'interno del cluster e dello spazio dei nomi del Servizio Knative serving per il quale vuoi utilizzare Workload Identity. Google Cloud può appartenere a un progetto Google Cloud diverso nel progetto Google Cloud in cui si trova il cluster.

  1. Se non esiste una soluzione, creane una; altrimenti vai al passaggio successivo. Puoi creare una configurazione di gestione di Google Cloud da utilizzare con Knative serving all'interno di qualsiasi progetto Google Cloud della tua organizzazione, per poi utilizzarlo Progetto Google Cloud in cui vengono eseguiti i servizi Knative serving.

    Per creare una nuova versione di Gboard, esegui il comando seguente:

    gcloud iam service-accounts create GSA_NAME

    Sostituisci GSA_NAME con il nome del nuovo account di servizio Google.

    Per ulteriori informazioni sull'utilizzo degli account di servizio Google con per i servizi Knative serving, vedi Utilizzo degli account di servizio.

  2. Assicurati che il server Ruoli IAM che di cui hai bisogno. Puoi concedere altri ruoli utilizzando il comando seguente:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com" \
        --role "ROLE_NAME"
    

    Sostituisci:

    • PROJECT_ID: con l'ID progetto Google Cloud in cui l'account Google L'Account di servizio risiede.
    • GSA_NAME con il nome del tuo account di servizio Google.
    • ROLE_NAME con il ruolo IAM da assegnare al tuo come roles/monitoring.metricWriter.
  3. Se non esiste un account di servizio Kubernetes, creane uno nello stesso lo spazio dei nomi Kubernetes come servizio Knative serving. altrimenti vai al passaggio successivo:

    kubectl create serviceaccount --namespace K8S_NAMESPACE KSA_NAME
  4. Associa gli account di servizio Kubernetes e Google per creare per poi eseguirne il deployment nel cluster:

    1. Consenti all'Arabia Saudita di simulare l'identità di Google Cloud mediante la creazione di un Criterio IAM associazione tra i due.

      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_ID.iam.gserviceaccount.com

      Sostituisci:

      • PROJECT_ID con l'ID del progetto Google Cloud per in cui il tuo account di servizio Kubernetes e Knative serving dei servizi Kubernetes.
      • K8S_NAMESPACE/KSA_NAME con lo spazio dei nomi e del tuo account di servizio Kubernetes.
      • GSA_NAME@GSA_PROJECT_ID con il nome del tuo Account di servizio Google e ID del progetto Google Cloud. Puoi utilizzare qualsiasi l'account di servizio Google nel tuo organizzazione. Per visualizzare i tuoi account di servizio Google, vedi Elenco degli account di servizio.
    2. Aggiungi il parametro iam.gke.io/gcp-service-account=GSA_NAME@GSA_PROJECT_ID l'annotazione per l'Arabia Saudita mediante l'indirizzo email della stessa.

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

      Sostituisci:

      • K8S_NAMESPACE/KSA_NAME con lo spazio dei nomi e nome dell'account di servizio Kubernetes per il quale hai creato l'associazione.
      • GSA_NAME@GSA_PROJECT_ID con il nome del tuo L'account di servizio Google e l'ID del progetto Google Cloud per il quale ha creato un'associazione.

Deployment di un nuovo servizio per utilizzare Workload Identity

Esegui il deployment di un nuovo servizio Knative serving che utilizzi Workload Identity è stato 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 in cui stai eseguendo il deployment. Se stai configurando un'istanza servizio esistente, fai clic sul servizio e poi su Modifica e Esegui il deployment della nuova revisione.

  3. In Impostazioni avanzate, fai clic su Contenitore.

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

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

  6. Nella sezione Configura il modo in cui viene attivato questo servizio, seleziona la connettività da utilizzare per richiamare il servizio.

  7. Fai clic su Crea per eseguire il deployment dell'immagine in Knative serving e attendi. per completare il deployment.

Riga di comando

  • Per i servizi esistenti, imposta l'account di servizio Kubernetes eseguendo gcloud run services update con i seguenti parametri:

    gcloud run services update SERVICE --service-account KSA_NAME
    

    Sostituisci:

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

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

    Sostituisci:

    • IMAGE_URL con un riferimento all'immagine container, per ad esempio gcr.io/cloudrun/hello.
    • KSA_NAME con l'account di servizio Kubernetes che hai utilizzato per creare l'identità dei carichi di lavoro.

YAML

Puoi scaricare la configurazione di un servizio esistente in un YAML con il comando gcloud run services describe utilizzando --format=export. Puoi quindi modificare il file YAML ed eseguire il deployment queste modifiche con il comando gcloud run services replace. Assicurarsi 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 Knative serving.

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

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

    Sostituisci

    • SERVICE con il nome del tuo servizio Knative serving.
    • KSA_NAME con l'account di servizio Kubernetes che utilizzata per creare Workload Identity.
  3. Esegui il deployment della configurazione nel tuo servizio Knative serving eseguendo il comando seguente comando:

    gcloud run services replace service.yaml

Migrazione dei servizi esistenti per utilizzare Workload Identity

Se hai abilitato Workload Identity su un cluster esistente, ogni servizio è attivo devi eseguire la migrazione del cluster per cui vuoi utilizzare Workload Identity. Scopri come eseguire la migrazione dei dati esistenti Google Cloud.

Passaggi successivi

Scopri come gestire l'accesso al tuo i servizi di machine learning.