Anthos Service Mesh 1.6

Instala Anthos Service Mesh en un clúster existente mediante la CLI de Anthos

En esta guía, se explica cómo realizar una instalación limpia de la versión 1.6.8-asm.0 de Anthos Service Mesh en un clúster de Anthos GKE existente en Google Cloud mediante la interfaz de línea de comandos (CLI) de Anthos. Si tienes instalada una versión anterior de Anthos Service Mesh, consulta Actualiza Anthos Service Mesh en GKE.

La CLI de Anthos proporciona una manera sencilla y declarativa de configurar tu proyecto de Google Cloud, de actualizar un clúster de Anthos GKE existente en Google Cloud que cumpla con todos los requisitos, y de instalar Anthos Service Mesh en el clúster. Por el momento, la CLI de Anthos solo admite instalaciones en Anthos GKE en Google Cloud.

La instalación habilita las siguientes características:

En esta guía, también se explica cómo registrar tu clúster en el Environ del proyecto. Un Environ te permite organizar clústeres para facilitar la administración de varios clústeres. Mediante el registro de tus clústeres en un Environ, puedes agrupar servicios y otras infraestructuras según sea necesario para aplicar políticas coherentes.

Antes de comenzar

Antes de comenzar la instalación, haz lo siguiente:

Requisitos

  • Debes tener una suscripción a Anthos. Como alternativa, la opción de facturación prepaga está disponible solo para Anthos en Google Cloud. Para obtener más información, consulta la Guía de precios de Anthos.

  • Tu clúster de GKE debe cumplir con los siguientes requisitos:

  • 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, consulta Asigna nombres a puertos de servicio.

  • Si instalas Anthos Service Mesh en un clúster privado, debes abrir el puerto 15017 en el firewall para que el webhook se use con la incorporación automática de sidecar y funcione de manera correcta. Puedes agregar una regla de firewall o actualizar la que se creó de forma automática cuando creaste el clúster privado, de la siguiente manera:

    1. Busca el rango de origen (master-ipv4-cidr) del clúster. En el siguiente comando, reemplaza CLUSTER_NAME por el nombre del clúster:

      gcloud compute firewall-rules list --filter="name~gke-CLUSTER_NAME-[0-9a-z]*-master"
    2. Actualiza la regla de firewall con el puerto 15017. En el siguiente comando, reemplaza FIREWALL_RULE_NAME por el nombre de tu regla de firewall:

      gcloud compute firewall-rules update FIREWALL_RULE_NAME --allow tcp:10250,tcp:443,tcp:15017

      El comando de actualización es en realidad un reemplazo, por lo que debes incluir los puertos predeterminados 443 (HTTPS), 10250 (kubelet) y 15017.

  • 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

Prepara los archivos de configuración de recursos

Usa la CLI de Anthos y kustomize a fin de exportar y aplicar parches a los archivos de recursos de Config Connector que usarás para actualizar un clúster existente con las opciones que requiere Anthos Service Mesh. El recurso de Config Connector es la representación de Kubernetes de los recursos de Google Cloud.

Exporta archivos de configuración de los recursos

Usa el comando de gcloud beta anthos export a fin de generar archivos de configuración de recursos para un clúster existente.

  1. Descarga el paquete asm-patch en el directorio de trabajo actual:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm-patch@release-1.6-asm .
    

    El comando crea un subdirectorio llamado asm-patch/.

  2. Agrega un nombre de directorio en una variable de entorno llamada BASE_DIR. Recomendamos que uses el nombre del clúster como el nombre del directorio.

    export BASE_DIR=YOUR_BASE_DIR

    Ten en cuenta lo siguiente:

    • Puedes especificar una ruta de acceso relativa para BASE_DIR en lugar de un nombre de directorio, por ejemplo: export BASE_DIR=../example-resources/example-cluster.

    • Debido a que el paso para aplicar un parche al archivo de configuración de recursos falla, no especifiques una ruta de acceso absoluta, como /usr/example-resources/example-cluster.

    • No necesitas crear el directorio porque el comando de gcloud beta anthos export lo crea de forma automática. Si existe un directorio, el comando export crea un directorio llamado $BASE_DIR.bak.<number>, traslada el contenido de $BASE_DIR al directorio de copia de seguridad y, luego, exporta el archivo de configuración de recursos a $BASE_DIR.

  3. Exporta la configuración del clúster a un archivo de configuración de recursos de Config Connector: En el siguiente comando, reemplaza PROJECT_ID y YOUR_ZONE_OR_REGION por el ID del proyecto y la zona o región en la que se creó el clúster.

    gcloud beta anthos export CLUSTER_NAME \
        --output-directory ${BASE_DIR} \
        --project PROJECT_ID \
        --location YOUR_ZONE_OR_REGION

    De forma predeterminada, el comando export propaga el ID del proyecto y la zona o región del clúster en el archivo de configuración para que coincida con la configuración actual de gcloud config, a menos que especifiques --project y --location en la línea de comandos. Consulta gcloud beta anthos export --help para obtener más información sobre las opciones de línea de comando.

Aplica un parche a los archivos de configuración de recursos

Usa los métodos set kpt de Anthos y kustomize para actualizar los archivos de configuración de recursos. Para obtener una lista de todos los métodos set disponibles de kpt en el paquete asm-patch, ejecuta el siguiente comando:

kpt cfg list-setters asm-patch/

El resultado es similar al siguiente:

NAME                           VALUE                  SET BY   DESCRIPTION   COUNT
base-dir                       base                                           1
gcloud.compute.location        your_zone_or_region                            1
gcloud.container.cluster       your_cluster_name                              3
gcloud.core.project            your_project_id        kpt                    11
gcloud.project.projectNumber   your_project_number    kpt                     1

Para configurar los valores requeridos y aplicar los parches, sigue estos pasos:

  1. Configura la ruta de acceso relativa entre los directorios ${BASE_DIR} y asm-patch:

    kpt cfg set asm-patch/ base-dir ../${BASE_DIR}
  2. Configura el ID del proyecto:

    kpt cfg set asm-patch/ gcloud.core.project PROJECT_ID
  3. Configura el nombre del clúster:

    kpt cfg set asm-patch/ gcloud.container.cluster CLUSTER_NAME
  4. Configura la zona o región:

    kpt cfg set asm-patch/ gcloud.compute.location CLUSTER_LOCATION

    De forma predeterminada, los métodos set de kpt usan el proyecto y la zona o región del clúster predeterminados que se configuran en gcloud config.

  5. Aplica los parches de Anthos Service Mesh a los archivos de configuración de recursos del clúster:

    pushd ${BASE_DIR} && kustomize create --autodetect \
    --namespace ${PROJECT_ID} && popd
    pushd asm-patch && kustomize build -o ../${BASE_DIR}/all.yaml && popd

Valida los archivos de configuración de recursos finales

Antes de actualizar tus clústeres e instalar Anthos Service Mesh, debes validar los archivos de configuración de recursos:

kpt fn source ${BASE_DIR} | kpt fn run --image gcr.io/kustomize-functions/validate-asm:v0.1.0

A continuación, se muestran algunos errores que puedes encontrar:

error - unsupported spec.releaseChannel.channel value in ContainerCluster
cluster_name< (all.yaml [7]), expected: REGULAR, RAPID,STABLE, actual:
UNSPECIFIED

Este error indica que no inscribiste el clúster en un canal de versiones. Te recomendamos que te inscribas en el canal de versiones regular, ya que otros se podrían basar en una versión de GKE que no es compatible con Anthos Service Mesh 1.6.8. Para obtener más información, consulta Entornos compatibles. Después de inscribir el clúster en un canal de versiones, haz lo siguiente:

  1. Borra el directorio $BASE_DIR.

  2. Repite los pasos para exportar y aplicar parches a los archivos de configuración de recursos.

  2 error(s) occurred:
    * Error - spec.workloadIdentity.identityNamespace missing in ContainerCluster cluster_name (all.yaml [0])
    * Error - spec.labels.mesh_id missing in ContainerCluster cluster_name (all.yaml [0])

Estos errores indican que falló la aplicación de los parches en la configuración de recursos. Esta falla puede generarse cuando $BASE_DIR se establece en una ruta de acceso absoluta. Para solucionar este error, sigue estos pasos:

  1. Establece la variable de entorno $BASE_DIR como un nombre de directorio. Te recomendamos que uses el nombre del clúster.

  2. Repite los pasos para exportar y aplicar parches a los archivos de configuración de recursos.

Actualiza el clúster e instala Anthos Service Mesh

La CLI de Anthos actualiza el clúster con las siguientes opciones, que son necesarias para Anthos Service Mesh:

  • Agrega una etiqueta mesh_id al clúster en el formato proj-PROJECT_NUMBER, en el que PROJECT_NUMBER es el número de proyecto en el que se creó el clúster. La etiqueta mesh_id es obligatoria para que las métricas se muestren en el panel de Anthos Service Mesh en Cloud Console. Si el clúster tiene etiquetas existentes, la CLI de Anthos las conserva.

  • Habilita Workload Identity.

  • Habilita Kubernetes Engine Monitoring.

Ejecuta el siguiente comando para actualizar el clúster e instalar Anthos Service Mesh:

gcloud beta anthos apply ${BASE_DIR}

El comando actualiza el clúster con las opciones necesarias y, luego, implementa Anthos Service Mesh. Este proceso toma unos 30 minutos en completarse.

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

El resultado esperado es similar al siguiente:

NAME                                      READY   STATUS      RESTARTS   AGE
istio-ingressgateway-74cc894bfd-786rg     1/1     Running     0          7m19s
istiod-78cdbbbdb-d7tps                    1/1     Running     0          7m36s
promsd-576b8db4d6-lqf64                   2/2     Running     1          7m19s

Aplica los cambios de configuración que se especifican en ISTIO-SECURITY-2020-007 para evitar ataques de denegación del servicio (DoS) en tu malla.

Incorpora 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.

Todas las cargas de trabajo que se ejecutan en tu clúster antes de instalar Anthos Service Mesh deben tener el proxy de sidecar incorporado o actualizado para que tengan la versión actual de Anthos Service Mesh. Antes de implementar las cargas de trabajo nuevas, 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 Cloud Console 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 Cloud Console después de implementar las cargas de trabajo.

El acceso a Anthos Service Mesh en Cloud Console 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 las funciones más restrictivas que se describen en Controla el acceso a Anthos Service Mesh en Cloud Console.

  1. En Google Cloud Console, ve a Anthos Service Mesh.

    Ir a Anthos Service Mesh

  2. Selecciona el proyecto de Cloud en la lista desplegable de la barra de menú.

  3. 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 Cloud Console.

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:

  1. En Google Cloud Console, ve a la página Monitoring.

    Ir a Monitoring

  2. 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.

Próximos pasos