(Facoltativo) Passaggio 12: configura Workload Identity

Apigee hybrid v.1.12 supporta Workload Identity su GKE e la federazione delle identità per i carichi di lavoro su AKS ed EKS. Le procedure in questa guida riguardano solo la configurazione di Workload Identity su GKE. Per AKS ed EKS, segui le procedure descritte in Abilitare la federazione delle identità per i carichi di lavoro su AKS ed EKS

Configura Workload Identity su GKE

Account di servizio Google Cloud e account di servizio Kubernetes

Un account di servizio Google Cloud è un tipo speciale di account che può essere utilizzato per tramite l'autenticazione come account di servizio stesso. Gli account di servizio Google Cloud possono ruoli e autorizzazioni assegnati sono simili a quelli di un singolo utente. Quando un'applicazione si autentica come account di servizio, può accedere a tutte le risorse alle quali l'account di servizio è autorizzato ad accedere. Per saperne di più sugli account di servizio Google Cloud, consulta Panoramica degli account di servizio.

Hai creato gli account di servizio Google Cloud per la tua installazione ibrida di Apigee in Passaggio 4: crea gli account di servizio. Apigee utilizza questi con gli account di servizio per autenticare i componenti ibridi.

Gli account di servizio Kubernetes sono simili agli account di servizio Google Cloud. Un servizio Kubernetes fornisce un'identità per i processi eseguiti in un pod e gli consente di eseguire l'autenticazione un server API simile a un utente. Per saperne di più sugli account di servizio Kubernetes, Configura account di servizio per i pod.

Se hai impostato gcp.workloadIdentity.enabled su true in esegue l'override del file, quando i grafici Helm per ciascun componente ibrido creano il servizio Kubernetes tiene conto dei componenti quando li installi o li esegui, come hai fatto Passaggio 11: installa Apigee hybrid utilizzando i grafici Helm.

Quando configuri Workload Identity su GKE, devi associare gli account di servizio Google Cloud a gli account di servizio Kubernetes nel cluster Kubernetes. In questo modo, il servizio Kubernetes possono impersonare gli account di servizio Google Cloud e utilizzare i ruoli e autorizzazioni per l'autenticazione con i componenti ibridi.

Segui queste istruzioni per configurare Workload Identity per il tuo progetto.

Preparati a configurare Workload Identity

  1. Verifica che Workload Identity sia abilitato nel file degli override. Dovrebbe essere attivato il file di override nelle seguenti proprietà.
    • namespace è obbligatorio. Ad esempio:
      instanceID: "hybrid-instance-1"
      namespace: "apigee"
      
    • Se utilizzi un solo account di servizio (non di produzione) per tutti i componenti, specificalo con: gcp.workloadIdentity.gsa. Ad esempio:
        gcp:
          workloadIdentity:
            enabled: true
            gsa: "apigee-non-prod@my-hybrid-project.iam.gserviceaccount.com"
        
    • Se utilizzi un account di servizio separato per ogni componente (installazioni di produzione), specificare l'account di servizio con la proprietà gsa del componente. Ad esempio:
        logger:
          gsa: "apigee-logger@my-hybrid-project.iam.gserviceaccount.com"
        

    Consulta: gcp.workloadIdentity.enabled.

  2. Verifica che l'attuale configurazione di gcloud sia impostata sul tuo ID progetto Google Cloud con il seguente comando:
    gcloud config get project
  3. Se necessario, imposta l'attuale configurazione di gcloud:

    gcloud config set project $PROJECT_ID
  4. Verifica che Workload Identity sia abilitato per il tuo cluster GKE. Quando hai creato il cluster nel Passaggio 1: crea un cluster, il passaggio 6 era Abilitare Workload Identity. Puoi verificare se Workload Identity è abilitato eseguendo questo comando :

    Cluster a livello di regione

    gcloud container clusters describe $CLUSTER_NAME \
      --region $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten 'workloadIdentityConfig'

    Cluster di zona

    gcloud container clusters describe $CLUSTER_NAME \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten 'workloadIdentityConfig'

    L'output dovrebbe avere l'aspetto seguente:

      ---
      workloadPool: PROJECT_ID.svc.id.goog

    Se invece vedi null nei risultati, esegui questo comando per abilitare Workload Identity per il tuo cluster:

    Cluster a livello di regione

    gcloud container clusters update $CLUSTER_NAME \
      --workload-pool=$PROJECT_ID.svc.id.goog \
      --project $PROJECT_ID \
      --region $CLUSTER_LOCATION

    Cluster di zona

    gcloud container clusters update  $CLUSTER_NAME \
      --workload-pool=$PROJECT_ID.svc.id.goog \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID
  5. Abilita Workload Identity per ogni pool di nodi con i comandi seguenti. Questa operazione può possono richiedere fino a 30 minuti per ciascun nodo:

    Cluster a livello di regione

    gcloud container node-pools update NODE_POOL_NAME \
      --cluster=$CLUSTER_NAME \
      --region $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --workload-metadata=GKE_METADATA

    Cluster di zona

    gcloud container node-pools update NODE_POOL_NAME \
      --cluster=$CLUSTER_NAME \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --workload-metadata=GKE_METADATA

    Dove NODE_POOL_NAME è il nome di ogni pool di nodi. Nella maggior parte dei casi, di Compute Engine, i due pool di nodi predefiniti sono denominati apigee-data e apigee-runtime.

  6. Verifica che Workload Identity sia abilitato sui tuoi pool di nodi con i seguenti comandi:

    Cluster a livello di regione

    gcloud container node-pools describe apigee-data \
      --cluster $CLUSTER_NAME \
      --region $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten "config:"
    gcloud container node-pools describe apigee-runtime \
      --cluster $CLUSTER_NAME \
      --region $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten "config:"

    Cluster di zona

    gcloud container node-pools describe apigee-data \
      --cluster $CLUSTER_NAME \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten "config:"
    gcloud container node-pools describe apigee-runtime \
      --cluster $CLUSTER_NAME \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten "config:"

    L'output dovrebbe essere simile al seguente:

    ---
    diskSizeGb: 100
    diskType: pd-standard
    ...
    workloadMetadataConfig:
      mode: GKE_METADATA
        

Configurazione di Workload Identity

Utilizza la seguente procedura per abilitare Workload Identity per i seguenti componenti ibridi:

  • apigee-datastore
  • apigee-telemetry
  • apigee-org
  • apigee-env

Quando esegui helm upgrade con --dry-run per apigee-datastore, apigee-env, apigee-org e apigee-telemetry, l'output includerà devi configurare Workload Identity con i nomi corretti per l'Arabia Saudita.

Ad esempio:

helm upgrade datastore apigee-datastore/ \
  --namespace $NAMESPACE \
  -f overrides.yaml \
  --dry-run
NAME: datastore
  ...
For C* backup GKE Workload Identity, please make sure to add the below membership to the IAM policy binding using the respective kubernetes SA (KSA).
  gcloud iam service-accounts add-iam-policy-binding  \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-cassandra-backup-sa]" \
        --project :my-project
  1. Ottieni il comando per configurare Workload Identity per apigee-datastore ed eseguilo sotto NOTES: nell'output.
    helm upgrade datastore apigee-datastore/ \
      --namespace $NAMESPACE \
      -f overrides.yaml \
      --dry-run
  2. Ottieni i comandi per configurare Workload Identity per apigee-telemetry ed eseguili in NOTES: nell'output.
    helm upgrade telemetry apigee-telemetry/ \
      --namespace $NAMESPACE \
      -f overrides.yaml \
      --dry-run
  3. Ottieni i comandi per configurare Workload Identity per apigee-org ed eseguili in NOTES: nell'output.
    helm upgrade $ORG_NAME apigee-org/ \
      --namespace $NAMESPACE \
      -f overrides.yaml \
      --dry-run
  4. Ottieni i comandi per configurare Workload Identity per apigee-env ed eseguili in NOTES: nell'output.
    helm upgrade $ENV_NAME apigee-env/ \
      --namespace $NAMESPACE \
      --set env=ENV_NAME \
      -f overrides.yaml \
      --dry-run

    Ripeti questo passaggio per ogni ambiente dell'installazione.

  5. (Facoltativo) Puoi visualizzare lo stato dei tuoi account di servizio Kubernetes in Kubernetes: pagina Panoramica dei carichi di lavoro nella Google Cloud Console.

    Vai a Carichi di lavoro

Passaggi successivi

Nei prossimi configurerai il gateway in entrata Apigee ed eseguirai il deployment di un proxy per testare l'installazione.

Passaggio successivo

(SUCCESSIVO) Passaggio 1: esponi Apigee Ingress 2