En esta guía, se explica cómo instalar Anthos Service Mesh 1.4.10-asm.18 en un clúster de GKE nuevo de Google Cloud mediante la interfaz de línea de comandos (CLI) de GKE Enterprise con las siguientes funciones habilitadas:
- Funciones de observabilidad de Anthos Service Mesh
- Funciones de seguridad de Anthos Service Mesh, incluida la autoridad certificada de Anthos Service Mesh (CA de Mesh)
- Funciones de Istio compatibles
Por el momento, GKE Enterprise CLI no admite instalaciones en un clúster de GKE existente ni en GKE on VMware.
Antes de comenzar
En esta guía, suponemos que ya tienes lo siguiente:
Requisitos
Debes tener una licencia de prueba o suscripción de GKE Enterprise. Consulta la guía de precios de GKE Enterprise para obtener más detalles.
El clúster de GKE debe cumplir con los siguientes requisitos:
- Debe tener al menos cuatro nodos.
- El tipo de máquina mínimo es
e2-standard-4
, que tiene cuatro CPU virtuales. - Usa un canal de versiones en lugar de una versión estática de GKE.
Para que se los incluya en la malla de servicios, los puertos de servicio deben tener un nombre, y ese nombre debe incluir el protocolo del puerto en la siguiente sintaxis:
name: protocol[-suffix]
, en la que los corchetes indican un sufijo opcional que debe comenzar con un guion. Para obtener más información, Asigna nombres a puertos de servicio.Si instalas Anthos Service Mesh en un clúster privado, debes agregar una regla de firewall para abrir el puerto 9443 si deseas usar la inyección automática de sidecar. Si no agregas la regla de firewall y la incorporación automática de sidecar está habilitada, recibirás un error cuando implementes las cargas de trabajo. Si deseas obtener más detalles sobre cómo agregar una regla de firewall, consulta Agrega reglas de firewall para casos de uso específicos.
Si creaste un perímetro de servicio en tu organización, es posible que debas agregar el servicio de CA de Mesh al perímetro. Para obtener más información, consulta Agrega la CA de Mesh a un perímetro de servicio.
Restricciones
Solo se admite una instalación de Anthos Service Mesh por proyecto de Google Cloud. No se admiten varias implementaciones de malla en un solo proyecto.
Datos del certificado
En los certificados de CA de Mesh, se incluyen los siguientes datos sobre los servicios de tu aplicación:
- El ID del proyecto de Google Cloud
- El espacio de nombres de GKE
- El nombre de la cuenta de servicio de GKE
Instala kpt
y la CLI de Anthos
Usa kpt
para instalar GKE Enterprise CLI. También puedes usar kpt
para descargar, administrar y personalizar los archivos de configuración de recursos de Anthos Service Mesh que se almacenan en GitHub.
Los archivos de configuración contienen marcadores de posición para tu proyecto específico de Google Cloud y la información del clúster de GKE. Después de personalizar los archivos de configuración, puedes registrarlos en tu propio repositorio de GitHub o en otro sistema de control de fuentes.
Autentica con Google Cloud CLI
gcloud auth login
Obtén tu ID del proyecto de Google Cloud y crea una variable de entorno para él:
export PROJECT_ID=
YOUR_PROJECT_ID
Configura el ID del proyecto predeterminado para Google Cloud CLI:
gcloud config set project ${PROJECT_ID}
Selecciona una zona o región y un tipo de máquina para el clúster nuevo. El tipo de máquina mínimo que requiere Anthos Service Mesh es n1-standard-4. Puedes usar cualquier opción del canal de versiones.
Si vas a crear un clúster de zona única, ejecuta el siguiente comando para obtener una lista de las zonas de GCP disponibles:
gcloud compute zones list
Si vas a crear un clúster regional, ejecuta el siguiente comando para obtener una lista de las regiones disponibles:
gcloud compute regions list
Para obtener una lista de los tipos de máquina, ejecuta el siguiente comando:
gcloud compute machine-types list | more
Crea las siguientes variables de entorno:
Configura el nombre del clúster:
export CLUSTER_NAME=YOUR_CLUSTER_NAME
El nombre del clúster solo debe contener caracteres alfanuméricos en minúscula y el signo “-”, debe comenzar con una letra y terminar con un carácter alfanumérico, y no puede tener más de 40 caracteres.
Establece
CLUSTER_LOCATION
en la zona o en la región del clúster:export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION
Instalar la CLI de GKE Enterprise y actualizar los componentes Si usas Cloud Shell, agrega
sudo
a los siguientes comandos:gcloud components install kpt anthoscli alpha
gcloud components update --version 292.0.0
De manera opcional, crea un directorio nuevo para el paquete de Anthos Service Mesh y
cd
para este.Descarga el paquete de Anthos Service Mesh en el directorio de trabajo actual:
kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.4-asm .
De forma predeterminada, el comando de
kpt pkg get
propaga la zona de procesamiento en los archivos del paquete a fin de que coincida con tu configuración actual.Establece los siguientes valores en tus archivos de configuración:
Configura el ID del proyecto:
kpt cfg set asm gcloud.core.project ${PROJECT_ID}
Configura el nombre del clúster:
kpt cfg set asm cluster-name ${CLUSTER_NAME}
Establece la zona o región predeterminada:
kpt cfg set asm gcloud.compute.zone ${CLUSTER_LOCATION}
De manera opcional, cambia el canal de versiones predeterminado,
REGULAR
predeterminado. En el siguiente comando, reemplazaYOUR_CHANNEL
porSTABLE
oRAPID
.kpt cfg set asm gcloud.container.cluster.releaseChannel YOUR_CHANNEL
Para obtener una descripción de cada canal, consulta Qué canales están disponibles.
Instala Anthos Service Mesh en un clúster nuevo
Ejecuta el siguiente comando para crear un clúster nuevo y, luego, instalar Anthos Service Mesh con los archivos de configuración de Anthos Service Mesh que personalizaste:
anthoscli apply -f asm
Espera a que finalice la implementación.
kubectl wait --for=condition=available --timeout=600s deployment --all -n istio-system
Resultado:
deployment.extensions/istio-galley condition met deployment.extensions/istio-ingressgateway condition met deployment.extensions/istio-pilot condition met deployment.extensions/istio-sidecar-injector condition met deployment.extensions/promsd condition met
Verifica los componentes del plano de control
Verifica que los Pods del plano de control en istio-system
estén activos:
kubectl get pod -n istio-system
Espera un resultado similar al siguiente:
NAME READY STATUS RESTARTS AGE istio-galley-5c65896ff7-m2pls 2/2 Running 0 18m istio-ingressgateway-587cd459f-q6hqt 2/2 Running 0 18m istio-nodeagent-74w69 1/1 Running 0 18m istio-nodeagent-7524w 1/1 Running 0 18m istio-nodeagent-7652w 1/1 Running 0 18m istio-nodeagent-7948w 1/1 Running 0 18m istio-pilot-9db77b99f-7wfb6 2/2 Running 0 18m istio-sidecar-injector-69c4d9f875-dt8rn 1/1 Running 0 18m promsd-55f464d964-lqs7w 2/2 Running 0 18m
Deberías ver una instancia de istio-nodeagent
para cada nodo en tu clúster. La CA de Mesh, que reemplaza el componente Istio de Citadel OSS, crea agentes de nodo a fin de emitir certificados mTLS para las cargas de trabajo que se ejecutan en tu malla de servicios.
Verifica que la CA de Mesh funcione:
kubectl get pods -n istio-system -l app=istio-nodeagent \
--output=jsonpath={.items..metadata.name} -o yaml | grep CA_ADDR -A 1
Resultado esperado: meshca.googleapis.com:443.
Registra tu clúster
Debes registrar tu clúster en la flota del proyecto para obtener acceso a la interfaz de usuario unificada en la consola de Google Cloud. Una flota proporciona una forma unificada de ver y administrar los clústeres y sus cargas de trabajo, incluidos los clústeres fuera de Google Cloud.
Crea una cuenta de servicio de Google Cloud y un archivo de claves
Se requiere un archivo JSON que contenga las credenciales de la cuenta de servicio para registrar un clúster. Para seguir el principio de privilegio mínimo, te recomendamos que crees una cuenta de servicio distinta para cada clúster que registres.
Para crear una cuenta de servicio y un archivo de claves, haz lo siguiente:
Selecciona un nombre para la cuenta de servicio y crea una variable de entorno para ella:
export SERVICE_ACCOUNT_NAME=SERVICE_ACCOUNT_NAME
Crea la cuenta de servicio:
gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME}
Enumera todas las cuentas de servicio de un proyecto para confirmar que se creó la cuenta de servicio:
gcloud iam service-accounts list
Vincula la función de IAM gkehub.connect a la cuenta de servicio:
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/gkehub.connect"
Crea una variable de entorno para la ruta de archivo local en la que deseas guardar el archivo JSON. Te recomendamos nombrar el archivo con el nombre de la cuenta de servicio y el ID del proyecto, por ejemplo:
/tmp/creds/${SERVICE_ACCOUNT_NAME}-${PROJECT_ID}.json
export SERVICE_ACCOUNT_KEY_PATH=LOCAL_KEY_PATH
Descarga el archivo JSON de claves privadas de la cuenta de servicio:
gcloud iam service-accounts keys create ${SERVICE_ACCOUNT_KEY_PATH} \ --iam-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
Registre el clúster
En el siguiente comando, reemplaza MEMBERSHIP_NAME
por un nombre que solo represente el clúster que se registra en centro.
gcloud container hub memberships register MEMBERSHIP_NAME \ --gke-cluster=${CLUSTER_LOCATION}/${CLUSTER_NAME} \ --service-account-key-file=${SERVICE_ACCOUNT_KEY_PATH}
El comando responderá con un resultado similar al siguiente:
kubeconfig entry generated for CLUSTER_NAME. Waiting for membership to be created...done. Created a new membership [projects/PROJECT_ID/locations/global/memberships/MEMBERSHIP_NAME] for the cluster [MEMBERSHIP_NAME] Generating the Connect Agent manifest... Deploying the Connect Agent on cluster [MEMBERSHIP_NAME] in namespace [gke-connect]... Deployed the Connect Agent on cluster [MEMBERSHIP_NAME] in namespace [gke-connect]. Finished registering the cluster [MEMBERSHIP_NAME] with the Hub.
Esta clave de la cuenta de servicio se almacena como un secreto llamado creds-gcp
en el espacio de nombres gke-connect
.
Para obtener más información sobre el registro de clústeres, consulta Registra un clúster en la documentación de Connect.
Habilita las políticas de seguridad de Pods
Para obtener la mejor seguridad en tu malla de servicios, te recomendamos que habilites las políticas de seguridad de Pods.
Inserta proxies de sidecar
Anthos Service Mesh usa proxies de sidecar para mejorar la seguridad, confiabilidad y observabilidad de la red. Con Anthos Service Mesh, estas funciones se abstraen del contenedor principal de la aplicación y se implementan en un proxy común fuera del proceso, que se entrega como un contenedor separado en el mismo pod.
Antes de implementar las cargas de trabajo, asegúrate de configurar la incorporación del proxy de sidecar para que Anthos Service Mesh pueda supervisar y asegurar el tráfico.Puedes habilitar la incorporación automática del sidecar con un comando, por ejemplo:
kubectl label namespace NAMESPACE istio-injection=enabled --overwrite
En el ejemplo anterior, NAMESPACE
es el nombre del espacio de nombres de los servicios de tu aplicación o es default
si no creaste un espacio de nombres de forma explícita.
Para obtener más información, consulta Incorpora proxies de sidecar.
Visualiza las páginas de Anthos Service Mesh
Después de implementar las cargas de trabajo en el clúster con los proxies de sidecar incorporados, puedes explorar las páginas de Anthos Service Mesh en la consola de Google Cloud para ver todas las funciones de observabilidad que ofrece Anthos Service Mesh. Ten en cuenta que los datos de telemetría toman uno o dos minutos en aparecer en la consola de Google Cloud después de implementar las cargas de trabajo.
El acceso a Anthos Service Mesh en la consola de Google Cloud se controla mediante la Administración de identidades y accesos (IAM). Para acceder a las páginas de Anthos Service Mesh, el propietario del proyecto debe otorgar a los usuarios la función de editor o visualizador del proyecto, o los roles más restrictivas que se describen en Controla el acceso a Anthos Service Mesh en la consola de Google Cloud.
En la consola de Google Cloud, ve a Anthos Service Mesh.
Selecciona el proyecto de Google Cloud de la lista desplegable de la barra de menú.
Si tienes más de una malla de servicios, selecciona la malla en la lista desplegable Malla de servicios.
Para obtener más información, consulta Explora Anthos Service Mesh en la consola de Google Cloud.
Además de las páginas de Anthos Service Mesh, las métricas relacionadas con tus servicios (como la cantidad de solicitudes que recibe un servicio específico) se envían a Cloud Monitoring, donde aparecen en el Explorador de métricas.
Para ver las métricas, sigue estos pasos:
En la consola de Google Cloud, ve a la página Monitoring.
Selecciona Recursos > Explorador de métricas.
Para obtener una lista completa de las métricas, consulta Métricas de Istio en la documentación de Cloud Monitoring.
Instala una muestra mediante kpt
De forma opcional, puedes usar kpt
para instalar la muestra de Hípster en el clúster.
Descarga la muestra:
kpt pkg get \ https://github.com/GoogleCloudPlatform/microservices-demo.git/release \ hipster-demo
Habilita la incorporación automática de sidecars:
kubectl label namespace default istio-injection=enabled
Implementa la muestra en el clúster:
kubectl apply -f hipster-demo
Ahora que tienes una muestra en ejecución, puedes explorar Anthos Service Mesh en la consola de Google Cloud. Ten en cuenta que pueden pasar hasta 5 minutos hasta que el gráfico de topología muestre los servicios de tu malla.
Cuando termines de explorar, quita la muestra de Hipster:
kubectl delete -f hipster-demo