- v1.12 (più recente)
- Versione 1.11
- Versione 1.10
- Elenco delle versioni supportate
- Versione 1.9
- Versione 1.8
- Versione 1.7
- Versione 1.6
- Versione 1.5
- Versione 1.4
- Versione 1.3
- Versione 1.2
- Versione 1.1
Versioni supportate:
Versioni non supportate:
Solo GKE con Workload Identity: configura Workload Identity
Segui questi passaggi se configuri il file di override per Workload Identity su GKE nel Passaggio 6: configura il cluster.
Se non utilizzi Workload Identity su GKE, vai alla Parte 3, Passaggio 1: esponi il gateway in entrata di Apigee.
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 effettuare chiamate API autorizzate mediante l'autenticazione come account di servizio stesso. Agli account di servizio Google Cloud possono essere assegnati ruoli e autorizzazioni simili a quelli di un singolo utente. Quando un'applicazione si autentica come account di servizio, ha accesso a tutte le risorse a cui 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 l'installazione ibrida di Apigee nel Passaggio 4: crea gli account di servizio. Apigee utilizza questi account di servizio per autenticare i componenti ibridi.
Gli account di servizio Kubernetes sono simili agli account di servizio Google Cloud. Un account di servizio Kubernetes fornisce un'identità per i processi eseguiti in un pod e consente di eseguire l'autenticazione sul server API in modo simile a un utente. Per saperne di più sugli account di servizio Kubernetes, consulta Configurare gli account di servizio per i pod.
Lo strumento apigeectl
ha creato la maggior parte degli account di servizio Kubernetes necessari ad
Apigee hybrid quando hai eseguito apigeectl apply
nella procedura precedente.
Quando configuri Workload Identity su GKE, associ gli account di servizio Google Cloud agli account di servizio Kubernetes nel cluster Kubernetes. In questo modo, gli account di servizio Kubernetes possono impersonare gli account di servizio Google Cloud e utilizzare i ruoli e le autorizzazioni assegnati per l'autenticazione con i componenti ibridi.
Segui queste istruzioni per configurare Workload Identity per il tuo progetto.
Preparati a configurare Workload Identity
Queste procedure utilizzano le seguenti variabili di ambiente. Verifica che siano definiti e definisci quelli che non lo sono:
echo $APIGEECTL_HOMEecho $CLUSTER_LOCATION
echo $ENV_NAME
echo $HYBRID_FILES
echo $NAMESPACE
echo $PROJECT_ID
echo $ORG_NAME
- Verifica che la configurazione
gcloud
attuale sia impostata sul tuo ID progetto Google Cloud con il seguente comando:gcloud config get project
- Crea l'account di servizio Kubernetes
apigee-cassandra-restore
.Quando hai applicato la configurazione eseguendo
apigeectl apply
, il comando ha creato la maggior parte degli account di servizio Kubernetes necessari per Workload Identity.Per creare l'account di servizio Kubernetes
apigee-cassandra-restore
, eseguiapigeectl apply
con il flag--restore
:$APIGEECTL_HOME/apigeectl apply -f $HYBRID_FILES/overrides/overrides.yaml --restore
- 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 prevedeva l'abilitazione di 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 il comando seguente 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
-
Abilita Workload Identity per ogni pool di nodi con i seguenti comandi. Questa operazione può 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 delle installazioni ibride di Apigee, i due pool di nodi predefiniti sono denominati
apigee-data
eapigee-runtime
. - 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
- Recupera un elenco dei nomi degli account di servizio Google Cloud relativi al tuo progetto. Questi nomi ti serviranno per associare gli account di servizio Kubernetes al fine di configurare Workload Identity. Per le installazioni non di produzione, deve esistere un solo account di servizio Google. Per le installazioni di produzione dovrebbero essere otto.
Utilizza il seguente comando per visualizzare l'elenco dei nomi:
gcloud iam service-accounts list --project $PROJECT_ID
L'output dovrebbe essere simile al seguente:
Non di produzione
Per ambienti non di produzione:
DISPLAY NAME EMAIL DISABLED apigee-non-prod apigee-non-prod@my_project_id.iam.gserviceaccount.com False
Produzione
Per ambienti non di produzione:
DISPLAY NAME EMAIL DISABLED apigee-cassandra apigee-cassandra@my_project_id.iam.gserviceaccount.com False apigee-logger apigee-logger@my_project_id.iam.gserviceaccount.com False apigee-mart apigee-mart@my_project_id.iam.gserviceaccount.com False apigee-metrics apigee-metrics@my_project_id.iam.gserviceaccount.com False apigee-runtime apigee-runtime@my_project_id.iam.gserviceaccount.com False apigee-synchronizer apigee-synchronizer@my_project_id.iam.gserviceaccount.com False apigee-udca apigee-udca@my_project_id.iam.gserviceaccount.com False apigee-watcher apigee-watcher@my_project_id.iam.gserviceaccount.com False
- Recupera un elenco dei nomi degli account di servizio Kubernetes. Questo elenco di nomi sarà necessario da associare ai tuoi account di servizio Google Cloud più avanti in questa procedura. Usa il seguente comando:
kubectl get sa -n $NAMESPACE
L'output dovrebbe essere simile al seguente. Gli account di servizio Kubernetes in grassetto sono quelli che devi associare ai tuoi account di servizio Google Cloud:
NAME SECRETS AGE apigee-cassandra-backup 1 11m apigee-cassandra-restore 1 11m apigee-cassandra-schema-setup-my-project-id-123abcd-sa 1 11m apigee-cassandra-schema-val-my-project-id-123abcd 1 11m apigee-cassandra-user-setup-my-project-id-123abcd-sa 1 11m apigee-connect-agent-my-project-id-123abcd-sa 1 11m apigee-datastore-default-sa 1 11m apigee-ingressgateway 1 11m apigee-ingressgateway-my-project-id-123abcd 1 11m apigee-ingressgateway-manager 1 11m apigee-init 1 11m apigee-mart-my-project-id-123abcd-sa 1 11m apigee-metrics-sa 1 11m apigee-mint-task-scheduler-my-project-id-123abcd-sa 1 11m apigee-redis-default-sa 1 11m apigee-redis-envoy-default-sa 1 11m apigee-runtime-my-project-id-env-name-234bcde-sa 1 11m apigee-synchronizer-my-project-id-env-name-234bcde-sa 1 11m apigee-udca-my-project-id-123abcd-sa 1 11m apigee-udca-my-project-id-env-name-234bcde-sa 1 11m apigee-watcher-my-project-id-123abcd-sa 1 11m default 1 11m
Se necessario, imposta la configurazione attuale di gcloud
:
gcloud config set project $PROJECT_ID
Configurazione di Workload Identity
Per abilitare Workload Identity per l'installazione ibrida:
-
Per ogni componente Apigee, annota gli account di servizio Kubernetes corrispondenti con l'account di servizio Google per il componente.
I passaggi seguenti utilizzano due variabili di ambiente. Dovrai reimpostare i valori di queste variabili prima di ogni insieme di comandi:
- GSA_NAME: il nome di un account di servizio Google. Questi sono gli account di servizio che hai creato con lo strumento
create-service-account
nel Passaggio 4: crea gli account di servizio. - KSA_NAME: il nome di un account di servizio Kubernetes. Questi sono gli account che hai elencato sopra con il comando
kubectl get sa -n $NAMESPACE
, ad esempio:apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa
.
- GSA_NAME: il nome di un account di servizio Google. Questi sono gli account di servizio che hai creato con lo strumento
- Cassandra
Configura Workload Identity per il componente Cassandra.
Il componente Cassandra ha sei account di servizio Kubernetes associati:
apigee-cassandra-backup
apigee-cassandra-restore
apigee-cassandra-schema-setup
apigee-cassandra-schema-val
(val
= convalida)apigee-cassandra-user-setup
apigee-datastore-default
Non di produzione
Configura l'
apigee-cassandra-backup
account di servizio Kubernetes- Definisci le variabili di ambiente
KSA_NAME
eGSA_NAME
:GSA_NAME="apigee-non-prod"
KSA_NAME="apigee-cassandra-backup"
- Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
L'output dovrebbe contenere una riga che descrive l'annotazione, simile alla seguente:
Annotations: iam.gke.io/gcp-service-account: apigee-non-prod@my-project-id.iam.gserviceaccount.com
Configura l'
apigee-cassandra-restore
account di servizio Kubernetes- Ridefinisci la
KSA_NAME
variabile di ambiente:KSA_NAME="apigee-cassandra-restore"
- Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Configura l'
apigee-cassandra-schema-setup
account di servizio Kubernetes- Ridefinisci la
KSA_NAME
variabile di ambiente:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
ad esempio:apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa
. - Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Configura l'
apigee-cassandra-schema-val
account di servizio Kubernetes- Ridefinisci la
KSA_NAME
variabile di ambiente:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
ad esempio:apigee-cassandra-schema-val-hybrid-example-project-123abcd
. - Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Configura l'
apigee-cassandra-user-setup
account di servizio Kubernetes- Ridefinisci la
KSA_NAME
variabile di ambiente:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
ad esempio:apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa
. - Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Configura l'
apigee-datastore-default-sa
account di servizio Kubernetes- Ridefinisci la
KSA_NAME
variabile di ambiente:KSA_NAME="apigee-datastore-default-sa"
- Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produzione
Configura l'
apigee-cassandra-backup
account di servizio Kubernetes- Definisci le variabili di ambiente
KSA_NAME
eGSA_NAME
:GSA_NAME="apigee-cassandra"
KSA_NAME="apigee-cassandra-backup"
- Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
L'output dovrebbe contenere una riga che descrive l'annotazione, simile alla seguente:
Annotations: iam.gke.io/gcp-service-account: apigee-cassandra@my-project-id.iam.gserviceaccount.com
Configura l'
apigee-cassandra-restore
account di servizio Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME
:KSA_NAME="apigee-cassandra-restore"
- Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
Configura l'
apigee-cassandra-schema-setup
account di servizio Kubernetes- Ridefinisci la
KSA_NAME
variabile di ambiente:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
ad esempio:apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa
. - Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
Configura l'
apigee-cassandra-schema-val
account di servizio Kubernetes- Ridefinisci la
KSA_NAME
variabile di ambiente:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
ad esempio:apigee-cassandra-schema-val-hybrid-example-project-123abcd
. - Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Configura l'
apigee-cassandra-user-setup
account di servizio Kubernetes- Ridefinisci la
KSA_NAME
variabile di ambiente:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
ad esempio:apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa
. - Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Configura l'
apigee-datastore-default-sa
account di servizio Kubernetes- Ridefinisci la
KSA_NAME
variabile di ambiente:KSA_NAME="apigee-datastore-default-sa"
- Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Apigee Connect
Configurare Workload Identity per il componente Apigee Connect.
Non di produzione
- Definisci la variabile di ambiente
KSA_NAME
:KSA_NAME="apigee-connect-agent-service-account-name-sa"
ad esempio:apigee-connect-agent-hybrid-example-project-123abcd-sa
. - Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produzione
- Definisci le variabili di ambiente
KSA_NAME
eGSA_NAME
:GSA_NAME="apigee-mart"
ad esempio:KSA_NAME="apigee-connect-agent-service-account-name-sa"
apigee-connect-agent-hybrid-example-project-123abcd-sa
. - Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definisci la variabile di ambiente
- MART
Configurare Workload Identity per il componente MART.
Non di produzione
- Definisci la variabile di ambiente
KSA_NAME
:KSA_NAME="apigee-mart-service-account-name-sa"
ad esempio:apigee-mart-hybrid-example-project-123abcd-sa
. - Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produzione
- Definisci le variabili di ambiente
KSA_NAME
eGSA_NAME
:GSA_NAME="apigee-mart"
ad esempio:KSA_NAME="apigee-mart-service-account-name-sa"
apigee-mart-hybrid-example-project-123abcd-sa
. - Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definisci la variabile di ambiente
- Metriche Apigee
Configurare Workload Identity per il componente delle metriche Apigee.
Non di produzione
- Definisci le
KSA_NAME
variabili di ambiente:KSA_NAME="apigee-metrics-sa"
- Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produzione
- Definisci le variabili di ambiente
KSA_NAME
eGSA_NAME
:GSA_NAME="apigee-metrics"
KSA_NAME="apigee-metrics-sa"
- Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definisci le
- UDCA (a livello di organizzazione)
Configura Workload Identity per il componente UDCA a livello di organizzazione.
UDCA viene implementata in ambiti sia a livello di organizzazione che a livello di ambiente. Di conseguenza, esistono due account di servizio Kubernetes separati per UDCA, uno per ogni ambito. Puoi distinguerli in base al nome dell'account. L'account dell'ambito env include il nome dell'ambiente nel nome dell'account di servizio. Ad esempio:
- A livello di organizzazione:
apigee-udca-my-project-id-123abcd-sa
, dovemy-project-id
è l'ID progetto del nome. - A livello di ambiente:
apigee-udca-my-project-id-my-env-234bcde-sa
dovemy-env
è il nome dell'ambiente.
Non di produzione
- Definisci le
KSA_NAME
variabili di ambiente:KSA_NAME="apigee-udca-service-account-name-sa"
ad esempio:apigee-udca-hybrid-example-project-123abcd-sa
. - Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produzione
- Definisci le variabili di ambiente
KSA_NAME
eGSA_NAME
:GSA_NAME="apigee-udca"
ad esempio:KSA_NAME="apigee-udca-service-account-name-sa"
apigee-udca-hybrid-example-project-123abcd-sa
. - Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- A livello di organizzazione:
- Smartwatch di Apigee
Configura Workload Identity per il componente Apigee Watcher.
Non di produzione
- Definisci le
KSA_NAME
variabili di ambiente:KSA_NAME="apigee-watcher-service-account-name-sa"
ad esempio:apigee-watcher-hybrid-example-project-123abcd-sa
. - Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produzione
- Definisci le variabili di ambiente
KSA_NAME
eGSA_NAME
:GSA_NAME="apigee-watcher"
ad esempio:KSA_NAME="apigee-watcher-service-account-name-sa"
apigee-watcher-hybrid-example-project-123abcd-sa
. - Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definisci le
- Durata
Configura Workload Identity per il componente Apigee Runtime.
Non di produzione
- Definisci le
KSA_NAME
variabili di ambiente:KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
ad esempio:apigee-runtime-hybrid-example-project-example-env-234bcde-sa
. - Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produzione
- Definisci le variabili di ambiente
KSA_NAME
eGSA_NAME
:GSA_NAME="apigee-runtime"
ad esempio:KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
apigee-runtime-hybrid-example-project-example-env-234bcde-sa
. - Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definisci le
- Sincronizzatore
Configura Workload Identity per il componente sincronizzatore.
Non di produzione
- Definisci le
KSA_NAME
variabili di ambiente:KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
ad esempio:apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa
. - Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produzione
- Definisci le variabili di ambiente
KSA_NAME
eGSA_NAME
:GSA_NAME="apigee-synchronizer"
ad esempio:KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa
. - Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definisci le
- UDCA (a livello di ambiente)
Configura Workload Identity per il componente UDCA a livello di ambiente.
Non di produzione
- Definisci le
KSA_NAME
variabili di ambiente:KSA_NAME="apigee-udca-env-level-service-account-name-sa"
ad esempio:apigee-udca-hybrid-example-project-example-env-234bcde-sa
. - Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produzione
- Definisci le variabili di ambiente
KSA_NAME
eGSA_NAME
:GSA_NAME="apigee-udca"
ad esempio:KSA_NAME="apigee-udca-env-level-service-account-name-sa"
apigee-udca-hybrid-example-project-example-env-234bcde-sa
. - Associa il ruolo IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Annota l'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definisci le
- (Facoltativo) Elimina gli eventuali file della chiave dell'account di servizio scaricati.
Se hai creato gli account di servizio Google con lo strumento
create-service-account
, è possibile che questo abbia creato chiavi degli account di servizio e scaricato i file delle chiavi.json
. Quando utilizzi Workload Identity su GKE, non hai bisogno di questi file di chiave.Puoi eliminare i file della chiave con il seguente comando:
rm $HYBRID_FILES/service-accounts/*.json
Verifica Workload Identity
- (Facoltativo) Puoi visualizzare lo stato dei tuoi account di servizio Kubernetes nella pagina Kubernetes: panoramica dei carichi di lavoro nella Google Cloud Console.
- Per controllare nuovamente lo stato del deployment con
apigeectl check-ready
:${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml