Aplica la configuración al clúster:
Sigue estos pasos para instalar Apigee Hybrid en tu clúster:
- Asegúrate de estar en el directorio
hybrid-base-directory/hybrid-files.cd $HYBRID_FILES
- Verifica que
kubectlesté configurado en el contexto correcto con el siguiente comando. El contexto actual se debe configurar en el clúster en el que implementas Apigee Hybrid.kubectl config current-context
El resultado debe incluir el nombre del clúster en el que implementas Apigee Hybrid. Por ejemplo, en GKE, el nombre del contexto suele tener el formato
gke_project-id_cluster-location_cluster-name, como se muestra a continuación:gke_my-project_us-central1_my-cluster
Si el nombre del clúster de nombre en el contexto no coincide, el siguiente comando obtendrá las credenciales
gclouddel clúster y establecerá el contextokubectl:Clústeres regionales
gcloud container clusters get-credentials $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID
Clústeres zonales
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID
- En el caso de las plataformas Anthos alojado en Bare Metal, AWS on GKE, EKS y GKE On-Prem únicamente, verifica
que la variable
KUBECONFIGse configure con el siguiente comando:echo ${KUBECONFIG} - Realiza una inicialización de ejecución de prueba. Realizar una ejecución de prueba te permite comprobar si hay errores antes de que se realicen cambios en el clúster. Ejecuta el comando
initcon la marca--dry-runde la siguiente manera:${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml --dry-run=client - Si no hay errores, ejecuta el comando
initde la siguiente manera:${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yamlCon el comando
init, se instalan los servicios de implementación de Apigee del controlador de implementación de Apigee y el webhook de admisión de Apigee. - Para verificar el estado de la implementación, puedes usar los siguientes comandos:
${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yamlkubectl get pods -n apigee-system
kubectl get pods -n apigee
Cuando los pods estén listos, continúa con el siguiente paso.
- Realiza una instalación de ejecución de prueba. Ejecuta el comando
applycon la marca--dry-run.${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml --dry-run=client -
Si no hay errores, puedes aplicar los componentes del entorno de ejecución específico de Apigee al clúster con el siguiente comando:
${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml - Para verificar el estado de la implementación, ejecuta el siguiente comando:
${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yamlRepite este paso hasta que los pods estén listos. Los pods pueden tardar varios minutos en iniciarse.
GKE con Workload Identity
Si usas Workload Identity en GKE, sigue estas instrucciones para asociar las cuentas de servicio de Kubernetes que creóapigeectl con las cuentas de servicio de Google que creaste en elPaso 4: Crear cuentas de servicio y credenciales.
En estos procedimientos, se usan las siguientes variables de entorno. Configúralos en el shell de comandos o reemplázalos en las muestras de código por los valores reales:
APIGEECTL_HOME: El directorio en el que instalasteapigeectl.CLUSTER_LOCATION: Es la región o la zona de tu clúster, por ejemplo:us-west1.CLUSTER_LOCATION: El nombre de tu clúster.ENV_NAME: el nombre del entorno de Apigee.NAMESPACE: el espacio de nombres de Apigee. De forma predeterminada,apigee.HYBRID_FILES: el directorio de tus archivos híbridos, por ejemplo,hybrid-base-directory/hybrid-files.ORG_NAME: el nombre de tu organización de Apigee.PROJECT_ID: el ID del proyecto de Google Cloud.
Verifica las variables de entorno:
echo $APIGEECTL_HOMEecho $CLUSTER_LOCATIONecho $ENV_NAMEecho $HYBRID_FILESecho $NAMESPACEecho $ORG_NAMEecho $PROJECT_ID
Inicializa cualquiera de las variables que necesitas:
export APIGEECTL_HOME=hybrid-base-directory/apigeectlexport CLUSTER_LOCATION=my-cluster-locationexport ENV_NAME=my-environment-nameexport HYBRID_FILES=hybrid-base-directory/hybrid-filesexport NAMESPACE=apigeeexport ORG_NAME=$PROJECT_IDexport PROJECT_ID=my-project-id
- Opcional: Borra los archivos de claves de la cuenta de servicio.
Cuando se ejecuta Apigee Hybrid en GKE, la práctica estándar es crear y descargar claves privadas (archivos
.json) para cada una de las cuentas de servicio. Cuando usas Workload Identity, no necesitas descargar claves privadas de cuentas de servicio ni agregarlas a los clústeres de GKE.Puedes borrar los archivos de claves con el siguiente comando:
rm $HYBRID_FILES/service-accounts/*.json
- Verifica la configuración actual de
gcloudpara tu ID del proyecto de Google Cloud con el siguiente comando:gcloud config get project
- Crea la cuenta de servicio
apigee-cassandra-restorede Kubernetes:Cuando aplicaste la configuración mediante la ejecución de
apigeectl apply, el comando creó la mayoría de las cuentas de servicio de Kubernetes necesarias para la identidad de la carga de trabajo.Para crear la cuenta de servicio
apigee-cassandra-restorede Kubernetes, ejecutaapigeectl applycon la marca--restore:$APIGEECTL_HOME/apigeectl apply -f $HYBRID_FILES/overrides/overrides.yaml --restore
- Verifica que Workload Identity esté habilitada para el clúster de GKE. Cuando creaste el clúster en el Paso 1: Crea un clúster, el paso 6 fue Habilitar Workload Identity. Para confirmar si Workload Identity está habilitado, ejecuta el siguiente comando:
Clústeres regionales
gcloud container clusters describe $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig'
Clústeres zonales
gcloud container clusters describe $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig'
Si Workload Identity está habilitado para el clúster, el resultado debe ser similar a lo siguiente:
--- workloadPool: PROJECT_ID.svc.id.goog
Si, en cambio, ves
nullen los resultados, ejecuta el siguiente comando para habilitar Workload Identity en tu clúster:Clústeres regionales
gcloud container clusters update $CLUSTER_NAME \ --workload-pool=$PROJECT_ID.svc.id.goog \ --project $PROJECT_ID \ --region $CLUSTER_LOCATION
Clústeres zonales
gcloud container clusters update $CLUSTER_NAME \ --workload-pool=$PROJECT_ID.svc.id.goog \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID
- Verifica que Workload Identity esté habilitada en tus grupos de nodos con los siguientes comandos:
Clústeres regionales
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:"
Clústeres zonales
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:"
Deberías obtener un resultado similar al siguiente:
--- diskSizeGb: 100 diskType: pd-standard ... workloadMetadataConfig: mode: GKE_METADATASi el resultado no contiene una línea para
workloadMetadataConfig:, habilita la identidad de carga de trabajo para cada grupo de nodos con los siguientes comandos. Esta operación puede tardar hasta 30 minutos:Clústeres regionales
gcloud container node-pools update NODE_POOL_NAME \ --cluster=$CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --workload-metadata=GKE_METADATA
Clústeres zonales
gcloud container node-pools update NODE_POOL_NAME \ --cluster=$CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --workload-metadata=GKE_METADATA
En el ejemplo anterior, NODE_POOL_NAME es el nombre de cada grupo de nodos. En la mayoría de las instalaciones híbridas de Apigee, los dos grupos de nodos predeterminados se llaman
apigee-datayapigee-runtime. - Verifica los nombres de las cuentas de servicio de Google de tu proyecto con el siguiente comando:
gcloud iam service-accounts list --project $PROJECT_ID
Deberías obtener un resultado similar al siguiente:
No producción
Para entornos que no son de producción, haz lo siguiente:
DISPLAY NAME EMAIL DISABLED apigee-non-prod apigee-non-prod@my_project_id.iam.gserviceaccount.com False
Producción
Para entornos que no son de producción, haz lo siguiente:
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 las cuentas de servicio con el siguiente comando:
kubectl get sa -n $NAMESPACE
El resultado debería ser similar al siguiente. Las cuentas de servicio de Kubernetes en negrita son las que deberás anotar con tus cuentas de servicio de 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 -
Para cada componente de Apigee, anota las cuentas de servicio de Kubernetes correspondientes con la cuenta de servicio de Google para el componente.
En los siguientes pasos, se usan dos variables de entorno. Restablecerás los valores de estas variables antes de cada conjunto de comandos:
- GSA_NAME: el nombre de una cuenta de servicio de Google. Estas son las cuentas de servicio que creaste con la herramienta de
create-service-accounten el Paso 4: Crear cuentas de servicio. - KSA_NAME: el nombre de una cuenta de servicio de Kubernetes. Estas son las cuentas que enumeraste antes con el comando
kubectl get sa -n $NAMESPACE, por ejemplo:apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa.
- GSA_NAME: el nombre de una cuenta de servicio de Google. Estas son las cuentas de servicio que creaste con la herramienta de
- Cassandra
El componente Cassandra tiene seis cuentas de servicio de Kubernetes asociadas:
apigee-cassandra-backupapigee-cassandra-restoreapigee-cassandra-schema-setupapigee-cassandra-schema-val(val= validación)apigee-cassandra-user-setupapigee-datastore-default
No producción
En los siguientes pasos, se usan dos variables de entorno. Restablecerás los valores de estas variables antes de cada conjunto de comandos:
- GSA_NAME: el nombre de una cuenta de servicio de Google. Estas son las cuentas de servicio que creaste con la herramienta de
create-service-accounten el Paso 4: Crear cuentas de servicio. - KSA_NAME: el nombre de una cuenta de servicio de Kubernetes. Estas son las cuentas que enumeraste antes con el comando
kubectl get sa -n $NAMESPACE.
Cuenta de servicio
apigee-cassandra-backupde Kubernetes- Define las variables de entorno
KSA_NAMEyGSA_NAME:GSA_NAME="apigee-non-prod"
KSA_NAME="apigee-cassandra-backup" - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
El resultado debe tener una línea que describa la anotación, similar a la siguiente:
Annotations: iam.gke.io/gcp-service-account: apigee-non-prod@my-project-id.iam.gserviceaccount.com
Cuenta de servicio
apigee-cassandra-restorede Kubernetes- Vuelve a definir la variable de entorno
KSA_NAME:KSA_NAME="apigee-cassandra-restore"
- Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Cuenta de servicio
apigee-cassandra-schema-setupde Kubernetes- Vuelve a definir la variable de entorno
KSA_NAME: por ejemplo:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa. - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Cuenta de servicio
apigee-cassandra-schema-valde Kubernetes- Vuelve a definir la variable de entorno
KSA_NAME: por ejemplo:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd. - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Cuenta de servicio
apigee-cassandra-user-setupde Kubernetes- Vuelve a definir la variable de entorno
KSA_NAME: por ejemplo:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa. - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Cuenta de servicio
apigee-datastore-default-sade Kubernetes- Vuelve a definir la variable de entorno
KSA_NAME:KSA_NAME="apigee-datastore-default-sa"
- Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Producción
Cuenta de servicio
apigee-cassandra-backupde Kubernetes- Define las variables de entorno
KSA_NAMEyGSA_NAME:GSA_NAME="apigee-cassandra"
KSA_NAME="apigee-cassandra-backup" - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
El resultado debe tener una línea que describa la anotación, similar a la siguiente:
Annotations: iam.gke.io/gcp-service-account: apigee-cassandra@my-project-id.iam.gserviceaccount.com
Cuenta de servicio
apigee-cassandra-restorede Kubernetes- Vuelve a definir la variable de entorno
KSA_NAME:KSA_NAME="apigee-cassandra-restore"
- Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
Cuenta de servicio
apigee-cassandra-schema-setupde Kubernetes- Vuelve a definir la variable de entorno
KSA_NAME: por ejemplo:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa. - Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Vincula el rol de 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
Cuenta de servicio
apigee-cassandra-schema-valde Kubernetes- Vuelve a definir la variable de entorno
KSA_NAME: por ejemplo:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd. - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Cuenta de servicio
apigee-cassandra-user-setupde Kubernetes- Vuelve a definir la variable de entorno
KSA_NAME: por ejemplo:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa. - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Cuenta de servicio
apigee-datastore-default-sade Kubernetes- Vuelve a definir la variable de entorno
KSA_NAME:KSA_NAME="apigee-datastore-default-sa"
- Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Apigee Connect
No producción
- Define la variable de entorno
KSA_NAME: por ejemplo:KSA_NAME="apigee-connect-agent-service-account-name-sa"
apigee-connect-agent-hybrid-example-project-123abcd-sa. - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Producción
- Define las variables de entorno
KSA_NAMEyGSA_NAME: por ejemplo:GSA_NAME="apigee-mart"
KSA_NAME="apigee-connect-agent-service-account-name-sa"apigee-connect-agent-hybrid-example-project-123abcd-sa. - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Define la variable de entorno
- MART
No producción
- Define la variable de entorno
KSA_NAME: por ejemplo:KSA_NAME="apigee-mart-service-account-name-sa"
apigee-mart-hybrid-example-project-123abcd-sa. - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Producción
- Define las variables de entorno
KSA_NAMEyGSA_NAME: por ejemplo:GSA_NAME="apigee-mart"
KSA_NAME="apigee-mart-service-account-name-sa"apigee-mart-hybrid-example-project-123abcd-sa. - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Define la variable de entorno
- Métricas de Apigee
No producción
- Define las variables de entorno
KSA_NAME:KSA_NAME="apigee-metrics-sa"
- Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Producción
- Define las variables de entorno
KSA_NAMEyGSA_NAME:GSA_NAME="apigee-metrics"
KSA_NAME="apigee-metrics-sa" - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Define las variables de entorno
- UDCA (nivel de organización)
El UDCA se implementa a nivel de la organización y del entorno. Por lo tanto, existen dos cuentas de servicio diferentes de Kubernetes para el UDCA, una para cada permiso. Puedes distinguirlas por el nombre de la cuenta. La cuenta con permiso de entorno incluye el nombre del entorno en el nombre de la cuenta de servicio. Por ejemplo:
- Nivel de organización:
apigee-udca-my-project-id-123abcd-sadondemy-project-ides el ID del proyecto de nombre. - Nivel de entorno:
apigee-udca-my-project-id-my-env-234bcde-sadondemy-enves el nombre del entorno.
No producción
- Define las variables de entorno
KSA_NAME: por ejemplo:KSA_NAME="apigee-udca-service-account-name-sa"
apigee-udca-hybrid-example-project-123abcd-sa. - Vincula el rol de 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 - Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com - Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Producción
- Define las variables de entorno
KSA_NAMEyGSA_NAME: por ejemplo:GSA_NAME="apigee-udca"
KSA_NAME="apigee-udca-service-account-name-sa"apigee-udca-hybrid-example-project-123abcd-sa. - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Nivel de organización:
- Apigee Watcher
No producción
- Define las variables de entorno
KSA_NAME: por ejemplo:KSA_NAME="apigee-watcher-service-account-name-sa"
apigee-watcher-hybrid-example-project-123abcd-sa. - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Producción
- Define las variables de entorno
KSA_NAMEyGSA_NAME: por ejemplo:GSA_NAME="apigee-watcher"
KSA_NAME="apigee-watcher-service-account-name-sa"apigee-watcher-hybrid-example-project-123abcd-sa. - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Define las variables de entorno
- Entorno de ejecución
No producción
- Define las variables de entorno
KSA_NAME: por ejemplo:KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
apigee-runtime-hybrid-example-project-example-env-234bcde-sa. - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Producción
- Define las variables de entorno
KSA_NAMEyGSA_NAME: por ejemplo:GSA_NAME="apigee-runtime"
KSA_NAME="apigee-runtime-env-level-service-account-name-sa"apigee-runtime-hybrid-example-project-example-env-234bcde-sa. - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Define las variables de entorno
- Sincronizador
No producción
- Define las variables de entorno
KSA_NAME: por ejemplo:KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa. - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Producción
- Define las variables de entorno
KSA_NAMEyGSA_NAME: por ejemplo:GSA_NAME="apigee-synchronizer"
KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa. - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Define las variables de entorno
- UDCA (nivel de entorno)
No producción
- Define las variables de entorno
KSA_NAME: por ejemplo:KSA_NAME="apigee-udca-env-level-service-account-name-sa"
apigee-udca-hybrid-example-project-example-env-234bcde-sa. - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Producción
- Define las variables de entorno
KSA_NAMEyGSA_NAME: por ejemplo:GSA_NAME="apigee-udca"
KSA_NAME="apigee-udca-env-level-service-account-name-sa"apigee-udca-hybrid-example-project-example-env-234bcde-sa. - Vincula el rol de 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
- Anota la cuenta de servicio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica la anotación:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Define las variables de entorno
- (Opcional) Puedes ver el estado de tus cuentas de servicio de Kubernetes en la página Descripción general de las cargas de trabajo de Kubernetes en Google Cloud console.
- Para volver a verificar el estado de la implementación con
apigeectl check-ready, haz lo siguiente:${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml
Si es necesario, establece la configuración actual gcloud:
gcloud config set project $PROJECT_ID