Instalar Cloud Service Mesh para cargas de trabajo de Kubernetes fuera de Google Cloud

En esta página se explica cómo instalar Cloud Service Mesh en el clúster y sin gestionar para cargas de trabajo de Kubernetes Google Cloud:

  • Ejecuta asmcli para hacer una nueva instalación de Cloud Service Mesh 1.25.3-asm.11.
  • También puedes desplegar una pasarela de entrada.
  • Despliega o vuelve a desplegar tus cargas de trabajo para insertar proxies de sidecar.

Si necesitas instalar Cloud Service Mesh en el clúster sin gestionar con un plano de control istiod en GKE, consulta Instalar Cloud Service Mesh en el clúster Google Cloud. Ten en cuenta que, para las cargas de trabajo de Kubernetes enGoogle Cloud, te recomendamos que provisiones un plano de control gestionado.

Para preparar una instalación sin conexión de Cloud Service Mesh, consulta Preparar una instalación sin conexión de Cloud Service Mesh. Deberás especificar las opciones --offline y --output_dir al ejecutar asmcli install.

Limitaciones

Ten en cuenta las siguientes limitaciones:

  • Para usar Cloud Service Mesh, todos los clústeres de Cloud Service Mesh de una malla deben estar registrados en la misma flota en todo momento. Otros clústeres del proyecto de un clúster de Cloud Service Mesh no deben registrarse en otra flota.

  • La herramienta asmcli debe tener acceso al endpoint de Google Kubernetes Engine (GKE). Puedes configurar el acceso a través de un servidor de salto, como una VM de Compute Engine en la nube privada virtual (VPC) que proporcione acceso específico.

Antes de empezar

Antes de empezar, asegúrate de que:

Roles necesarios para instalar Cloud Service Mesh en clústeres

En la siguiente tabla se describen los roles necesarios para instalar Cloud Service Mesh en el clúster.

Nombre del rol ID de rol Conceder ubicación Descripción
Administrador de GKE Hub roles/gkehub.admin Proyecto de flota Acceso completo a GKE Hubs y a los recursos relacionados.
Administrador de Kubernetes Engine roles/container.admin Proyecto de clúster. Ten en cuenta que este rol se debe conceder tanto en el proyecto de flota como en el de clúster para las vinculaciones entre proyectos. Proporciona acceso a la gestión total de los clústeres de contenedores y de sus objetos de la API de Kubernetes.
Administrador de configuración de la malla roles/meshconfig.admin Proyecto de flota y clúster Proporciona los permisos necesarios para inicializar los componentes gestionados de Cloud Service Mesh, como el plano de control gestionado y el permiso de backend que permite que las cargas de trabajo se comuniquen con Stackdriver sin que cada una de ellas se autorice individualmente (tanto para los planos de control gestionados como para los del clúster).
Administrador de gestión de identidades y accesos de proyectos roles/resourcemanager.projectIamAdmin Proyecto de clúster Proporciona permisos para administrar políticas de gestión de identidades y accesos en proyectos.
Administrador de cuentas de servicio roles/iam.serviceAccountAdmin Proyecto de flota Autentícate como cuenta de servicio.
Administrador de gestión de servicios roles/servicemanagement.admin Proyecto de flota Control absoluto sobre los recursos de Google Service Management.
Administrador del uso del servicio roles/serviceusage.serviceUsageAdmin Proyecto de flota Permiso para habilitar, inhabilitar e inspeccionar estados de servicio, además de inspeccionar operaciones y consumir cuotas y facturación en un proyecto de consumidor.(Nota 1)
Administrador del Servicio de Autoridades de Certificación beta roles/privateca.admin Proyecto de flota Acceso completo a todos los recursos del Servicio de Autoridades de Certificación. (Nota 2)

Notas:

  1. Administrador de Uso de Servicio: este rol es necesario como requisito previo para habilitar la API mesh.googleapis.com al aprovisionar inicialmente Cloud Service Mesh gestionado.
  2. Administrador del servicio de AC: este rol solo es necesario si vas a integrar el servicio de AC.

Instalar Cloud Service Mesh

A continuación, se explica cómo instalar Cloud Service Mesh:

  1. Ejecuta asmcli install para instalar el plano de control en clústeres en un solo clúster. En las siguientes secciones se muestran ejemplos de líneas de comandos. Los ejemplos contienen argumentos obligatorios y opcionales que pueden resultarte útiles. Te recomendamos que siempre especifiques el argumento output_dir para que puedas localizar pasarelas y herramientas de ejemplo, como istioctl. Consulta la barra de navegación de la derecha para ver una lista de los ejemplos.

  2. También puedes instalar una pasarela de entrada. De forma predeterminada, asmcli no instala el istio-ingressgateway. Te recomendamos que despliegues y gestiones el plano de control y las pasarelas por separado. Si necesitas que se instale el istio-ingressgateway predeterminado con el plano de control en el clúster, incluye el argumento --option legacy-default-ingressgateway.

  3. Para completar la configuración de Cloud Service Mesh, debes habilitar la inyección automática de sidecars y desplegar o volver a desplegar cargas de trabajo.

  4. Si vas a instalar Cloud Service Mesh en más de un clúster, ejecuta asmcli install en cada uno de ellos. Cuando ejecutes asmcli install, asegúrate de usar el mismo FLEET_PROJECT_ID para cada clúster. Una vez instalado Cloud Service Mesh, consulta las instrucciones para configurar una malla de varios clústeres Google Cloud.

  5. Si tus clústeres están en redes diferentes (como en el modo aislado de la red), debes pasar un nombre de red único a asmcli mediante la marca --network_id.

Instalar las funciones predeterminadas y Mesh CA

En esta sección se muestra cómo ejecutar asmcli para instalar Cloud Service Mesh con las funciones admitidas predeterminadas de tu plataforma y habilitar la autoridad de certificación de Cloud Service Mesh como autoridad de certificación.

On‑premise

Ejecuta los siguientes comandos en Google Distributed Cloud (solo software) para VMware o Google Distributed Cloud (solo software) para bare metal para instalar el plano de control con las funciones predeterminadas y la autoridad de certificación de Cloud Service Mesh. Introduce tus valores en los marcadores de posición proporcionados.

  1. Define el contexto actual en tu clúster de usuario:

    kubectl config use-context CLUSTER_NAME
    
  2. Ejecuta asmcli install:

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca mesh_ca
    
    • --fleet_id El ID del proyecto del proyecto host de la flota.
    • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
    • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
    • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
    • --enable_all Permite que la secuencia de comandos haga lo siguiente:
      • Concede los permisos de gestión de identidades y accesos necesarios.
      • Habilita las APIs de Google necesarias.
      • Define una etiqueta en el clúster que identifique la malla.
      • Registra el clúster en la flota si aún no lo has hecho.
    • --ca mesh_ca Usa la autoridad de certificación de Cloud Service Mesh como autoridad de certificación.asmcli Configura la autoridad de certificación de Cloud Service Mesh para que use la identidad de carga de trabajo de la flota.

Para ver los SLOs y las métricas de infraestructura en la interfaz de usuario de Cloud Service Mesh, también debes seguir los tres primeros pasos de Habilitar el registro y la monitorización de aplicaciones. Si el registro y la monitorización no están habilitados y no reciben registros ni métricas personalizados, el panel de control de Cloud Service Mesh no mostrará los SLOs, los registros de errores ni las métricas de CPU y memoria.

AWS

Ejecuta los siguientes comandos en GKE en AWS para instalar el plano de control con las funciones predeterminadas y la autoridad de certificación de Cloud Service Mesh. Introduce tus valores en los marcadores de posición proporcionados.

  1. Define el contexto actual en tu clúster de usuario:

    kubectl config use-context CLUSTER_NAME
    
  2. Ejecuta asmcli install:

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca mesh_ca
    
    • --fleet_id El ID del proyecto del proyecto host de la flota.
    • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
    • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
    • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
    • --enable_all Permite que la secuencia de comandos haga lo siguiente:
      • Concede los permisos de gestión de identidades y accesos necesarios.
      • Habilita las APIs de Google necesarias.
      • Define una etiqueta en el clúster que identifique la malla.
      • Registra el clúster en la flota si aún no lo has hecho.
    • --ca mesh_ca Usa la autoridad de certificación de Cloud Service Mesh como autoridad de certificación. asmcliconfigura la autoridad de certificación de Cloud Service Mesh para usar Workload Identity de la flota.

Para ver los SLOs y las métricas de infraestructura en la interfaz de usuario de Cloud Service Mesh, también debes seguir los tres primeros pasos de Habilitar el registro y la monitorización de aplicaciones. Si el registro y la monitorización no están habilitados y no reciben registros ni métricas personalizados, el panel de control de Cloud Service Mesh no mostrará los SLOs, los registros de errores ni las métricas de CPU y memoria.

Azure

Ejecuta los siguientes comandos en GKE en Azure para instalar el plano de control con las funciones predeterminadas y la autoridad de certificación de Cloud Service Mesh. Introduce tus valores en los marcadores de posición proporcionados.

  1. Define el contexto actual en tu clúster de usuario:

    kubectl config use-context CLUSTER_NAME
    
  2. Ejecuta asmcli install:

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca mesh_ca
    
    • --fleet_id El ID del proyecto del proyecto host de la flota.
    • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
    • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
    • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
    • --enable_all Permite que la secuencia de comandos haga lo siguiente:
      • Concede los permisos de gestión de identidades y accesos necesarios.
      • Habilita las APIs de Google necesarias.
      • Define una etiqueta en el clúster que identifique la malla.
      • Registra el clúster en la flota si aún no lo has hecho.
    • --ca mesh_ca Usa la autoridad de certificación de Cloud Service Mesh como autoridad de certificación. asmcliconfigura la autoridad de certificación de Cloud Service Mesh para usar Workload Identity de la flota.

Para ver los SLOs y las métricas de infraestructura en la interfaz de usuario de Cloud Service Mesh, también debes seguir los tres primeros pasos de Habilitar el registro y la monitorización de aplicaciones. Si el registro y la monitorización no están habilitados y no reciben registros ni métricas personalizados, el panel de control de Cloud Service Mesh no mostrará los SLOs, los registros de errores ni las métricas de CPU y memoria.

Amazon EKS

Ejecuta los siguientes comandos en Amazon EKS para instalar el plano de control con las funciones predeterminadas y la autoridad de certificación de Cloud Service Mesh. Introduce tus valores en los marcadores de posición proporcionados.

  1. Define el contexto actual en tu clúster de usuario:

    kubectl config use-context CLUSTER_NAME
    
  2. Ejecuta asmcli install:

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --option attached-cluster \
      --network_id default \
      --ca mesh_ca
    
    • --fleet_id El ID del proyecto del proyecto host de la flota.
    • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
    • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
    • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
    • --enable_all Permite que la secuencia de comandos haga lo siguiente:
      • Concede los permisos de gestión de identidades y accesos necesarios.
      • Habilita las APIs de Google necesarias.
      • Define una etiqueta en el clúster que identifique la malla.
      • Registra el clúster en la flota si aún no lo has hecho.
    • --option attached-cluster Cambia la utilidad de firma predeterminada a istiod.
    • --network_id Si vas a configurar una malla de varias redes, asigna un valor único a --network_id para cada clúster de la malla.
    • --ca mesh_ca Usa la autoridad de certificación de Cloud Service Mesh como autoridad de certificación. asmcliconfigura la autoridad de certificación de Cloud Service Mesh para usar Workload Identity de la flota.

Para ver los SLOs y las métricas de infraestructura en la interfaz de usuario de Cloud Service Mesh, también debes seguir los tres primeros pasos de Habilitar el registro y la monitorización de aplicaciones. Si el registro y la monitorización no están habilitados y no reciben registros ni métricas personalizados, el panel de control de Cloud Service Mesh no mostrará los SLOs, los registros de errores ni las métricas de CPU y memoria.

Microsoft AKS

Ejecuta los siguientes comandos en Microsoft AKS para instalar el plano de control con las funciones predeterminadas y la autoridad de certificación de Cloud Service Mesh. Introduce tus valores en los marcadores de posición proporcionados.

  1. Define el contexto actual en tu clúster de usuario:

    kubectl config use-context CLUSTER_NAME
    
  2. Ejecuta asmcli install:

    HUB_REGISTRATION_EXTRA_FLAGS=--has-private-issuer ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --option attached-cluster \
      --network_id default \
      --ca mesh_ca
    
    • HUB_REGISTRATION_EXTRA_FLAGS=--has-private-issuer Permite registrarse en GKE Hub.
    • --fleet_id El ID del proyecto del proyecto host de la flota.
    • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
    • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
    • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
    • --enable_all Permite que la secuencia de comandos haga lo siguiente:
      • Concede los permisos de gestión de identidades y accesos necesarios.
      • Habilita las APIs de Google necesarias.
      • Define una etiqueta en el clúster que identifique la malla.
      • Registra el clúster en la flota si aún no lo has hecho.
    • --option attached-cluster Cambia la utilidad de firma predeterminada a istiod.
    • --network_id Si vas a configurar una malla de varias redes, asigna un valor único a --network_id para cada clúster de la malla.
    • --ca mesh_ca Usa la autoridad de certificación de Cloud Service Mesh como autoridad de certificación. asmcliconfigura la autoridad de certificación de Cloud Service Mesh para usar Workload Identity de la flota.

Para ver los SLOs y las métricas de infraestructura en la interfaz de usuario de Cloud Service Mesh, también debes seguir los tres primeros pasos de Habilitar el registro y la monitorización de aplicaciones. Si el registro y la monitorización no están habilitados y no reciben registros ni métricas personalizados, el panel de control de Cloud Service Mesh no mostrará los SLOs, los registros de errores ni las métricas de CPU y memoria.

Instalar las funciones predeterminadas y el servicio de autoridad de certificación (CA)

En esta sección se muestra cómo ejecutar asmcli para instalar Cloud Service Mesh con las funciones compatibles predeterminadas de tu plataforma y habilitar el servicio de CA como autoridad de certificación.

Además de la autoridad de certificación de Cloud Service Mesh, puedes configurar Cloud Service Mesh para que use el Servicio de Autoridades de Certificación. En esta guía se explica cómo integrar el Servicio de Autoridades de Certificación, lo que se recomienda en los siguientes casos prácticos:

  • Si necesitas que diferentes autoridades de certificación firmen certificados de carga de trabajo en diferentes clústeres.
  • Si necesitas crear una copia de seguridad de tus claves de firma en un Cloud HSM.
  • Si trabajas en un sector muy regulado y estás sujeto a cumplimiento.
  • Si quieres encadenar tu AC de Cloud Service Mesh a un certificado raíz de empresa personalizado para firmar certificados de carga de trabajo.

El coste de la autoridad de certificación de Cloud Service Mesh está incluido en los precios de Cloud Service Mesh. El servicio de CA no está incluido en el precio base de Cloud Service Mesh y se cobra por separado. Además, el Servicio de Autoridades de Certificación incluye un acuerdo de nivel de servicio explícito, pero la autoridad de certificación de Cloud Service Mesh no.

Configurar el servicio de AC

  1. Crea el grupo de CAs en el nivel DevOps y en la misma región que el clúster al que sirve para evitar problemas de latencia excesiva o posibles interrupciones entre regiones. Para obtener más información, consulta Niveles de carga de trabajo optimizada.
  2. Crea la AC para tener al menos una autoridad de certificación activa en el grupo de ACs del mismo proyecto que el clúster de GKE. Usa ACs subordinadas para firmar certificados de carga de trabajo de Cloud Service Mesh. Anota el grupo de ACs correspondiente a la AC subordinada.
  3. Si solo se va a usar para emitir certificados para cargas de trabajo de Cloud Service Mesh, configura la siguiente política de emisión para el grupo de CAs:

    policy.yaml

    baselineValues:
      keyUsage:
        baseKeyUsage:
          digitalSignature: true
          keyEncipherment: true
        extendedKeyUsage:
          serverAuth: true
          clientAuth: true
      caOptions:
        isCa: false
    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: subject_alt_names.all(san, san.type == URI && san.value.startsWith("spiffe://PROJECT_ID.svc.id.goog/ns/") )
    
  4. Para actualizar la política de emisión del grupo de CAs, usa el siguiente comando:

    gcloud privateca pools update CA_POOL --location ca_region --issuance-policy policy.yaml
    

    Para obtener información sobre cómo definir una política en un pool, consulta Usar una política de emisión de certificados.

  5. Si vas a usar una plantilla de certificado, configúrala ahora. Para obtener más información, consulta la guía del servicio de CA para certificados de identidad de carga de trabajo. Asegúrate de que la plantilla de certificado se cree en la misma región que el grupo de ACs. Si hay varias regiones para los grupos de ACs, crea una plantilla de certificado por región.

Configurar Cloud Service Mesh para usar el Servicio de Autoridades de Certificación

Ejecuta los siguientes comandos en Google Distributed Cloud (solo software) para VMware o Google Distributed Cloud (solo software) para bare metal para instalar el plano de control con las funciones predeterminadas y el servicio de autoridad de certificación. Introduce tus valores en los marcadores de posición proporcionados.

  1. Define el contexto actual en tu clúster de usuario:

    kubectl config use-context CLUSTER_NAME
    
  2. Ejecuta asmcli install:

    ./asmcli install \
      --kubeconfig KUBECONFIG_FILE \
      --fleet_id FLEET_PROJECT_ID \
      --output_dir DIR_PATH \
      --enable_all \
      --ca gcp_cas \
      --platform multicloud \
      --ca_pool  projects/CA_POOL_PROJECT_ID/locations/ca_region/caPools/CA_POOL
    
    • --fleet_id El ID del proyecto del proyecto host de la flota.
    • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
    • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
    • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
    • --enable_all Permite que la secuencia de comandos haga lo siguiente:
      • Concede los permisos de gestión de identidades y accesos necesarios.
      • Habilita las APIs de Google necesarias.
      • Define una etiqueta en el clúster que identifique la malla.
      • Registra el clúster en la flota si aún no lo has hecho.
    • --ca gcp_cas Usa el Servicio de Autoridades de Certificación como autoridad de certificación. Si cambias las autoridades de certificación durante una actualización, se producirá un tiempo de inactividad. asmcliconfigura el Servicio de Autoridades de Certificación para usar Workload Identity de la flota.
    • --ca_pool El identificador completo del servicio de autoridad de certificación CA Pool. Si utilizas una plantilla de certificado, añade el ID de la plantilla separado por :. Por ejemplo:
        --ca_pool projects/CA_POOL_PROJECT_ID/locations/ca_region/caPools/CA_POOL:projects/CA_POOL_PROJECT_ID/locations/ca_region/certificateTemplates/CERT_TEMPLATE_ID
        

    Para ver los SLOs y las métricas de infraestructura en la interfaz de usuario de Cloud Service Mesh, también debes seguir los tres primeros pasos de Habilitar el registro y la monitorización de aplicaciones. Si el registro y la monitorización no están habilitados y no reciben registros ni métricas personalizados, el panel de control de Cloud Service Mesh no mostrará los SLOs, los registros de errores ni las métricas de CPU y memoria.

Instalar funciones predeterminadas con la AC de Istio

En esta sección se explica cómo:

  • Genera certificados y claves para la AC de Istio que usa Cloud Service Mesh para firmar tus cargas de trabajo.
  • Ejecuta asmcli para instalar Cloud Service Mesh con las funciones predeterminadas y habilitar Istio CA.

De forma predeterminada, los entornos que instalan Cloud Service Mesh con Istio CA registran métricas en Prometheus. Si quieres usar los paneles de Cloud Service Mesh, debes habilitar Stackdriver. Para obtener más información, consulta Instalar con funciones opcionales.

Para disfrutar de la máxima seguridad, te recomendamos que mantengas una CA raíz offline y que uses las CAs subordinadas para emitir certificados para cada clúster. Para obtener más información, consulta Plug in CA Certificates (Conectar certificados de CA). En esta configuración, todas las cargas de trabajo de la malla de servicios usan la misma autoridad de certificación (CA) raíz. Cada AC de Cloud Service Mesh usa una clave de firma y un certificado de AC intermedio, firmados por la AC raíz. Cuando hay varias CAs en una malla, se establece una jerarquía de confianza entre ellas. Puedes repetir estos pasos para aprovisionar certificados y claves para cualquier número de autoridades de certificación.

El archivo Makefile para generar los certificados se encuentra en el subdirectorio istio-1.25.3-asm.11 del directorio --output_dir que especificaste en el comando asmcli validate. Si no has ejecutado asmcli validate o no tienes el directorio descargado de forma local, puedes obtener el archivo Makefile descargando el archivo de instalación de Cloud Service Mesh y extrayendo el contenido.

  1. Cambia al directorio istio-1.25.3-asm.11.

  2. Crea un directorio para los certificados y las claves:

    mkdir -p certs && \
    pushd certs
  3. Genera un certificado raíz y una clave:

    make -f ../tools/certs/Makefile.selfsigned.mk root-ca
    

    Se generan los siguientes archivos:

    • root-cert.pem: el certificado raíz
    • root-key.pem: la clave raíz
    • root-ca.conf: la configuración de openssl para generar el certificado raíz
    • root-cert.csr: la CSR del certificado raíz
  4. Genera un certificado y una clave intermedios:

    make -f ../tools/certs/Makefile.selfsigned.mk cluster1-cacerts

    Se generarán estos archivos en un directorio llamado cluster1:

    • ca-cert.pem: los certificados intermedios
    • ca-key.pem: la clave intermedia
    • cert-chain.pem: la cadena de certificados que usa istiod
    • root-cert.pem: el certificado raíz

    Si sigues estos pasos en un ordenador sin conexión, copia el directorio generado en un ordenador que tenga acceso a los clústeres.

  5. Volver al directorio anterior:

    popd
  6. Ejecuta asmcli para instalar una malla con Istio CA:

    On‑premise

    Ejecuta los siguientes comandos en Google Distributed Cloud (solo software) para VMware o Google Distributed Cloud (solo software) para bare metal para instalar el plano de control con las funciones predeterminadas y la CA de Istio. Introduce tus valores en los marcadores de posición proporcionados.

    1. Define el contexto actual en tu clúster de usuario:

      kubectl config use-context CLUSTER_NAME
      
    2. Ejecuta asmcli install:

      ./asmcli install \
        --fleet_id FLEET_PROJECT_ID \
        --kubeconfig KUBECONFIG_FILE \
        --output_dir DIR_PATH \
        --platform multicloud \
        --enable_all \
        --ca citadel \
        --ca_cert CA_CERT_FILE_PATH \
        --ca_key CA_KEY_FILE_PATH \
        --root_cert ROOT_CERT_FILE_PATH \
        --cert_chain CERT_CHAIN_FILE_PATH
      
      • --fleet_id El ID del proyecto del proyecto host de la flota.
      • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
      • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
      • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
      • --enable_all Permite que la secuencia de comandos haga lo siguiente:
        • Concede los permisos de gestión de identidades y accesos necesarios.
        • Habilita las APIs de Google necesarias.
        • Define una etiqueta en el clúster que identifique la malla.
        • Registra el clúster en la flota si aún no lo has hecho.
      • -ca citadel Usa Istio CA como autoridad de certificación.
      • --ca_cert El certificado intermedio
      • --ca_key La clave del certificado intermedio
      • --root_cert El certificado raíz
      • --cert_chain La cadena de certificados

    AWS

    Ejecuta los siguientes comandos en GKE en AWS para instalar el plano de control con las funciones predeterminadas y la CA de Istio. Introduce tus valores en los marcadores de posición proporcionados. Puedes habilitar Ingress para la subred pública o la privada.

    Público

    1. Define el contexto actual en tu clúster de usuario:

      kubectl config use-context CLUSTER_NAME
      
    2. Ejecuta asmcli install:

      ./asmcli install \
        --fleet_id FLEET_PROJECT_ID \
        --kubeconfig KUBECONFIG_FILE \
        --output_dir DIR_PATH \
        --platform multicloud \
        --enable_all \
        --ca citadel \
        --ca_cert CA_CERT_FILE_PATH \
        --ca_key CA_KEY_FILE_PATH \
        --root_cert ROOT_CERT_FILE_PATH \
        --cert_chain CERT_CHAIN_FILE_PATH
      
      • --fleet_id El ID del proyecto del proyecto host de la flota.
      • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
      • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
      • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
      • --enable_all Permite que la secuencia de comandos haga lo siguiente:
        • Concede los permisos de gestión de identidades y accesos necesarios.
        • Habilita las APIs de Google necesarias.
        • Define una etiqueta en el clúster que identifique la malla.
        • Registra el clúster en la flota si aún no lo has hecho.
      • -ca citadel Usa Istio CA como autoridad de certificación.
      • --ca_cert El certificado intermedio.
      • --ca_key La clave del certificado intermedio.
      • --root_cert El certificado raíz.
      • --cert_chain La cadena de certificados.

    Privado

    1. Define el contexto actual en tu clúster de usuario:

      kubectl config use-context CLUSTER_NAME
      
    2. Guarda el siguiente archivo YAML con el nombre istio-operator-internal-lb.yaml:

      apiVersion: install.istio.io/v1alpha1
      kind: IstioOperator
      spec:
        components:
          ingressGateways:
          - enabled: true
            k8s:
              serviceAnnotations:
                service.beta.kubernetes.io/aws-load-balancer-internal: "true"
            name: istio-ingressgateway
      
    3. Ejecuta asmcli install:

      ./asmcli install \
        --fleet_id FLEET_PROJECT_ID \
        --kubeconfig KUBECONFIG_FILE \
        --output_dir DIR_PATH \
        --platform multicloud \
        --enable_all \
        --ca citadel \
        --ca_cert FILE_PATH \
        --ca_key FILE_PATH \
        --root_cert FILE_PATH \
        --cert_chain FILE_PATH \
        --custom_overlay istio-operator-internal-lb.yaml
      
      • --fleet_id El ID del proyecto del proyecto host de la flota.
      • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
      • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
      • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
      • --enable_all Permite que la secuencia de comandos haga lo siguiente:
        • Concede los permisos de gestión de identidades y accesos necesarios.
        • Habilita las APIs de Google necesarias.
        • Define una etiqueta en el clúster que identifique la malla.
        • Registra el clúster en la flota si aún no lo has hecho.
      • -ca citadel Usa Istio CA como autoridad de certificación.
      • --ca_cert El certificado intermedio.
      • --ca_key La clave del certificado intermedio.
      • --root_cert El certificado raíz.
      • --cert_chain La cadena de certificados.
      • --custom_overlay El nombre del archivo de superposición creado. Para obtener más información sobre los archivos de superposición, consulta Habilitar funciones opcionales en el plano de control en clústeres.

    Azure

    Ejecuta los siguientes comandos en GKE en Azure para instalar el plano de control con las funciones predeterminadas y la CA de Istio. Introduce tus valores en los marcadores de posición proporcionados. Puedes habilitar Ingress para la subred pública o la privada.

    Público

    1. Define el contexto actual en tu clúster de usuario:

      kubectl config use-context CLUSTER_NAME
      
    2. Ejecuta asmcli install:

      ./asmcli install \
        --fleet_id FLEET_PROJECT_ID \
        --kubeconfig KUBECONFIG_FILE \
        --output_dir DIR_PATH \
        --platform multicloud \
        --enable_all \
        --ca citadel \
        --ca_cert CA_CERT_FILE_PATH \
        --ca_key CA_KEY_FILE_PATH \
        --root_cert ROOT_CERT_FILE_PATH \
        --cert_chain CERT_CHAIN_FILE_PATH
      
      • --fleet_id El ID del proyecto del proyecto host de la flota.
      • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
      • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
      • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
      • --enable_all Permite que la secuencia de comandos haga lo siguiente:
        • Concede los permisos de gestión de identidades y accesos necesarios.
        • Habilita las APIs de Google necesarias.
        • Define una etiqueta en el clúster que identifique la malla.
        • Registra el clúster en la flota si aún no lo has hecho.
      • -ca citadel Usa Istio CA como autoridad de certificación.
      • --ca_cert El certificado intermedio.
      • --ca_key La clave del certificado intermedio.
      • --root_cert El certificado raíz.
      • --cert_chain La cadena de certificados.

    Privado

    1. Define el contexto actual en tu clúster de usuario:

      kubectl config use-context CLUSTER_NAME
      
    2. Guarda el siguiente archivo YAML con el nombre istio-operator-internal-lb.yaml:

      apiVersion: install.istio.io/v1alpha1
      kind: IstioOperator
      spec:
        components:
          ingressGateways:
          - enabled: true
            k8s:
              serviceAnnotations:
                service.beta.kubernetes.io/aws-load-balancer-internal: "true"
            name: istio-ingressgateway
      
    3. Ejecuta asmcli install:

      ./asmcli install \
        --fleet_id FLEET_PROJECT_ID \
        --kubeconfig KUBECONFIG_FILE \
        --output_dir DIR_PATH \
        --platform multicloud \
        --enable_all \
        --ca citadel \
        --ca_cert FILE_PATH \
        --ca_key FILE_PATH \
        --root_cert FILE_PATH \
        --cert_chain FILE_PATH \
        --custom_overlay istio-operator-internal-lb.yaml
      
      • --fleet_id El ID del proyecto del proyecto host de la flota.
      • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
      • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
      • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
      • --enable_all Permite que la secuencia de comandos haga lo siguiente:
        • Concede los permisos de gestión de identidades y accesos necesarios.
        • Habilita las APIs de Google necesarias.
        • Define una etiqueta en el clúster que identifique la malla.
        • Registra el clúster en la flota si aún no lo has hecho.
      • -ca citadel Usa Istio CA como autoridad de certificación.
      • --ca_cert El certificado intermedio.
      • --ca_key La clave del certificado intermedio.
      • --root_cert El certificado raíz.
      • --cert_chain La cadena de certificados.
      • --custom_overlay El nombre del archivo de superposición creado. Para obtener más información sobre los archivos de superposición, consulta Habilitar funciones opcionales en el plano de control en clústeres.

    Amazon EKS

    Ejecuta los siguientes comandos en Amazon EKS para instalar el plano de control con las funciones predeterminadas y la CA de Istio. Introduce tus valores en los marcadores de posición proporcionados.

    1. Define el contexto actual en tu clúster de usuario:

      kubectl config use-context CLUSTER_NAME
      
    2. Ejecuta asmcli install:

      ./asmcli install \
        --fleet_id FLEET_PROJECT_ID \
        --kubeconfig KUBECONFIG_FILE \
        --output_dir DIR_PATH \
        --platform multicloud \
        --enable_all \
        --option attached-cluster \
        --ca citadel \
        --ca_cert CA_CERT_FILE_PATH \
        --ca_key CA_KEY_FILE_PATH \
        --root_cert ROOT_CERT_FILE_PATH \
        --cert_chain CERT_CHAIN_FILE_PATH \
        --network_id default
      
      • --fleet_id El ID del proyecto del proyecto host de la flota.
      • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
      • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
      • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
      • --enable_all Permite que la secuencia de comandos haga lo siguiente:
        • Concede los permisos de gestión de identidades y accesos necesarios.
        • Habilita las APIs de Google necesarias.
        • Define una etiqueta en el clúster que identifique la malla.
        • Registra el clúster en la flota si aún no lo has hecho.
      • --option attached-cluster Cambia la utilidad de firma predeterminada a istiod.
      • -ca citadel Usa Istio CA como autoridad de certificación.
      • --ca_cert El certificado intermedio
      • --ca_key La clave del certificado intermedio
      • --root_cert El certificado raíz
      • --cert_chain La cadena de certificados
      • --network_id Si vas a configurar una malla de varias redes, asigna un valor único a --network_id para cada clúster de la malla.

    Microsoft AKS

    Ejecuta los siguientes comandos en Microsoft AKS para instalar el plano de control con las funciones predeterminadas y la CA de Istio. Introduce tus valores en los marcadores de posición proporcionados.

    1. Define el contexto actual en tu clúster de usuario:

      kubectl config use-context CLUSTER_NAME
      
    2. Ejecuta asmcli install:

      HUB_REGISTRATION_EXTRA_FLAGS=--has-private-issuer ./asmcli install \
        --fleet_id FLEET_PROJECT_ID \
        --kubeconfig KUBECONFIG_FILE \
        --output_dir DIR_PATH \
        --platform multicloud \
        --enable_all \
        --option attached-cluster \
        --ca citadel \
        --ca_cert CA_CERT_FILE_PATH \
        --ca_key CA_KEY_FILE_PATH \
        --root_cert ROOT_CERT_FILE_PATH \
        --cert_chain CERT_CHAIN_FILE_PATH \
        --network_id default
      
      • HUB_REGISTRATION_EXTRA_FLAGS=--has-private-issuer Permite registrarse en GKE Hub.
      • --fleet_id El ID del proyecto del proyecto host de la flota.
      • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
      • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
      • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
      • --enable_all Permite que la secuencia de comandos haga lo siguiente:
        • Concede los permisos de gestión de identidades y accesos necesarios.
        • Habilita las APIs de Google necesarias.
        • Define una etiqueta en el clúster que identifique la malla.
        • Registra el clúster en la flota si aún no lo has hecho.
      • --option attached-cluster Cambia la utilidad de firma predeterminada a istiod.
      • -ca citadel Usa Istio CA como autoridad de certificación.
      • --ca_cert El certificado intermedio
      • --ca_key La clave del certificado intermedio
      • --root_cert El certificado raíz
      • --cert_chain La cadena de certificados
      • --network_id Si vas a configurar una malla de varias redes, asigna un valor único a --network_id para cada clúster de la malla.

Instalar con la CA de Istio con Google Cloud Observability habilitado

Si quieres usar los paneles de Cloud Service Mesh, debes habilitar Stackdriver.

On‑premise

Ejecuta los siguientes comandos en Google Distributed Cloud (solo software) para VMware o Google Distributed Cloud (solo software) para bare metal para instalar el plano de control con Stackdriver y otras funciones opcionales, así como la CA de Istio. Introduce tus valores en los marcadores de posición proporcionados.

  1. Define el contexto actual en tu clúster de usuario:

    kubectl config use-context CLUSTER_NAME
    
  2. Ejecuta asmcli install:

    ./asmcli install \
       --fleet_id FLEET_PROJECT_ID \
       --kubeconfig KUBECONFIG_FILE \
       --output_dir DIR_PATH \
       --platform multicloud \
       --enable_all \
       --ca citadel \
       --ca_cert CA_CERT_FILE_PATH \
       --ca_key CA_KEY_FILE_PATH \
       --root_cert ROOT_CERT_FILE_PATH \
       --cert_chain CERT_CHAIN_FILE_PATH
    
    • --fleet_id El ID del proyecto del proyecto host de la flota.
    • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
    • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
    • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
    • --enable_all Permite que la secuencia de comandos haga lo siguiente:
      • Concede los permisos de gestión de identidades y accesos necesarios.
      • Habilita las APIs de Google necesarias.
      • Define una etiqueta en el clúster que identifique la malla.
      • Registra el clúster en la flota si aún no lo has hecho.
    • -ca citadel Usa Istio CA como autoridad de certificación.
    • --ca_cert El certificado intermedio
    • --ca_key La clave del certificado intermedio
    • --root_cert El certificado raíz
    • --cert_chain La cadena de certificados
    • --option stackdriver Habilita la opción Stackdriver. Ten en cuenta que también puedes habilitar Stackdriver y Prometheus con --option prometheus-and-stackdriver.

    Para ver los SLOs y las métricas de infraestructura en la interfaz de usuario de Cloud Service Mesh, también debes seguir los tres primeros pasos de Habilitar el registro y la monitorización de aplicaciones. Si el registro y la monitorización no están habilitados y no reciben registros ni métricas personalizados, el panel de control de Cloud Service Mesh no mostrará los SLOs, los registros de errores ni las métricas de CPU y memoria.

AWS

Ejecuta los siguientes comandos en GKE en AWS para instalar el plano de control con Stackdriver y otras funciones opcionales, así como la CA de Istio. Introduce tus valores en los marcadores de posición proporcionados. Puedes habilitar Ingress para la subred pública o la privada.

Público

  1. Define el contexto actual en tu clúster de usuario:

    kubectl config use-context CLUSTER_NAME
    
  2. Ejecuta asmcli install:

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca citadel \
      --ca_cert CA_CERT_FILE_PATH \
      --ca_key CA_KEY_FILE_PATH \
      --root_cert ROOT_CERT_FILE_PATH \
      --cert_chain CERT_CHAIN_FILE_PATH \
      --option stackdriver
    
    • --fleet_id El ID del proyecto del proyecto host de la flota.
    • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
    • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
    • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
    • --enable_all Permite que la secuencia de comandos haga lo siguiente:
      • Concede los permisos de gestión de identidades y accesos necesarios.
      • Habilita las APIs de Google necesarias.
      • Define una etiqueta en el clúster que identifique la malla.
      • Registra el clúster en la flota si aún no lo has hecho.
    • -ca citadel Usa Istio CA como autoridad de certificación.
    • --ca_cert El certificado intermedio.
    • --ca_key La clave del certificado intermedio.
    • --root_cert El certificado raíz.
    • --cert_chain La cadena de certificados.
    • --option stackdriver Habilita la opción Stackdriver. Ten en cuenta que también puedes habilitar Stackdriver y Prometheus con --option prometheus-and-stackdriver.

Privado

  1. Define el contexto actual en tu clúster de usuario:

    kubectl config use-context CLUSTER_NAME
    
  2. Guarda el siguiente archivo YAML con el nombre istio-operator-internal-lb.yaml:

    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      components:
        ingressGateways:
        - enabled: true
          k8s:
            serviceAnnotations:
              service.beta.kubernetes.io/aws-load-balancer-internal: "true"
          name: istio-ingressgateway
    
  3. Ejecuta asmcli install:

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca citadel \
      --ca_cert FILE_PATH \
      --ca_key FILE_PATH \
      --root_cert FILE_PATH \
      --cert_chain FILE_PATH
      --custom_overlay istio-operator-internal-lb.yaml \
      --option stackdriver
    
    • --fleet_id El ID del proyecto del proyecto host de la flota.
    • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
    • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
    • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
    • --enable_all Permite que la secuencia de comandos haga lo siguiente:
      • Concede los permisos de gestión de identidades y accesos necesarios.
      • Habilita las APIs de Google necesarias.
      • Define una etiqueta en el clúster que identifique la malla.
      • Registra el clúster en la flota si aún no lo has hecho.
    • -ca citadel Usa Istio CA como autoridad de certificación.
    • --ca_cert El certificado intermedio.
    • --ca_key La clave del certificado intermedio.
    • --root_cert El certificado raíz.
    • --cert_chain La cadena de certificados.
    • --custom_overlay El nombre del archivo de superposición creado. Para obtener más información sobre los archivos de superposición, consulta el artículo Habilitar funciones opcionales en el plano de control en clústeres.
    • --option stackdriver Habilita la opción Stackdriver. Ten en cuenta que también puedes habilitar Stackdriver y Prometheus con --option prometheus-and-stackdriver. También puedes habilitar Stackdriver con --custom_overlay stackdriver.yaml. Debes descargar el paquete anthos-service-mesh-package o crear stackdriver.yaml a partir del manifiesto proporcionado.

Azure

Ejecuta los siguientes comandos en GKE en Azure para instalar el plano de control con Stackdriver y otras funciones opcionales, así como la CA de Istio. Introduce tus valores en los marcadores de posición proporcionados. Puedes habilitar Ingress para la subred pública o la privada.

Público

  1. Define el contexto actual en tu clúster de usuario:

    kubectl config use-context CLUSTER_NAME
    
  2. Ejecuta asmcli install:

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca citadel \
      --ca_cert CA_CERT_FILE_PATH \
      --ca_key CA_KEY_FILE_PATH \
      --root_cert ROOT_CERT_FILE_PATH \
      --cert_chain CERT_CHAIN_FILE_PATH \
      --option stackdriver
    
    • --fleet_id El ID del proyecto del proyecto host de la flota.
    • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
    • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
    • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
    • --enable_all Permite que la secuencia de comandos haga lo siguiente:
      • Concede los permisos de gestión de identidades y accesos necesarios.
      • Habilita las APIs de Google necesarias.
      • Define una etiqueta en el clúster que identifique la malla.
      • Registra el clúster en la flota si aún no lo has hecho.
    • -ca citadel Usa Istio CA como autoridad de certificación.
    • --ca_cert El certificado intermedio.
    • --ca_key La clave del certificado intermedio.
    • --root_cert El certificado raíz.
    • --cert_chain La cadena de certificados.
    • --option stackdriver Habilita la opción Stackdriver. Ten en cuenta que también puedes habilitar Stackdriver y Prometheus con --option prometheus-and-stackdriver.

Privado

  1. Define el contexto actual en tu clúster de usuario:

    kubectl config use-context CLUSTER_NAME
    
  2. Guarda el siguiente archivo YAML con el nombre istio-operator-internal-lb.yaml:

    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      components:
        ingressGateways:
        - enabled: true
          k8s:
            serviceAnnotations:
              service.beta.kubernetes.io/aws-load-balancer-internal: "true"
          name: istio-ingressgateway
    
  3. Ejecuta asmcli install:

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca citadel \
      --ca_cert FILE_PATH \
      --ca_key FILE_PATH \
      --root_cert FILE_PATH \
      --cert_chain FILE_PATH
      --custom_overlay istio-operator-internal-lb.yaml \
      --option stackdriver
    
    • --fleet_id El ID del proyecto del proyecto host de la flota.
    • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
    • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
    • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
    • --enable_all Permite que la secuencia de comandos haga lo siguiente:
      • Concede los permisos de gestión de identidades y accesos necesarios.
      • Habilita las APIs de Google necesarias.
      • Define una etiqueta en el clúster que identifique la malla.
      • Registra el clúster en la flota si aún no lo has hecho.
    • -ca citadel Usa Istio CA como autoridad de certificación.
    • --ca_cert El certificado intermedio.
    • --ca_key La clave del certificado intermedio.
    • --root_cert El certificado raíz.
    • --cert_chain La cadena de certificados.
    • --custom_overlay El nombre del archivo de superposición creado. Para obtener más información sobre los archivos de superposición, consulta el artículo Habilitar funciones opcionales en el plano de control en clústeres.
    • --option stackdriver Habilita la opción Stackdriver. Ten en cuenta que también puedes habilitar Stackdriver y Prometheus con --option prometheus-and-stackdriver. También puedes habilitar Stackdriver con --custom_overlay stackdriver.yaml. Debes descargar el paquete anthos-service-mesh-package o crear stackdriver.yaml a partir del manifiesto proporcionado.

Amazon EKS

Ejecuta los siguientes comandos en Amazon EKS para instalar el plano de control con Stackdriver y otras funciones opcionales, así como la CA de Istio. Introduce tus valores en los marcadores de posición proporcionados.

  1. Define el contexto actual en tu clúster de usuario:

    kubectl config use-context CLUSTER_NAME
    
  2. Ejecuta asmcli install:

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca citadel \
      --ca_cert CA_CERT_FILE_PATH \
      --ca_key CA_KEY_FILE_PATH \
      --root_cert ROOT_CERT_FILE_PATH \
      --cert_chain CERT_CHAIN_FILE_PATH \
      --option stackdriver \
      --option attached-cluster
    
    • --fleet_id El ID del proyecto del proyecto host de la flota.
    • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
    • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
    • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
    • --enable_all Permite que la secuencia de comandos haga lo siguiente:
      • Concede los permisos de gestión de identidades y accesos necesarios.
      • Habilita las APIs de Google necesarias.
      • Define una etiqueta en el clúster que identifique la malla.
      • Registra el clúster en la flota si aún no lo has hecho.
    • -ca citadel Usa Istio CA como autoridad de certificación.
    • --ca_cert El certificado intermedio
    • --ca_key La clave del certificado intermedio
    • --root_cert El certificado raíz
    • --cert_chain La cadena de certificados
    • --option stackdriver Habilita la opción Stackdriver. Ten en cuenta que también puedes habilitar Stackdriver y Prometheus con --option prometheus-and-stackdriver.
    • --option stackdriver Cambia la utilidad de firma predeterminada a istiod.

Microsoft AKS

Ejecuta los siguientes comandos en Microsoft AKS para instalar el plano de control con las funciones predeterminadas y la CA de Istio. Introduce tus valores en los marcadores de posición proporcionados.

  1. Define el contexto actual en tu clúster de usuario:

    kubectl config use-context CLUSTER_NAME
    
  2. Ejecuta asmcli install:

    HUB_REGISTRATION_EXTRA_FLAGS=--has-private-issuer ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca citadel \
      --ca_cert CA_CERT_FILE_PATH \
      --ca_key CA_KEY_FILE_PATH \
      --root_cert ROOT_CERT_FILE_PATH \
      --cert_chain CERT_CHAIN_FILE_PATH \
      --option stackdriver \
      --option attached-cluster
    
    • HUB_REGISTRATION_EXTRA_FLAGS=--has-private-issuer Permite registrarse en GKE Hub.
    • --fleet_id El ID del proyecto del proyecto host de la flota.
    • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
    • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
    • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
    • --enable_all Permite que la secuencia de comandos haga lo siguiente:
      • Concede los permisos de gestión de identidades y accesos necesarios.
      • Habilita las APIs de Google necesarias.
      • Define una etiqueta en el clúster que identifique la malla.
      • Registra el clúster en la flota si aún no lo has hecho.
    • -ca citadel Usa Istio CA como autoridad de certificación.
    • --ca_cert El certificado intermedio
    • --ca_key La clave del certificado intermedio
    • --root_cert El certificado raíz
    • --cert_chain La cadena de certificados
    • --option stackdriver Habilita la opción Stackdriver. Ten en cuenta que también puedes habilitar Stackdriver y Prometheus con --option prometheus-and-stackdriver.
    • --option stackdriver Cambia la utilidad de firma predeterminada a istiod.

Instalar con funciones opcionales

Un archivo de superposición es un archivo YAML que contiene un IstioOperator recurso personalizado (CR) que se pasa a asmcli para configurar el plano de control. Puedes anular la configuración predeterminada del plano de control y habilitar una función opcional pasando el archivo YAML a asmcli. Puedes añadir más superposiciones, y cada archivo de superposición anula la configuración de las capas anteriores. Te recomendamos que guardes los archivos de superposición en tu sistema de control de versiones.

Hay dos opciones para habilitar las funciones opcionales: --option y --custom_overlay.

Usa --option si no necesitas cambiar el archivo de superposición. Con este método, asmcli obtiene el archivo del repositorio de GitHub por ti.

Usa --custom_overlay cuando necesites personalizar el archivo de superposición.

Para obtener más información, consulta Habilitar funciones opcionales en el plano de control en clústeres.

Ejecuta los siguientes comandos en Google Distributed Cloud (solo software) para VMware, Google Distributed Cloud (solo software) para bare metal, GKE en AWS, GKE en Azure, Amazon EKS o Microsoft AKS. Introduce tus valores en los marcadores de posición proporcionados.

  1. Define el contexto actual en tu clúster de usuario:

    kubectl config use-context CLUSTER_NAME
    
  2. Ejecuta asmcli install para instalar el plano de control con una función opcional. Para añadir varios archivos, especifica --custom_overlay y el nombre de archivo. Por ejemplo: --custom_overlayoverlay_file1.yaml --custom_overlay overlay_file2.yaml --custom_overlay overlay_file3.yaml

    ./asmcli install \
    --fleet_id FLEET_PROJECT_ID \
    --kubeconfig KUBECONFIG_FILE \
    --output_dir DIR_PATH \
    --platform multicloud \
    --enable_all \
    --ca mesh_ca \
    --custom_overlay OVERLAY_FILE
    
    • --fleet_id El ID del proyecto del proyecto host de la flota.
    • --kubeconfig La ruta completa al archivo kubeconfig. La variable de entorno $PWD no funciona aquí. Además, no funcionarán las ubicaciones de archivos kubeconfig relativas que usen `~`.
    • --output_dir Incluye esta opción para especificar un directorio donde asmcli descargue el paquete anthos-service-mesh y extraiga el archivo de instalación, que contiene istioctl, muestras y manifiestos. De lo contrario, asmcli descarga los archivos en un directorio tmp. Puede especificar una ruta relativa o una ruta completa. La variable de entorno $PWD no funciona aquí.
    • --platform multicloud Especifica que la plataforma es algo distinto Google Cloud, como una plataforma local o multicloud.
    • --enable_all Permite que la secuencia de comandos haga lo siguiente:
      • Concede los permisos de gestión de identidades y accesos necesarios.
      • Habilita las APIs de Google necesarias.
      • Define una etiqueta en el clúster que identifique la malla.
      • Registra el clúster en la flota si aún no lo has hecho.
    • --ca mesh_ca Usa la autoridad de certificación de Cloud Service Mesh como autoridad de certificación. Ten en cuenta que asmcliconfigura la autoridad de certificación de Cloud Service Mesh para usar Workload Identity de la flota.
    • --custom_overlay Especifica el nombre del archivo de superposición.

Instalar pasarelas

Cloud Service Mesh te ofrece la opción de desplegar y gestionar gateways como parte de tu malla de servicios. Una pasarela describe un balanceador de carga que opera en el perímetro de la malla y recibe conexiones HTTP o TCP entrantes o salientes. Las pasarelas son proxies de Envoy que te ofrecen un control pormenorizado del tráfico que entra y sale de la malla.

  1. Crea un espacio de nombres para la pasarela de entrada si aún no tienes uno. Las pasarelas son cargas de trabajo de usuario y, como práctica recomendada, no deben desplegarse en el espacio de nombres del plano de control. Sustituye GATEWAY_NAMESPACE por el nombre de tu espacio de nombres.

    kubectl create namespace GATEWAY_NAMESPACE
    

    Resultado esperado:

    namespace/GATEWAY_NAMESPACE created
    
  2. Habilita la inyección automática en la pasarela. Los pasos que debe seguir dependen de si quiere usar etiquetas de inyección predeterminadas (por ejemplo, istio-injection=enabled) o la etiqueta de revisión en el espacio de nombres de la pasarela. El webhook del inyector de sidecar usa la etiqueta de revisión y la etiqueta de revisión predeterminadas para asociar los proxies insertados con una revisión del plano de control concreta.

    1. Si ha usado una revisión de etiqueta predeterminada para habilitar la inyección automática en la pasarela, compruebe que la etiqueta predeterminada se encuentra en el directorio que ha especificado en --output_dir y que apunta a la revisión recién instalada.

      DIR_PATH/istioctl tag list
      
    2. Aplica las etiquetas de inyección predeterminadas al espacio de nombres.

      kubectl label namespace GATEWAY_NAMESPACE istio-injection=enabled istio.io/rev-
      

    Etiqueta de revisión

    1. Usa el siguiente comando para localizar la etiqueta de revisión en istiod:

      kubectl get deploy -n istio-system -l app=istiod -o \
        "jsonpath={.items[*].metadata.labels['istio\.io/rev']}{'\n'}"
      

      El comando muestra la etiqueta de revisión que corresponde a la versión de Cloud Service Mesh. Por ejemplo: asm-1253-11

    2. Aplica la etiqueta de revisión al espacio de nombres. En el siguiente comando, REVISION es el valor de la etiqueta de revisión istiod que has anotado en el paso anterior.

      kubectl label namespace GATEWAY_NAMESPACE \
        istio.io/rev=REVISION --overwrite
      

      Resultado esperado:

      namespace/GATEWAY_NAMESPACE labeled
      

    Puedes ignorar el mensaje "istio.io/rev" not found en la salida. Esto significa que el espacio de nombres no tenía la etiqueta istio.io/rev, que debería aparecer en las nuevas instalaciones de Cloud Service Mesh o en las nuevas implementaciones. Como la inyección automática falla si un espacio de nombres tiene las etiquetas istio.io/rev y istio-injection, todos los comandos kubectl label de la documentación de Cloud Service Mesh especifican explícitamente ambas etiquetas.

    Si el espacio de nombres de la pasarela no está etiquetado, los pods istio-ingressgateway fallarán con un error ImagePullBackOff cuando la pasarela intente extraer la imagen auto. Esta imagen debe sustituirse por el webhook.

  3. Descarga el archivo de configuración .yaml de la pasarela de entrada de ejemplo del repositorio anthos-service-mesh-packages.

  4. Aplica la configuración .yaml de la pasarela de entrada de ejemplo tal cual o modifícala según sea necesario.

    kubectl apply -n GATEWAY_NAMESPACE \
      -f CONFIG_PATH/istio-ingressgateway
    

    Resultado esperado:

    deployment.apps/istio-ingressgateway created
    poddisruptionbudget.policy/istio-ingressgateway created
    horizontalpodautoscaler.autoscaling/istio-ingressgateway created
    role.rbac.authorization.k8s.io/istio-ingressgateway created
    rolebinding.rbac.authorization.k8s.io/istio-ingressgateway created
    service/istio-ingressgateway created
    serviceaccount/istio-ingressgateway created
    

Más información sobre las prácticas recomendadas para las pasarelas

Desplegar y volver a desplegar cargas de trabajo

Cloud Service Mesh usa proxies sidecar para mejorar la seguridad, la fiabilidad y la observabilidad de la red. Con Cloud 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 proporciona como un contenedor independiente en el mismo pod.

La instalación no se completará hasta que habilites la inyección automática del proxy sidecar y reinicies los pods de las cargas de trabajo que se estuvieran ejecutando en tu clúster antes de instalar Cloud Service Mesh.

Para habilitar la inyección automática, etiqueta tus espacios de nombres con las etiquetas de inyección predeterminadas si la etiqueta predeterminada está configurada o con una etiqueta de revisión que se haya definido en istiod al instalar Cloud Service Mesh. El webhook del inyector de sidecar usa la etiqueta de revisión y la etiqueta de revisión predeterminadas para asociar los sidecars inyectados con una revisión de istiod. Después de añadir la etiqueta, se deben reiniciar todos los pods que haya en el espacio de nombres para que se inserten los sidecars.

Antes de implementar nuevas cargas de trabajo en un nuevo espacio de nombres, configura la inyección automática para que Cloud Service Mesh pueda monitorizar y proteger el tráfico.

  1. Los pasos necesarios para habilitar la inyección automática dependen de si quieres usar etiquetas de inyección predeterminadas o la etiqueta de revisión:

    1. Si ha usado una revisión de etiqueta predeterminada para habilitar la inyección automática en la pasarela, compruebe que la etiqueta predeterminada se encuentra en el directorio que ha especificado en --output_dir y que apunta a la revisión recién instalada.

      DIR_PATH/istioctl tag list
      
    2. Ejecuta el siguiente comando: NAMESPACE es el nombre del espacio de nombres en el que quieres habilitar la inyección automática.

      kubectl label namespace NAMESPACE istio-injection=enabled istio.io/rev-
      

    Las etiquetas de inyección predeterminadas inyectan la revisión a la que apunta la etiqueta predeterminada.

    Etiqueta de revisión

    1. Usa el siguiente comando para localizar la etiqueta de revisión en istiod:

      kubectl -n istio-system get pods -l app=istiod --show-labels
      

      El resultado es similar al siguiente:

      NAME                                READY   STATUS    RESTARTS   AGE   LABELS
      istiod-asm-1253-11-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-1253-11,istio=istiod,pod-template-hash=5788d57586
      istiod-asm-1253-11-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-1253-11,istio=istiod,pod-template-hash=5788d57586

      En el resultado, en la columna LABELS, anote el valor de la etiqueta de revisión istiod que sigue al prefijo istio.io/rev=. En este ejemplo, el valor es asm-1253-11.

    2. Aplica la etiqueta de revisión y quita la etiqueta istio-injection si existe. En el siguiente comando, NAMESPACE es el nombre del espacio de nombres en el que quieres habilitar la inyección automática y REVISION es la etiqueta de revisión que has anotado en el paso anterior.

      kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION --overwrite
      

      Puedes ignorar el mensaje "istio-injection not found" en la salida. Esto significa que el espacio de nombres no tenía la etiqueta istio-injection, que debería aparecer en las nuevas instalaciones o implementaciones de Cloud Service Mesh. Como el comportamiento de la inyección automática no está definido cuando un espacio de nombres tiene tanto la etiqueta istio-injection como la de revisión, todos los comandos kubectl label de la documentación de Cloud Service Mesh se aseguran explícitamente de que solo se defina una.

  2. Si las cargas de trabajo se estaban ejecutando en tu clúster antes de instalar Cloud Service Mesh, reinicia los pods para activar la reinyección.

    La forma de reiniciar los pods depende de tu aplicación y del entorno en el que se encuentre el clúster. Por ejemplo, en tu entorno de staging, puedes eliminar todos los pods, lo que provocará que se reinicien. Sin embargo, en tu entorno de producción, puede que tengas un proceso que implemente una implementación azul-verde para poder reiniciar los pods de forma segura y evitar interrupciones del tráfico.

    Puedes usar kubectl para realizar un reinicio gradual:

    kubectl rollout restart deployment -n NAMESPACE
    

Siguientes pasos