Instala Cloud Service Mesh en un clúster de GKE
En esta página, se explica cómo instalar Cloud Service Mesh sin administrar en el clúster en GKE:
- Ejecuta
asmcli
para realizar una instalación nueva de Cloud Service Mesh 1.23.3-asm.2. - De manera opcional, implementa una puerta de enlace de entrada.
- Implementa o vuelve a implementar tus cargas de trabajo a fin de insertar proxies de sidecar.
Ten en cuenta que, para las cargas de trabajo de Kubernetes en Google Cloud, recomendamos aprovisionar un plano de control administrado.
Si deseas obtener instrucciones para preparar una instalación sin conexión de Cloud Service Mesh, consulta Prepara una instalación sin conexión de Cloud Service Mesh. Deberás especificar las opciones --offline
y --output_dir
cuando ejecutes asmcli install
.
Limitaciones
Ten en cuenta las siguientes limitaciones:
Todos los clústeres de Cloud Service Mesh de una malla deben estar registrados en la misma flota en todo momento para usar Cloud Service Mesh. Los demás clústeres del proyecto de un clúster de Cloud Service Mesh no deben estar registrados en una flota diferente.
Para los clústeres de GKE Autopilot, solo se admite Cloud Service Mesh administrado. La compatibilidad con Cloud Service Mesh para GKE Autopilot solo está disponible con las versiones 1.21.3 y posteriores.
La herramienta
asmcli
debe tener acceso al extremo de Google Kubernetes Engine (GKE). Puedes configurar el acceso a través de un servidor de salto, como una VM de Compute Engine dentro de la nube privada virtual (VPC), que otorga acceso específico.
Antes de comenzar
Antes de comenzar, asegúrate de lo siguiente:
- Revisa los requisitos.
- Revisa la información en Planifica la instalación.
- Instala las herramientas necesarias
- Descarga
asmcli
. - Otorga permisos de administrador del clúster.
- Valida el proyecto y el clúster.
Roles necesarios para instalar Cloud Service Mesh en un clúster
En la siguiente tabla, se describen los roles necesarios para instalar Cloud Service Mesh en el clúster.
Nombre de la función | ID de la función | Otorga la ubicación | Descripción |
---|---|---|---|
Administrador de GKE Hub | roles/gkehub.admin | Proyecto de flota | Acceso completo a GKE Hubs y recursos relacionados. |
Administrador de Kubernetes Engine | roles/container.admin | Proyecto de clúster. Ten en cuenta que esta función debe otorgarse en el proyecto de flota y de clúster para las vinculaciones entre proyectos. | Proporciona acceso a la administración completa de los clústeres del contenedor y sus objetos de la API de Kubernetes. |
Administrador de configuración de malla | roles/meshconfig.admin | Proyecto de flota y de clúster | Proporciona los permisos necesarios para inicializar los componentes administrados de Cloud Service Mesh, como el plano de control administrado y el permiso de backend, que permiten que las cargas de trabajo se comuniquen con Stackdriver sin una autorización individual (tanto para el plano de control administrado como para el plano de control en el clúster). |
Administrador de IAM de proyecto | roles/resourcemanager.projectIamAdmin | Proyecto de clúster | Proporciona permisos para administrar las políticas de IAM en los proyectos. |
Administrador de cuenta de servicio | roles/iam.serviceAccountAdmin | Proyecto de flota | Autentica como una cuenta de servicio. |
Service Management Admin | roles/servicemanagement.admin | Proyecto de flota | Tiene control completo sobre los recursos de administración de servicios de Google. |
Administrador de Service Usage | roles/serviceusage.serviceUsageAdmin | Proyecto de flota | Tiene la capacidad de habilitar, inhabilitar e inspeccionar estados de servicio, inspeccionar operaciones, y consumir cuota y facturación para un proyecto de consumidor.(Nota 1) |
Administrador del servicio de CA beta | roles/privateca.admin | Proyecto de flota | Tiene acceso completo a todos los recursos del Servicio de CA. (Nota 2) |
Notas:
- Administrador de uso de servicios: Este rol es necesario como requisito previo para habilitar la API de
mesh.googleapis.com
cuando se aprovisiona Cloud Service Mesh administrado inicialmente. - Administrador del servicio de AC: Este rol solo es obligatorio si realizas la integración con el servicio de AC.
Instala Cloud Service Mesh
A continuación, se describe cómo instalar Cloud Service Mesh:
Ejecuta
asmcli install
para instalar el plano de control en el clúster en un solo clúster. Consulta las siguientes secciones para ver ejemplos de línea de comandos. Los ejemplos contienen argumentos obligatorios y opcionales, que pueden resultarte útiles. Te recomendamos que siempre especifiques el argumentooutput_dir
para poder ubicar fácilmente puertas de enlace y herramientas de ejemplo, comoistioctl
. Consulta la barra de navegación de la derecha para ver una lista de los ejemplos.Los clústeres de GKE privados necesitan un paso de configuración de firewall adicional para permitir el tráfico a
istiod
.De manera opcional, instala una puerta de enlace de entrada. De forma predeterminada,
asmcli
no se instalaistio-ingressgateway
. Te recomendamos que implementes y administres el plano de control y las puertas de enlace por separado. Si necesitas que elistio-ingressgateway
predeterminado esté instalado con el plano de control en el clúster, incluye el argumento--option legacy-default-ingressgateway
.Para completar la configuración de Cloud Service Mesh, debes habilitar la inserción automática del archivo adicional y, luego, implementar o volver a implementar las cargas de trabajo.
Si instalas Cloud Service Mesh en más de un clúster, ejecuta
asmcli install
en cada uno de ellos. Cuando ejecutesasmcli install
, asegúrate de usar el mismoFLEET_PROJECT_ID
para cada clúster. Después de instalar Cloud Service Mesh, consulta las instrucciones para configurar una malla de varios clústeres en GKE.Si tus clústeres están en redes diferentes (como están en el modo isla), debes pasar un nombre de red único a
asmcli
mediante la marca--network_id
.
Instala las funciones predeterminadas y la CA de Mesh
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 la autoridad certificadora de Cloud Service Mesh como autoridad certificadora.
Ejecuta el siguiente comando para instalar el plano de control con las funciones predeterminadas y la AC de Cloud Service Mesh. Ingresa los valores en los marcadores de posición proporcionados.
./asmcli install \
--project_id PROJECT_ID \
--cluster_name CLUSTER_NAME \
--cluster_location CLUSTER_LOCATION \
--fleet_id FLEET_PROJECT_ID \
--output_dir DIR_PATH \
--enable_all \
--ca mesh_ca
--project_id
,--cluster_name
y--cluster_location
Especifica el ID del proyecto en el que se encuentra el clúster, el nombre del clúster y la zona o región del clúster.--fleet_id
El ID del proyecto host de la flota. Si no incluyes esta opción,asmcli
usará el proyecto en el que se creó el clúster cuando este se registró.--output_dir
incluye esta opción para especificar un directorio en el queasmcli
descarga el paqueteanthos-service-mesh
y extrae el archivo de instalación, que contieneistioctl
, muestras y manifiestos. De lo contrario,asmcli
descarga los archivos en un directoriotmp
. Puedes especificar una ruta de acceso relativa o una completa. La variable de entorno$PWD
no funciona aquí.-
--enable_all
permite que la secuencia de comandos realice las siguientes acciones:- Otorga los permisos de IAM necesarios.
- Habilita las API de Google necesarias.
- Configura una etiqueta en el clúster que identifique la malla.
- Registra el clúster en la flota si aún no está registrado.
--ca mesh_ca
Usa la autoridad certificadora de Cloud Service Mesh como autoridad certificadora.asmcli
configura la autoridad certificadora de Cloud Service Mesh para que use la identidad de carga de trabajo de flota.
Instala las funciones predeterminadas y el servicio de autoridad certificadora (CA)
En esta sección, se muestra cómo ejecutar asmcli
para instalar Cloud Service Mesh con las funciones compatibles predeterminadas en tu plataforma y habilitar el Servicio de AC como autoridad certificadora.
Además de la autoridad certificadora de Cloud Service Mesh, puedes configurar Cloud Service Mesh para que use Certificate Authority Service. En esta guía, se te brinda la posibilidad de realizar la integración en el servicio de CA, lo que es recomendable para los siguientes casos de uso:
- Si necesitas autoridades certificadoras para que firmen certificados de carga de trabajo en diferentes clústeres.
- Si necesitas respaldar tus claves de firma en un HSM administrado.
- Si te encuentras en una industria altamente regulada y estás sujeto a cumplimiento.
- Si deseas encadenar tu AC de Cloud Service Mesh a un certificado raíz personalizado de empresa para firmar certificados de carga de trabajo.
El costo de la autoridad certificadora de Cloud Service Mesh se incluye en los precios de Cloud Service Mesh. El servicio de AC no está incluido en el precio base de Cloud Service Mesh y se cobra por separado. Además, el servicio de AC incluye un ANS explícito, pero la AC de Cloud Service Mesh no lo hace.
Configura el servicio de CA
- Crea el grupo de CA en el nivel
DevOps
y en la misma región que el clúster al que entrega contenido para evitar problemas de latencia excesiva o posibles interrupciones entre regiones. Para obtener más información, consulta Niveles optimizados según la carga de trabajo. - Crea la CA para tener al menos una autoridad certificadora activa en el grupo de CA en el mismo proyecto que el clúster de GKE. Usa AC subordinadas para firmar certificados de carga de trabajo de Cloud Service Mesh. Anota el grupo de CA correspondiente a la CA subordinada.
Si está destinado solo a certificados de servicio para cargas de trabajo de Cloud Service Mesh, configura la siguiente política de emisión para el grupo de AC:
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/") )
Para actualizar la política de emisión del grupo de CA, usa el siguiente comando:
gcloud privateca pools update CA_POOL --location ca_region --issuance-policy policy.yaml
Para obtener información sobre cómo configurar una política en un grupo, consulta Usa una política de emisión de certificados.
Si usas una plantilla de certificado, configúrala ahora. A fin de obtener más información, sigue la Guía del servicio de CA para los 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 CA. Si hay varias regiones para grupos de CA, crea una plantilla de certificado por región.
Configura Cloud Service Mesh para usar el servicio de AC
Ejecuta los siguientes comandos en Google Distributed Cloud (solo software) para VMware o Google Distributed Cloud (solo software) para equipos físicos para instalar el plano de control con funciones predeterminadas y Certificate Authority Service. Ingresa los valores en los marcadores de posición proporcionados.
Configura el contexto actual en tu clúster de usuario:
kubectl config use-context CLUSTER_NAME
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 host de la flota.--kubeconfig
La ruta de acceso completa al archivokubeconfig
. La variable de entorno$PWD
no funciona aquí. Además, las ubicaciones de archivoskubeconfig
relativas que usan un "~" no funcionarán.--output_dir
incluye esta opción para especificar un directorio en el queasmcli
descarga el paqueteanthos-service-mesh
y extrae el archivo de instalación, que contieneistioctl
, muestras y manifiestos. De lo contrario,asmcli
descarga los archivos en un directoriotmp
. Puedes especificar una ruta de acceso relativa o una completa. La variable de entorno$PWD
no funciona aquí.--platform multicloud
especifica que la plataforma es algo distinto de Google Cloud, como el entorno local o las múltiples nubes.-
--enable_all
permite que la secuencia de comandos realice las siguientes acciones:- Otorga los permisos de IAM necesarios.
- Habilita las API de Google necesarias.
- Configura una etiqueta en el clúster que identifique la malla.
- Registra el clúster en la flota si aún no está registrado.
--ca gcp_cas
Usa Certificate Authority Service como la autoridad certificadora. Cambiar las autoridades certificadoras durante una actualización causa tiempo de inactividad.asmcli
configura Certificate Authority Service para usar la identidad de carga de trabajo de flota.--ca_pool
El identificador completo del grupo de AC de Certificate Authority Service. Si usas una plantilla de certificado, agrega 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 SLO y las métricas de infraestructura en la IU de Cloud Service Mesh, también debes realizar los primeros tres pasos de Habilita el registro y la supervisión de la aplicación. Si no se habilitan el registro y la supervisión, y no se reciben registros ni métricas personalizados, el panel de Cloud Service Mesh no mostrará los SLO, los registros de errores ni las métricas de CPU y memoria.
Instala las funciones predeterminadas con la CA de Istio
Esta sección 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 habilita la AC de Istio.
De forma predeterminada, los entornos que instalan Cloud Service Mesh con la AC de Istio informan las métricas a Prometheus. Si deseas usar los paneles de Cloud Service Mesh, debes habilitar Stackdriver. Para obtener más información, consulta Instala con funciones opcionales.
Para obtener la mayor seguridad, recomendamos enfáticamente que mantengas una CA raíz sin conexión y uses las CA subordinadas a fin de emitir certificados para cada clúster. Para obtener más información, consulta Conecta certificados de CA. En esta configuración, todas las cargas de trabajo en la malla de servicios usan la misma autoridad certificadora raíz (CA). Cada AC de Cloud Service Mesh usa una clave y un certificado intermedios de firma de AC firmados por la AC raíz. Cuando existen varias CA dentro de una malla, se establece una jerarquía de confianza entre las CA. Puedes repetir estos pasos a fin de aprovisionar certificados y claves para cualquier cantidad de autoridades certificadoras.
El makefile para generar los certificados se encuentra en el subdirectorio istio-1.23.3-asm.1
en el directorio --output_dir
que especificaste en el comando asmcli validate
. Si no ejecutaste asmcli validate
o no tienes el directorio descargado de manera local, puedes obtener el makefile si descargas el archivo de instalación de Cloud Service Mesh y extraes el contenido.
Cambia al directorio
istio-1.23.3-asm.1
.Crea un directorio para los certificados y las claves:
mkdir -p certs && \ pushd certs
Genera un certificado raíz y una clave:
make -f ../tools/certs/Makefile.selfsigned.mk root-ca
Esto genera los siguientes archivos:
- root-cert.pem: El certificado raíz
- root-key.pem: La clave raíz
- root-ca.conf: La configuración para openssl a fin de generar el certificado raíz
- root-cert.csr: La CSR para el certificado raíz
Genera un certificado intermedio y una clave:
make -f ../tools/certs/Makefile.selfsigned.mk cluster1-cacerts
Con esta acción, se generan 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 con una computadora sin conexión, copia el directorio generado a una computadora con acceso a los clústeres.
Regresa al directorio anterior:
popd
Ejecuta el siguiente comando para instalar el plano de control con las funciones predeterminadas y con la CA de Istio. Ingresa los valores en los marcadores de posición proporcionados.
./asmcli install \
--project_id PROJECT_ID \
--cluster_name CLUSTER_NAME \
--cluster_location CLUSTER_LOCATION \
--fleet_id FLEET_PROJECT_ID \
--output_dir DIR_PATH \
--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
--project_id
,--cluster_name
y--cluster_location
Especifica el ID del proyecto en el que se encuentra el clúster, el nombre del clúster y la zona o región del clúster.--fleet_id
El ID del proyecto host de la flota. Si no incluyes esta opción,asmcli
usará el proyecto en el que se creó el clúster cuando este se registró.--output_dir
incluye esta opción para especificar un directorio en el queasmcli
descarga el paqueteanthos-service-mesh
y extrae el archivo de instalación, que contieneistioctl
, muestras y manifiestos. De lo contrario,asmcli
descarga los archivos en un directoriotmp
. Puedes especificar una ruta de acceso relativa o una completa. La variable de entorno$PWD
no funciona aquí.-
--enable_all
permite que la secuencia de comandos realice las siguientes acciones:- Otorga los permisos de IAM necesarios.
- Habilita las API de Google necesarias.
- Configura una etiqueta en el clúster que identifique la malla.
- Registra el clúster en la flota si aún no está registrado.
-ca citadel
Usa la CA de Istio como la autoridad certificada.--ca_cert
: Es el certificado intermedio.--ca_key
: Es la clave para el certificado intermedio.--root_cert
: Es el certificado raíz.--cert_chain
: Es la cadena de certificados.
Instala con la AC de Istio con Google Cloud Observability habilitado
Si deseas usar los paneles de Cloud Service Mesh, debes habilitar Stackdriver.
Ejecuta el siguiente comando para instalar el plano de control con las funciones predeterminadas y con la CA de Istio. Ingresa los valores en los marcadores de posición proporcionados.
./asmcli install \
--project_id PROJECT_ID \
--cluster_name CLUSTER_NAME \
--cluster_location CLUSTER_LOCATION \
--fleet_id FLEET_PROJECT_ID \
--output_dir DIR_PATH \
--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
--project_id
,--cluster_name
y--cluster_location
Especifica el ID del proyecto en el que se encuentra el clúster, el nombre del clúster y la zona o región del clúster.--fleet_id
El ID del proyecto host de la flota. Si no incluyes esta opción,asmcli
usará el proyecto en el que se creó el clúster cuando este se registró.--output_dir
incluye esta opción para especificar un directorio en el queasmcli
descarga el paqueteanthos-service-mesh
y extrae el archivo de instalación, que contieneistioctl
, muestras y manifiestos. De lo contrario,asmcli
descarga los archivos en un directoriotmp
. Puedes especificar una ruta de acceso relativa o una completa. La variable de entorno$PWD
no funciona aquí.-
--enable_all
permite que la secuencia de comandos realice las siguientes acciones:- Otorga los permisos de IAM necesarios.
- Habilita las API de Google necesarias.
- Configura una etiqueta en el clúster que identifique la malla.
- Registra el clúster en la flota si aún no está registrado.
-ca citadel
Usa la CA de Istio como la autoridad certificada.--ca_cert
: Es el certificado intermedio.--ca_key
: Es la clave para el certificado intermedio.--root_cert
: Es el certificado raíz.--cert_chain
: Es la cadena de certificados.--option stackdriver
Habilita la opción Stackdriver. Ten en cuenta que también puedes habilitar Stackdriver y Prometheus mediante--option prometheus-and-stackdriver
.
Instala con funciones opcionales
Un archivo de superposición es un archivo YAML que contiene un recurso personalizado (CR) IstioOperator
que pasas a asmcli
para configurar el plano de control. Puedes anular la configuración predeterminada del plano de control y habilitar una función opcional si pasas el archivo YAML a asmcli
. Puedes agregar capas a más superposiciones, y cada archivo superpuesto anula la configuración de las capas anteriores. Como recomendación, te sugerimos que guardes los archivos de superposición en tu sistema de control de versión.
Hay dos opciones para habilitar funciones opcionales: --option
y --custom_overlay
.
Usa --option
si no necesitas cambiar el archivo de superposición. Con este método, asmcli
recupera 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 Habilita funciones opcionales en el plano de control del clúster.
Ejecuta el siguiente comando para instalar el plano de control con una función opcional. Para agregar varios archivos, especifica --custom_overlay
y el nombre del archivo, por ejemplo: --custom_overlay overlay_file1.yaml
--custom_overlay overlay_file2.yaml --custom_overlay overlay_file3.yaml
. Ingresa los valores en los marcadores de posición proporcionados.
./asmcli install \
--project_id PROJECT_ID \
--cluster_name CLUSTER_NAME \
--cluster_location CLUSTER_LOCATION \
--fleet_id FLEET_PROJECT_ID \
--output_dir DIR_PATH \
--enable_all \
--ca mesh_ca \
--custom_overlay OVERLAY_FILE
--project_id
,--cluster_name
y--cluster_location
Especifica el ID del proyecto en el que se encuentra el clúster, el nombre del clúster y la zona o región del clúster.--fleet_id
El ID del proyecto host de la flota. Si no incluyes esta opción,asmcli
usará el proyecto en el que se creó el clúster cuando este se registró.--output_dir
incluye esta opción para especificar un directorio en el queasmcli
descarga el paqueteanthos-service-mesh
y extrae el archivo de instalación, que contieneistioctl
, muestras y manifiestos. De lo contrario,asmcli
descarga los archivos en un directoriotmp
. Puedes especificar una ruta de acceso relativa o una completa. La variable de entorno$PWD
no funciona aquí.-
--enable_all
permite que la secuencia de comandos realice las siguientes acciones:- Otorga los permisos de IAM necesarios.
- Habilita las API de Google necesarias.
- Configura una etiqueta en el clúster que identifique la malla.
- Registra el clúster en la flota si aún no está registrado.
--ca mesh_ca
Usa la autoridad certificadora de Cloud Service Mesh como la autoridad certificadora. Ten en cuenta queasmcli
configura la autoridad certificadora de Cloud Service Mesh para usar la identidad de carga de trabajo de flota.--custom_overlay
Especifica el nombre del archivo de superposición.
Instala puertas de enlace
Cloud Service Mesh te brinda la opción de implementar y administrar puertas de enlace como parte de tu malla de servicios. Una puerta de enlace describe un balanceador de cargas que opera en el perímetro de la malla que recibe conexiones HTTP/TCP entrantes o salientes. Las puertas de enlace son proxies de Envoy que te brindan un control detallado sobre el tráfico que entra y sale de la malla.
Crea un espacio de nombres para la puerta de enlace de entrada si aún no tienes uno. Las puertas de enlace son cargas de trabajo de usuarios y, como práctica recomendada, no deben implementarse en el espacio de nombres del plano de control. Reemplaza
GATEWAY_NAMESPACE
por el nombre de tu espacio de nombres.kubectl create namespace GATEWAY_NAMESPACE
Resultado esperado:
namespace/GATEWAY_NAMESPACE created
Habilita la inserción automática en la puerta de enlace. Los pasos necesarios dependen de si deseas usar etiquetas de inserción predeterminadas (por ejemplo,
istio-injection=enabled
) o la etiqueta de revisión en el espacio de nombres de la puerta de enlace. El webhook de inyector de archivo adicional usa la etiqueta de revisión predeterminada y la etiqueta de revisión predeterminadas para asociar los proxies insertados con una revisión específica del plano de control.Etiquetas de inserción predeterminadas
Aplica las etiquetas de inserción predeterminadas al espacio de nombres.
kubectl label namespace GATEWAY_NAMESPACE istio-injection=enabled istio.io/rev-
Etiqueta de revisión
Usa el siguiente comando para encontrar 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 genera la etiqueta de revisión que corresponde a la versión de Cloud Service Mesh, por ejemplo:
asm-1233-2
.Aplica la etiqueta de revisión a los espacios de nombres. En el siguiente comando,
REVISION
es el valor de la etiqueta de revisiónistiod
que anotaste 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 el resultado. Esto significa que el espacio de nombres no tenía la etiquetaistio.io/rev
, que debería aparecer en las nuevas instalaciones de Cloud Service Mesh o en implementaciones nuevas. Debido a que la inserción automática falla si un espacio de nombres tiene tanto la etiquetaistio.io/rev
como la etiquetaistio-injection
, todos los comandoskubectl label
de la documentación de Cloud Service Mesh especifican ambas etiquetas de forma explícita.Si no se etiqueta el espacio de nombres de la puerta de enlace, los pods
istio-ingressgateway
fallarán con un errorImagePullBackOff
cuando la puerta de enlace intente extraer la imagenauto
. El webhook debe reemplazar esta imagen.Descarga el archivo de configuración .yaml de ejemplo de la puerta de enlace de entrada del repositorio
anthos-service-mesh-packages
.Aplica la configuración .yaml de la puerta de enlace de entrada de ejemplo tal como está 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
Obtén más información sobre las prácticas recomendadas para las puertas de enlace.
Implementa y vuelve a implementar las cargas de trabajo
Cloud Service Mesh usa proxies de sidecar para mejorar la seguridad, confiabilidad y 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 entrega como un contenedor separado en el mismo pod.
La instalación no se completará hasta que habilites la inserción automática de proxy de sidecar y reinicies los Pods para las cargas de trabajo que se estaban ejecutando en tu clúster antes de instalar Cloud Service Mesh.
Para habilitar la inserción automática, debes etiquetar tus espacios de nombres con las etiquetas de inserción predeterminadas si la etiqueta predeterminada está configurada, o una etiqueta de revisión que se estableció en istiod
cuando instalaste Cloud Service Mesh. El webhook de inyector de archivo adicional usa la etiqueta de revisión predeterminada y la etiqueta de revisión para asociar los archivos adicionales incorporados con una revisión istiod
. Después de agregar la etiqueta, los Pods existentes en el espacio de nombres deben reiniciarse para que se inserten los sidecars.
Antes de implementar cargas de trabajo nuevas en un espacio de nombres nuevo, asegúrate de configurar la inserción automática para que Cloud Service Mesh pueda supervisar y proteger el tráfico.
Los pasos necesarios para habilitar la inserción automática dependen de si deseas usar las etiquetas de inserción predeterminadas o la etiqueta de revisión:
Predeterminado (recomendado)
Si usaste una revisión de etiqueta predeterminada para habilitar la inserción automática en la puerta de enlace, verifica que la etiqueta predeterminada exista en el directorio que especificaste en
--output_dir
y que apunte a la revisión recién instalada.DIR_PATH/istioctl tag list
Ejecuta el siguiente comando.
NAMESPACE
es el nombre del espacio de nombres en el que deseas habilitar la inserción automática.kubectl label namespace NAMESPACE istio-injection=enabled istio.io/rev-
Las etiquetas de inserción predeterminadas insertan la revisión a la que apunta la etiqueta predeterminada.
Etiqueta de revisión
Usa el siguiente comando para encontrar 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-1233-2-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-1233-2,istio=istiod,pod-template-hash=5788d57586 istiod-asm-1233-2-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-1233-2,istio=istiod,pod-template-hash=5788d57586
En el resultado, en la columna
LABELS
, observa el valor de la etiqueta de revisiónistiod
, que está después del prefijoistio.io/rev=
. En este ejemplo, el valor esasm-1233-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 deseas habilitar la inserción automática yREVISION
es la etiqueta de revisión que anotaste en el paso anterior.kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION --overwrite
Puedes ignorar el mensaje
"istio-injection not found"
en el resultado. Esto significa que el espacio de nombres no tenía la etiquetaistio-injection
, que debería aparecer en las nuevas instalaciones de Cloud Service Mesh o en implementaciones nuevas. Debido a que el comportamiento de la inserción automática no está definido cuando un espacio de nombres tiene tanto laistio-injection
como la etiqueta de revisión, todos los comandoskubectl label
de la documentación de Cloud Service Mesh se aseguran de forma explícita de que solo se establezca uno.
Si las cargas de trabajo se estaban ejecutando en tu clúster antes de instalar Cloud Service Mesh, reinicia los Pods para activar la reinserción.
La forma de reiniciar los pods depende de tu aplicación y del entorno en el que se encuentra el clúster. Por ejemplo, en el entorno de etapa de pruebas, puedes borrar todos los pods, lo que hace que se reinicien. Sin embargo, en tu entorno de producción, es posible que tengas un proceso que implemente una implementación azul-verde para que puedas reiniciar los pods de forma segura y evitar la interrupción del tráfico.
Puedes usar
kubectl
para realizar un reinicio progresivo:kubectl rollout restart deployment -n NAMESPACE
Próximos pasos
Si tu malla consta completamente de clústeres de GKE, consulta Configura una malla de varios clústeres en GKE.