Abilitazione di Workload Identity su GKE in corso...

Questo argomento spiega come abilitare Workload Identity per Apigee hybrid su GKE.

Se utilizzi Apigee hybrid AKS o EKS, segui le istruzioni in Abilitare la federazione delle identità per i carichi di lavoro su AKS ed EKS.

Panoramica

Workload Identity è un modo per consentire alle applicazioni in esecuzione all'interno di GKE (Google Kubernetes Engine) di per accedere ai servizi Google Cloud. Per una panoramica di Workload Identity, vedi:

Un account di servizio Google Cloud IAM è un'identità che un'applicazione può utilizzare per effettuare richieste API di Google. Questi account di servizio sono chiamati "GSA" (servizio Google Account) nel documento. Per ulteriori informazioni sulle sessioni di autenticazione, consulta Account di servizio.

Separatamente, Kubernetes ha anche il concetto di account di servizio. Un account di servizio fornisce per i processi eseguiti in un pod. Gli account di servizio Kubernetes sono risorse Kubernetes, mentre gli account di servizio Google sono specifici di Google Cloud. Per informazioni sul servizio Kubernetes gli account, vedi Configura gli account di servizio per i pod nella documentazione di Kubernetes.

Apigee crea e utilizza un account di servizio Kubernetes per ogni tipo di componente la prima volta installare i grafici Helm per questi componenti. L'abilitazione di Workload Identity consente per interagire con il cluster Kubernetes account di servizio.

Variabili di ambiente utilizzate in queste procedure

Queste procedure utilizzano le seguenti variabili di ambiente. Imposta queste opzioni nella shell dei comandi, oppure sostituiscili negli esempi di codice con i valori effettivi:

  • CLUSTER_LOCATION: la regione o la zona del cluster Kubernetes, ad esempio: us-west1.
  • CLUSTER_NAME: il nome del cluster.
  • ENV_NAME: nome dell'ambiente Apigee.
  • ORG_NAME: il nome della tua organizzazione Apigee.
  • PROJECT_ID: l'ID del tuo progetto Google Cloud.
  • NAMESPACE: il tuo spazio dei nomi Apigee (di solito "apigee").

Verifica le variabili di ambiente:

echo $PROJECT_ID
echo $ORG_NAME
echo $ENV_NAME
echo $NAMESPACE
echo $CLUSTER_LOCATION
echo $CLUSTER_NAME
CLUSTER_NAME

Inizializza le variabili necessarie:

export PROJECT_ID=my-project-id
export ORG_NAME=$PROJECT_ID
export ENV_NAME=my-environment-name
export NAMESPACE=apigee
export CLUSTER_LOCATION=my-cluster-location
export CLUSTER_NAME=hybrid-base-directory/apigeectl

File delle chiavi di Workload Identity e degli account di servizio

Quando si esegue Apigee hybrid su GKE, la prassi standard è creare e scaricare (.json file) per ciascuno degli account di servizio. Quando utilizzi Workload Identity, non è necessario scaricare le chiavi private degli account di servizio e aggiungerle ai cluster GKE.

Se hai scaricato i file delle chiavi degli account di servizio nell'ambito dell'installazione ibrida di Apigee, puoi eliminarli dopo aver abilitato Workload Identity. Nella maggior parte delle installazioni, risiedono nel per il carattere di ogni componente.

Abilita Workload Identity per Apigee ibrido

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

Installazione migrata e Workload Identity

Se hai eseguito la migrazione del cluster da apigeectl con lo strumento ibrido di migrazione Apigee, la sintassi di override per Workload Identity è stata modificata. Dovrai controllare seguenti proprietà nel file di override:

  • namespace è obbligatorio. Ad esempio:
    instanceID: "hybrid-instance-1"
    namespace: "apigee"
    
  • La gcp.workloadIdentity.enabled sostituisce gcp.workloadIdentityEnabled proprietà. Ad esempio:
    gcp:
      workloadIdentity:
        enabled: true
  • Per le installazioni di produzione, ogni componente ha una proprietà gsa. Il valore per proprietà è l'indirizzo email dell'account di servizio Google IAM per l'account di servizio di strumento di authoring. Ad esempio:
    watcher
      gsa: apigee-watcher@my-hybrid-project.iam.gserviceaccount.com
    
  • Per le installazioni non di produzione, puoi fornire un'unica istanza nella gcp.workloadIdentity.gsa proprietà.
    gcp
      workloadIdentity
        gsa: apigee-watcher@my-hybrid-project.iam.gserviceaccount.com
    
  • Con i grafici Helm per Apigee hybrid, puoi combinare le appliance di produzione e non di produzione per Workload Identity. Tu puoi specificare un singolo gcp.workloadIdentity.gsa e specifica singole cartelle per componenti specifici. I valori che specifichi i singoli componenti sostituiranno il valore specificato gcp.workloadIdentity.gsa solo per quel componente.

Preparati a configurare Workload Identity

  1. Verifica che Workload Identity sia abilitato nel file degli override. Dovrebbe essere attivato il file di override e dovresti avere valori per le seguenti proprietà di configurazione:
  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-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.

Verifica Workload Identity

  1. Verifica che i passaggi abbiano funzionato:
    gcloud config set project $PROJECT_ID
    
    kubectl run --rm -it --image google/cloud-sdk:slim \
      --namespace $NAMESPACE workload-identity-test\
      -- gcloud auth list

    Se non vedi un prompt dei comandi, prova a premere Invio.

    Se i passaggi sono stati eseguiti correttamente, dovresti vedere una risposta simile alla seguente:

                       Credentialed Accounts
    ACTIVE  ACCOUNT
    *       GSA@PROJECT_ID.iam.gserviceaccount.com
    
  2. Se esegui l'upgrade da un'installazione precedente, pulisci i secret che contenevano chiavi private dell'account di servizio:
    kubectl delete secrets -n $NAMESPACE $(k get secrets -n $NAMESPACE | grep svc-account | awk '{print $1}')
    
  3. Controlla i log:
    kubectl logs -n $NAMESPACE -l app=apigee=synchronizer,env=$ENV_NAME,org=$ORG_NAME apigee-synchronizer
    
  4. (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