En esta página se explica cómo:
- Ejecuta
asmcli
para realizar una instalación nueva de Anthos Service Mesh 1.10.6-asm.2. - Implementa o vuelve a implementar tus cargas de trabajo a fin de insertar proxies de sidecar.
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
- Descargar
asmcli
- Otorga permisos de administrador del clúster
- Valida el proyecto y el clúster
Instale Anthos Service Mesh
A continuación, se describe cómo instalar Anthos 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.De manera opcional, instala una puerta de enlace de entrada.
Para completar la configuración de Anthos Service Mesh, debes habilitar la inyección automática del archivo adicional y, luego, implementar o volver a implementar las cargas de trabajo.
Si instalas Anthos Service Mesh en más de un clúster, ejecuta
asmcli install
en cada uno de ellos. Después de instalar Anthos Service Mesh en todos los clústeres, consulta Configura una malla de varios clústeres de manera local.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 Anthos Service Mesh con las funciones compatibles predeterminadas en tu plataforma y habilitar la autoridad certificada (CA de Mesh) de Anthos Service Mesh como certificado. autoridad
GKE
Ejecuta el siguiente comando para instalar el nuevo plano de control con las funciones predeterminadas. 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 CA de Mesh como autoridad certificadora.asmcli
configura la CA de Mesh para que use identidad de carga de trabajo de flota.
Local
Configura el contexto actual en tu clúster de usuario:
kubectl config use-context CLUSTER_NAME
Ejecuta el siguiente comando para instalar el nuevo plano de control con las funciones predeterminadas. Ingresa los valores en los marcadores de posición proporcionados.
./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 host de la flota.--kubeconfig
es la ruta akubeconfig
. Puedes especificar una ruta de acceso relativa o una completa. La variable de entorno$PWD
no funciona aquí.--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 local es la plataforma.-
--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 CA de Mesh como autoridad certificada.asmcli
configura la CA de Mesh para que use identidad de carga de trabajo de flota.
Instala las funciones predeterminadas con la CA de Istio
Esta sección explica cómo:
- Genera certificados y claves para la CA de Istio que usa Anthos Service Mesh a fin de firmar tus cargas de trabajo.
- Ejecuta
asmcli
para instalar Anthos Service Mesh con las funciones predeterminadas y habilita la CA de Istio.
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 CA de Anthos Service Mesh usa una clave y un certificado intermedios de firma de CA firmados por la CA 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 certificadas.
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 Istio
- 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
asmcli
para instalar una malla mediante la CA de Istio:GKE
./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.
Local
Configura el contexto actual en tu clúster de usuario:
kubectl config use-context CLUSTER_NAME
Ejecuta el siguiente comando para instalar Anthos Service Mesh con las funciones predeterminadas y la CA de Istio:
./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 host de la flota.--kubeconfig
es la ruta akubeconfig
. Puedes especificar una ruta de acceso relativa o una completa. La variable de entorno$PWD
no funciona aquí.--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 local es la plataforma.-
--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 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.
GKE
Ejecuta el siguiente comando para instalar el nuevo plano de control con las funciones predeterminadas. 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 CA de Istio como la autoridad certificadora. Ten en cuenta queasmcli
configura la CA de Mesh para usar la identidad de carga de trabajo de flota.--custom_overlay
: Especifica el nombre del archivo de superposición.
Local
Configura el contexto actual en tu clúster de usuario:
kubectl config use-context CLUSTER_NAME
Ejecuta el siguiente comando para instalar el nuevo plano de control con las funciones predeterminadas. Ingresa los valores en los marcadores de posición proporcionados.
./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 host de la flota.--kubeconfig
es la ruta akubeconfig
. Puedes especificar una ruta de acceso relativa o una completa. La variable de entorno$PWD
no funciona aquí.--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 local es la plataforma.-
--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 CA de Istio como la autoridad certificadora. Ten en cuenta queasmcli
configura la CA de 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
Anthos 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
Habilita la inserción automática en la puerta de enlace mediante la aplicación de una etiqueta de revisión en el espacio de nombres de la puerta de enlace. El webhook de inyector de sidecar usa la etiqueta de revisión para asociar los proxies insertados con una revisión de plano de control en particular. La etiqueta de revisión que uses depende de si implementaste Anthos Service Mesh o el plano de control en el clúster.
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-1106-2-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-1106-2,istio=istiod,pod-template-hash=5788d57586 istiod-asm-1106-2-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-1106-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-1106-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-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 Anthos Service Mesh o en implementaciones nuevas. Debido a que la inserción automática falla si un espacio de nombres tiene tanto laistio-injection
como la etiqueta de revisión, todos los comandoskubectl label
de la documentación de Anthos Service Mesh incluyen la acción de quitar la etiquetaistio-injection
.Cambia al directorio que especificaste en
--output_dir
.Puedes implementar la configuración de la puerta de enlace de entrada de ejemplo que se ubica en el directorio
samples/gateways/istio-ingressgateway/
tal como está o modificarla según sea necesario.kubectl apply -n GATEWAY_NAMESPACE -f samples/gateways/istio-ingressgateway
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
Anthos Service Mesh usa proxies de sidecar para mejorar la seguridad, confiabilidad y observabilidad de la red. Con Anthos Service Mesh, estas funciones se abstraen del contenedor principal de la aplicación y se implementan en un proxy común fuera del proceso, que se entrega como un contenedor separado en el mismo pod.
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 Anthos Service Mesh.
Para habilitar la inserción automática, debes etiquetar tus espacios de nombres con la etiqueta de revisión que se estableció en istiod
cuando instalaste Anthos Service Mesh. El webhook de inyector de sidecar usa la etiqueta de revisión para asociar los sidecars insertados con una revisión istiod
particular. Después de agregar la etiqueta, los Pods existentes al espacio de nombres deben reiniciarse para que se incorporen los archivos adicionales.
Antes de implementar cargas de trabajo nuevas en un espacio de nombres nuevo, asegúrate de configurar la inserción automática para que Anthos Service Mesh pueda supervisar y proteger el tráfico.
Para habilitarla, usa este comando:
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-1106-2-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-1106-2,istio=istiod,pod-template-hash=5788d57586 istiod-asm-1106-2-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-1106-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-1106-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 Anthos Service Mesh o en implementaciones nuevas. Debido a que la inserción automática falla si un espacio de nombres tiene tanto laistio-injection
como la etiqueta de revisión, todos los comandoskubectl label
de la documentación de Anthos Service Mesh incluyen la acción de quitar la etiquetaistio-injection
.Si las cargas de trabajo se estaban ejecutando en tu clúster antes de instalar Anthos 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
Verifica que tus pods estén configurados para apuntar a la nueva versión de
istiod
.kubectl get pods -n NAMESPACE -l istio.io/rev=REVISION
Próximos pasos
Local: