Applica la configurazione al cluster
Per installare Apigee hybrid nel cluster:
- Assicurati di essere nella directory
hybrid-base-directory/hybrid-files
.cd $HYBRID_FILES
- Verifica che
kubectl
sia impostato sul contesto corretto utilizzando il seguente comando. Il contesto corrente deve essere impostato sul cluster in cui esegui il deployment di Apigee hybrid.kubectl config current-context
Il risultato deve includere il nome del cluster in cui stai eseguendo il deployment di Apigee Hybrid. Ad esempio, su GKE, il nome del contesto è in genere nel formato
gke_project-id_cluster-location_cluster-name
, come in:gke_my-project_us-central1_my-cluster
Se il nome del cluster nel contesto non corrisponde, il seguente comando recupererà le credenziali
gcloud
del cluster e imposterà il contestokubectl
:Cluster a livello di regione
gcloud container clusters get-credentials $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID
Cluster zonali
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID
- Solo per le piattaforme Anthos on bare metal, AWS on GKE, EKS e GKE on prem, verifica
che la variabile
KUBECONFIG
sia impostata utilizzando il seguente comando:echo ${KUBECONFIG}
- Esegui un'inizializzazione di simulazione. Eseguire una prova simulata ti consente di verificare la presenza di eventuali errori prima di apportare modifiche al cluster. Esegui il comando
init
con il flag--dry-run
come segue:${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml --dry-run=client
- Se non sono presenti errori, esegui il comando
init
come segue:${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml
Il comando
init
installa i servizi di deployment Apigee Apigee Deployment Controller e Apigee Admission Webhook. - Per controllare lo stato del deployment, puoi utilizzare i seguenti comandi:
${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml
kubectl get pods -n apigee-system
kubectl get pods -n apigee
Quando i pod sono pronti, vai al passaggio successivo.
- Esegui una simulazione dell'installazione. Esegui il comando
apply
con il flag--dry-run
.${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml --dry-run=client
-
Se non ci sono errori, puoi applicare i
componenti di runtime specifici di Apigee al cluster con il seguente comando:
${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml
- Per controllare lo stato del deployment, esegui il comando seguente:
${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml
Ripeti questo passaggio finché tutti i pod non sono pronti. L'avvio dei pod potrebbe richiedere diversi minuti.
GKE con Workload Identity
Se utilizzi Workload Identity su GKE, segui queste istruzioni per associare gli account di servizio Kubernetes creati da apigeectl
agli account di servizio Google che hai creato nel passaggio 4: crea account di servizio e credenziali.
Queste procedure utilizzano le seguenti variabili di ambiente. Impostali nella shell dei comandi o sostituiscili negli esempi di codice con i valori effettivi:
APIGEECTL_HOME
: la directory in cui hai installatoapigeectl
.CLUSTER_LOCATION
: la regione o la zona del cluster, ad esempio:us-west1
.CLUSTER_LOCATION
: il nome del cluster.ENV_NAME
: il nome dell'ambiente Apigee.NAMESPACE
: lo spazio dei nomi Apigee. Per impostazione predefinita,apigee
.HYBRID_FILES
: la directory dei file ibridi, ad esempiohybrid-base-directory/hybrid-files
.ORG_NAME
: il nome della tua organizzazione Apigee.PROJECT_ID
: l'ID del tuo progetto Google Cloud.
Verifica le variabili di ambiente:
echo $APIGEECTL_HOMEecho $CLUSTER_LOCATION
echo $ENV_NAME
echo $HYBRID_FILES
echo $NAMESPACE
echo $ORG_NAME
echo $PROJECT_ID
Inizializza le variabili necessarie:
export APIGEECTL_HOME=hybrid-base-directory/apigeectlexport CLUSTER_LOCATION=my-cluster-location
export ENV_NAME=my-environment-name
export HYBRID_FILES=hybrid-base-directory/hybrid-files
export NAMESPACE=apigee
export ORG_NAME=$PROJECT_ID
export PROJECT_ID=my-project-id
- (Facoltativo) Elimina i file delle chiavi dell'account di servizio.
Quando esegui Apigee Hybrid su GKE, la prassi standard è creare e scaricare le chiavi private (file
.json
) per ciascuno degli account di servizio. Quando utilizzi Workload Identity, non devi scaricare le chiavi private dell'account di servizio e aggiungerle ai cluster GKE.Puoi eliminare i file delle chiavi con il seguente comando:
rm $HYBRID_FILES/service-accounts/*.json
- Verifica che la configurazione
gcloud
corrente corrisponda al 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 l'identità del carico di lavoro.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: creazione di un cluster, il passaggio 6 era Abilita Workload Identity. Puoi verificare se Workload Identity è abilitato eseguendo il seguente
comando:
Cluster a livello di regione
gcloud container clusters describe $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig'
Cluster zonali
gcloud container clusters describe $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig'
Se Workload Identity è abilitato per il cluster, l'output dovrebbe essere simile al seguente:
--- workloadPool: PROJECT_ID.svc.id.goog
Se nei risultati viene visualizzato
null
, esegui il seguente comando per attivare Workload Identity per il 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 zonali
gcloud container clusters update $CLUSTER_NAME \ --workload-pool=$PROJECT_ID.svc.id.goog \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID
- Verifica che Workload Identity sia abilitato nei 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 zonali
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 avere il seguente aspetto:
--- diskSizeGb: 100 diskType: pd-standard ... workloadMetadataConfig: mode: GKE_METADATA
Se l'output non contiene una riga per
workloadMetadataConfig:
, abilita Workload Identity per ogni pool di nodi con i seguenti comandi. Questa operazione può richiedere fino a 30 minuti: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 zonali
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 di Apigee hybrid, i due pool di nodi predefiniti sono denominati
apigee-data
eapigee-runtime
. - Controlla i nomi degli account di servizio Google per il tuo progetto con il seguente comando:
gcloud iam service-accounts list --project $PROJECT_ID
L'output dovrebbe avere il seguente aspetto:
Non prod
Per gli ambienti non di produzione:
DISPLAY NAME EMAIL DISABLED apigee-non-prod apigee-non-prod@my_project_id.iam.gserviceaccount.com False
Produzione
Per gli 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
- Verifica gli account di servizio con 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 dovrai annotare con i tuoi account di servizio Google:
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
-
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. Reimposta i valori di queste variabili prima di ogni serie di comandi:
- GSA_NAME: il nome di un account di servizio Google. Si tratta degli 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. Si tratta degli account elencati 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. Si tratta degli account di servizio che hai creato con lo strumento
- 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 prod
I passaggi seguenti utilizzano due variabili di ambiente. Reimposta i valori di queste variabili prima di ogni serie di comandi:
- GSA_NAME: il nome di un account di servizio Google. Si tratta degli 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. Si tratta degli account elencati sopra con il comando
kubectl get sa -n $NAMESPACE
.
apigee-cassandra-backup
Service account Kubernetes- Definisci le variabili di ambiente
KSA_NAME
eGSA_NAME
:GSA_NAME="apigee-non-prod"
KSA_NAME="apigee-cassandra-backup"
- Collega 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
- Aggiungi un'annotazione all'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 descriva l'annotazione, simile alla seguente:
Annotations: iam.gke.io/gcp-service-account: apigee-non-prod@my-project-id.iam.gserviceaccount.com
apigee-cassandra-restore
Service account Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME
:KSA_NAME="apigee-cassandra-restore"
- Collega 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
- Aggiungi un'annotazione all'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-cassandra-schema-setup
Service account Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME
: ad esempio:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa
. - Collega 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
- Aggiungi un'annotazione all'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-cassandra-schema-val
Service account Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME
: ad esempio:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd
. - Collega 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
- Aggiungi un'annotazione all'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-cassandra-user-setup
Service account Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME
: ad esempio:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa
. - Collega 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
- Aggiungi un'annotazione all'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-datastore-default-sa
Service account Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME
:KSA_NAME="apigee-datastore-default-sa"
- Collega 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
- Aggiungi un'annotazione all'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
apigee-cassandra-backup
Service account Kubernetes- Definisci le variabili di ambiente
KSA_NAME
eGSA_NAME
:GSA_NAME="apigee-cassandra"
KSA_NAME="apigee-cassandra-backup"
- Collega 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
- Aggiungi un'annotazione all'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 descriva l'annotazione, simile alla seguente:
Annotations: iam.gke.io/gcp-service-account: apigee-cassandra@my-project-id.iam.gserviceaccount.com
apigee-cassandra-restore
Service account Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME
:KSA_NAME="apigee-cassandra-restore"
- Collega 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
- Aggiungi un'annotazione all'account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
apigee-cassandra-schema-setup
Service account Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME
: ad esempio:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa
. - Aggiungi un'annotazione all'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
Collega 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
apigee-cassandra-schema-val
Service account Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME
: ad esempio:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd
. - Collega 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
- Aggiungi un'annotazione all'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-cassandra-user-setup
Service account Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME
: ad esempio:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa
. - Collega 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
- Aggiungi un'annotazione all'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-datastore-default-sa
Service account Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME
:KSA_NAME="apigee-datastore-default-sa"
- Collega 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
- Aggiungi un'annotazione all'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
Non prod
- Definisci la variabile di ambiente
KSA_NAME
: ad esempio:KSA_NAME="apigee-connect-agent-service-account-name-sa"
apigee-connect-agent-hybrid-example-project-123abcd-sa
. - Collega 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
- Aggiungi un'annotazione all'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
: ad esempio:GSA_NAME="apigee-mart"
KSA_NAME="apigee-connect-agent-service-account-name-sa"
apigee-connect-agent-hybrid-example-project-123abcd-sa
. - Collega 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
- Aggiungi un'annotazione all'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
Non prod
- Definisci la variabile di ambiente
KSA_NAME
: ad esempio:KSA_NAME="apigee-mart-service-account-name-sa"
apigee-mart-hybrid-example-project-123abcd-sa
. - Collega 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
- Aggiungi un'annotazione all'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
: ad esempio:GSA_NAME="apigee-mart"
KSA_NAME="apigee-mart-service-account-name-sa"
apigee-mart-hybrid-example-project-123abcd-sa
. - Collega 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
- Aggiungi un'annotazione all'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
Non prod
- Definisci le variabili di ambiente
KSA_NAME
:KSA_NAME="apigee-metrics-sa"
- Collega 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
- Aggiungi un'annotazione all'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"
- Collega 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
- Aggiungi un'annotazione all'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 variabili di ambiente
- UDCA (a livello di organizzazione)
L'accesso a più dati aziendali è implementato sia a livello di organizzazione che di ambiente. Pertanto, esistono due account di servizio Kubernetes separati per UDCA, uno per ogni ambito. Puoi distinguerli dal nome dell'account. L'account ambito-ambiente 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. - Env-level:
apigee-udca-my-project-id-my-env-234bcde-sa
dovemy-env
è il nome dell'ambiente.
Non prod
- Definisci le variabili di ambiente
KSA_NAME
: ad esempio:KSA_NAME="apigee-udca-service-account-name-sa"
apigee-udca-hybrid-example-project-123abcd-sa
. - Collega 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
- Aggiungi un'annotazione all'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
: ad esempio:GSA_NAME="apigee-udca"
KSA_NAME="apigee-udca-service-account-name-sa"
apigee-udca-hybrid-example-project-123abcd-sa
. - Collega 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
- Aggiungi un'annotazione all'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:
- Apigee Watcher
Non prod
- Definisci le variabili di ambiente
KSA_NAME
: ad esempio:KSA_NAME="apigee-watcher-service-account-name-sa"
apigee-watcher-hybrid-example-project-123abcd-sa
. - Collega 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
- Aggiungi un'annotazione all'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
: ad esempio:GSA_NAME="apigee-watcher"
KSA_NAME="apigee-watcher-service-account-name-sa"
apigee-watcher-hybrid-example-project-123abcd-sa
. - Collega 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
- Aggiungi un'annotazione all'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 variabili di ambiente
- Tempo di esecuzione
Non prod
- Definisci le variabili di ambiente
KSA_NAME
: ad esempio:KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
apigee-runtime-hybrid-example-project-example-env-234bcde-sa
. - Collega 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
- Aggiungi un'annotazione all'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
: ad esempio:GSA_NAME="apigee-runtime"
KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
apigee-runtime-hybrid-example-project-example-env-234bcde-sa
. - Collega 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
- Aggiungi un'annotazione all'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 variabili di ambiente
- Synchronizer
Non prod
- Definisci le variabili di ambiente
KSA_NAME
: ad esempio:KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa
. - Collega 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
- Aggiungi un'annotazione all'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
: ad esempio:GSA_NAME="apigee-synchronizer"
KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa
. - Collega 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
- Aggiungi un'annotazione all'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 variabili di ambiente
- UDCA (a livello di ambiente)
Non prod
- Definisci le variabili di ambiente
KSA_NAME
: ad esempio:KSA_NAME="apigee-udca-env-level-service-account-name-sa"
apigee-udca-hybrid-example-project-example-env-234bcde-sa
. - Collega 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
- Aggiungi un'annotazione all'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
: ad esempio:GSA_NAME="apigee-udca"
KSA_NAME="apigee-udca-env-level-service-account-name-sa"
apigee-udca-hybrid-example-project-example-env-234bcde-sa
. - Collega 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
- Aggiungi un'annotazione all'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 variabili di ambiente
- (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 di nuovo lo stato del deployment con
apigeectl check-ready
:${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml
Se necessario, imposta la configurazione attuale di gcloud
:
gcloud config set project $PROJECT_ID