Configurar el proyecto y el clúster de GKE por tu cuenta
Cuando instalas Cloud Service Mesh con asmcli
, puede configurar tu proyecto y tu clúster de GKE on Google Cloud por ti si incluyes la marca --enable_all
o las marcas de habilitación más específicas.
Si prefieres hacer la configuración tú mismo en lugar de que asmcli
haga los cambios, sigue los pasos que se indican en esta página.
Si ya tienes instalada una versión anterior de Cloud Service Mesh, no tienes que hacer ningún cambio en tu proyecto ni en tu clúster antes de usar asmcli
para actualizar a la versión más reciente de Cloud Service Mesh.
De forma predeterminada, asmcli
no instala istio-ingressgateway
. Te recomendamos que implementes y gestiones el plano de control y las pasarelas por separado.
Cloud Service Mesh admite la inyección automática para las implementaciones de gateway, lo que facilita las actualizaciones de Cloud Service Mesh. Después de actualizar Cloud Service Mesh, reinicia las pasarelas igual que los servicios para aplicar la nueva configuración del plano de control. Para obtener más información, consulta el artículo sobre cómo instalar y actualizar gateways.
Antes de empezar
- Revisa los requisitos previos y los requisitos
- Planificar la instalación o la actualización
- Instalar las herramientas necesarias
Configurar el proyecto
Obtén el ID y el número del proyecto en el que se creó el clúster.
gcloud
Ejecuta el siguiente comando:
gcloud projects list
Consola
Ve a la página Panel de control de la consola de Google Cloud .
Haz clic en la lista desplegable situada en la parte superior de la página. En la ventana Seleccionar de que aparece, selecciona tu proyecto.
El ID y el número del proyecto se muestran en la tarjeta Información del proyecto del panel de control del proyecto.
Crea las siguientes variables de entorno:
Define el grupo de cargas de trabajo con el ID de proyecto:
export WORKLOAD_POOL=PROJECT_ID.svc.id.goog
Define el ID de la malla con el número de proyecto:
export MESH_ID="proj-PROJECT_NUMBER"
Asigna los roles de Gestión de Identidades y Accesos (IAM) necesarios. Si eres propietario del proyecto, tienes todos los permisos necesarios para completar la instalación. Si no eres propietario de un proyecto, necesitas que alguien que lo sea te conceda los siguientes roles de gestión de identidades y accesos específicos. En el siguiente comando, sustituye
PROJECT_ID
por el ID del proyecto del paso anterior yGCP_EMAIL_ADDRESS
por la cuenta que usas para iniciar sesión en Google Cloud.ROLES=( 'roles/servicemanagement.admin' \ 'roles/serviceusage.serviceUsageAdmin' \ 'roles/meshconfig.admin' \ 'roles/compute.admin' \ 'roles/container.admin' \ 'roles/resourcemanager.projectIamAdmin' \ 'roles/iam.serviceAccountAdmin' \ 'roles/iam.serviceAccountKeyAdmin' \ 'roles/gkehub.admin') for role in "${ROLES[@]}" do gcloud projects add-iam-policy-binding PROJECT_ID \ --member "user:GCP_EMAIL_ADDRESS" \ --role="$role" done
Si incluyes la marca
--enable_all
o--enable_gcp_iam_roles
al ejecutarasmcli
, se definen los roles de gestión de identidades y accesos necesarios.Habilita las APIs de Google necesarias:
gcloud services enable \ --project=PROJECT_ID \ mesh.googleapis.com
Además de
mesh.googleapis.com
, este comando también habilita las siguientes APIs:API Finalidad Se puede inhabilitar meshconfig.googleapis.com
Cloud Service Mesh usa la API Mesh Configuration para reenviar datos de configuración de tu malla a Google Cloud. Además, si habilitas la API Mesh Configuration, podrás acceder a las páginas de Cloud Service Mesh en la Google Cloud consola y usar la autoridad de certificación de Cloud Service Mesh. No meshca.googleapis.com
Relacionado con la autoridad de certificación de Cloud Service Mesh que usa Cloud Service Mesh gestionado. No container.googleapis.com
Obligatorio para crear clústeres de Google Kubernetes Engine (GKE). No gkehub.googleapis.com
Se requiere para gestionar la malla como una flota. No monitoring.googleapis.com
Obligatorio para recoger telemetría de cargas de trabajo de malla. No stackdriver.googleapis.com
Es necesario para usar la interfaz de usuario de los Servicios. No opsconfigmonitoring.googleapis.com
Es necesario para usar la interfaz de usuario de Servicios en clústeresGoogle Cloud . No connectgateway.googleapis.com
Es necesario para que el plano de control de Cloud Service Mesh gestionado pueda acceder a las cargas de trabajo de la malla. Sí* trafficdirector.googleapis.com
Habilita un plano de control gestionado de alta disponibilidad y escalable. Sí* networkservices.googleapis.com
Habilita un plano de control gestionado de alta disponibilidad y escalable. Sí* networksecurity.googleapis.com
Habilita un plano de control gestionado de alta disponibilidad y escalable. Sí* Habilitar las APIs puede tardar un minuto o más en completarse. Cuando las APIs estén habilitadas, verás un resultado similar al siguiente:
Operation "operations/acf.601db672-88e6-4f98-8ceb-aa3b5725533c" finished successfully.
Si incluyes la marca
--enable_all
o--enable_apis
al ejecutarasmcli
, se habilitarán las APIs necesarias.
Configurar un clúster
Si incluye la marca --enable_all
o una de las marcas de habilitación más granulares,
asmcli
configura el clúster por usted.
Define la zona o la región predeterminada de Google Cloud CLI. Si no defines el valor predeterminado aquí, asegúrate de especificar la opción
--zone
o--region
en los comandosgcloud container clusters
de esta página.Si tienes un clúster de una sola zona, define la zona predeterminada:
gcloud config set compute/zone CLUSTER_LOCATION
Si tienes un clúster regional, define la región predeterminada:
gcloud config set compute/region CLUSTER_LOCATION
Define la
mesh_id
etiqueta del clúster. Si tu clúster tiene etiquetas que quieres conservar, debes incluirlas al añadir la etiquetamesh_id
.Para ver si tu clúster tiene etiquetas, sigue estos pasos:
gcloud container clusters describe CLUSTER_NAME \ --project PROJECT_ID
Busca el campo
resourceLabels
en los resultados. Cada etiqueta se almacena en una línea independiente debajo del camporesourceLabels
, por ejemplo:resourceLabels: csm: '' env: dev release: stable
Para mayor comodidad, puedes añadir las etiquetas a una variable de entorno. En el siguiente ejemplo, sustituye
YOUR_EXISTING_LABELS
por una lista separada por comas de las etiquetas que ya tienes en tu clúster con el formatoKEY=VALUE
. Por ejemplo:env=dev,release=stable
export EXISTING_LABELS="YOUR_EXISTING_LABELS"
Configura la etiqueta
mesh_id
:Si tu clúster tiene etiquetas que quieres conservar, actualízalo con
mesh_id
y las etiquetas que ya tenga:gcloud container clusters update CLUSTER_NAME \ --project PROJECT_ID \ --update-labels=mesh_id=${MESH_ID},${EXISTING_LABELS}
Si tu clúster no tiene ninguna etiqueta, actualízalo con solo la etiqueta
mesh_id
:gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --update-labels=mesh_id=${MESH_ID}
Habilita Workload Identity:
gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --workload-pool=${WORKLOAD_POOL}
Habilitar Workload Identity puede tardar entre 10 y 15 minutos.
Inicializa tu proyecto para prepararlo para la instalación. Entre otras cosas, este comando crea una cuenta de servicio para que los componentes del plano de datos, como el proxy sidecar, puedan acceder de forma segura a los datos y recursos de tu proyecto. En el siguiente comando, sustituye
FLEET_PROJECT_ID
por el proyecto host de la flota:curl --request POST \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --header "Content-Type: application/json" \ --data '{"workloadIdentityPools":["FLEET_PROJECT_ID.hub.id.goog","FLEET_PROJECT_ID.svc.id.goog","PROJECT_ID.svc.id.goog"]}' \ "https://meshconfig.googleapis.com/v1alpha1/projects/PROJECT_ID:initialize"
El comando responde con llaves vacías:
{}
Habilita Cloud Monitoring y Cloud Logging en GKE:
gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --enable-stackdriver-kubernetes
Tu proyecto y tu clúster ya están listos para una nueva instalación con asmcli
.