En esta guía, se explica cómo realizar una instalación limpia de la versión 1.7.8-asm.10 de Anthos Service Mesh en un clúster existente de GKE en VMware. Si tienes instalada una versión anterior de Anthos Service Mesh, consulta Actualiza Anthos Service Mesh en GKE en VMware.
La instalación habilita las características compatibles en tu clúster para el perfil de configuración asm-multicloud
.
Acerca de los componentes del plano de control
GKE on VMware incluye los siguientes componentes de Istio preinstalados:
- Citadel está instalado en el espacio de nombres
kube-system
. - Pilot y la puerta de enlace de entrada de Istio están instalados en el espacio de nombres
gke-system
.
GKE on VMware usa estos componentes para habilitar la entrada y asegurar la comunicación entre los componentes controlados por Google. Si solo necesitas la funcionalidad de entrada, no necesitas instalar OSS Istio ni Anthos Service Mesh. Para obtener más información sobre cómo configurar la entrada, consulta Habilita la entrada.
Cuando instalas Anthos Service Mesh, sus componentes se instalan en el espacio de nombres istio-system
. Debido a que los componentes de Anthos Service Mesh están en un espacio de nombres diferente, no entran en conflicto con los componentes de Istio preinstalados de GKE en VMware.
Antes de comenzar
Revisa los siguientes requisitos antes de comenzar la configuración.
Requisitos
Debes tener una suscripción a Anthos. Como alternativa, la opción de facturación prepaga está disponible solo para GKE Enterprise en Google Cloud. Para obtener más información, consulta la guía de precios de GKE Enterprise.
Asegúrate de que el clúster de usuario en el que instales Anthos Service Mesh tenga al menos 4 CPU virtuales, 15 GB de memoria y 4 nodos.
Debes asignar un nombre a los puertos de servicio con la siguiente sintaxis:
name: protocol[-suffix]
, en la que los corchetes indican un sufijo opcional que debe comenzar con un guion. Para obtener más información, consulta Asigna nombres a puertos de servicio.Verifica que la versión del clúster se enumere en los entornos compatibles. Para verificar la versión del clúster, puedes usar la herramienta de línea de comandos de
gkectl
. Si no tienesgkectl
instalado, consulta Descargas de GKE On-Prem.gkectl version
Configura tu entorno
Necesitas tener las siguientes herramientas en la máquina en la que deseas instalar Anthos Service Mesh. Ten en cuenta que solo puedes instalar Anthos Service Mesh en un clúster de usuario, no en uno de administrador.
- La herramienta de línea de comandos de
curl
- Google Cloud CLI.
Después de instalar Google Cloud CLI:
Autentica con Google Cloud CLI
gcloud auth login
Actualiza los componentes:
gcloud components update
Instala
kubectl
:gcloud components install kubectl
Si deseas implementar y probar tu instalación con la aplicación de muestra de Boutique en línea, instala
kpt
:gcloud components install kpt
Cambia el contexto al clúster de usuario (si es necesario):
kubectl config use-context CLUSTER_NAME
Otorga permisos de administrador de clúster a tu cuenta de usuario (tu dirección de correo electrónico de acceso de Google Cloud). Estos permisos son obligatorios a fin de crear las reglas de control de acceso basado en funciones (RBAC) necesarias para Anthos Service Mesh:
kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin \ --user=USER_ACCOUNT
Descarga el archivo de instalación
-
Descarga el archivo de instalación de Anthos Service Mesh en el directorio de trabajo actual:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-linux-amd64.tar.gz
-
Descarga el archivo de firma y usa
openssl
para verificar la firma:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-linux-amd64.tar.gz.1.sig openssl dgst -verify /dev/stdin -signature istio-1.7.8-asm.10-linux-amd64.tar.gz.1.sig istio-1.7.8-asm.10-linux-amd64.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
El resultado esperado es:
Verified OK
. -
Extrae el contenido del archivo a cualquier ubicación en tu sistema de archivos. Por ejemplo, para extraer el contenido en el directorio de trabajo actual, ingresa este comando:
tar xzf istio-1.7.8-asm.10-linux-amd64.tar.gz
El comando crea un directorio de instalación en tu directorio de trabajo actual llamado
istio-1.7.8-asm.10
que contiene lo siguiente:- Hay aplicaciones de muestra en el directorio
samples
. - La herramienta de línea de comandos de
istioctl
que usas para instalar Anthos Service Mesh se encuentra en el directoriobin
. - Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio
install/kubernetes/operator/profiles
.
- Hay aplicaciones de muestra en el directorio
-
Descarga el archivo de instalación de Anthos Service Mesh en el directorio de trabajo actual:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-osx.tar.gz
-
Descarga el archivo de firma y usa
openssl
para verificar la firma:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.7.8-asm.10-osx.tar.gz.1.sig istio-1.7.8-asm.10-osx.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
El resultado esperado es:
Verified OK
. -
Extrae el contenido del archivo a cualquier ubicación en tu sistema de archivos. Por ejemplo, para extraer el contenido en el directorio de trabajo actual, ingresa este comando:
tar xzf istio-1.7.8-asm.10-osx.tar.gz
El comando crea un directorio de instalación en tu directorio de trabajo actual llamado
istio-1.7.8-asm.10
que contiene lo siguiente:- Hay aplicaciones de muestra en el directorio
samples
. - La herramienta de línea de comandos de
istioctl
que usas para instalar Anthos Service Mesh se encuentra en el directoriobin
. - Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio
install/kubernetes/operator/profiles
.
- Hay aplicaciones de muestra en el directorio
-
Descarga el archivo de instalación de Anthos Service Mesh en el directorio de trabajo actual:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-win.zip
-
Descarga el archivo de firma y usa
openssl
para verificar la firma:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-win.zip.1.sig openssl dgst -verify - -signature istio-1.7.8-asm.10-win.zip.1.sig istio-1.7.8-asm.10-win.zip <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
El resultado esperado es:
Verified OK
. -
Extrae el contenido del archivo a cualquier ubicación en tu sistema de archivos. Por ejemplo, para extraer el contenido en el directorio de trabajo actual, ingresa este comando:
tar xzf istio-1.7.8-asm.10-win.zip
El comando crea un directorio de instalación en tu directorio de trabajo actual llamado
istio-1.7.8-asm.10
que contiene lo siguiente:- Hay aplicaciones de muestra en el directorio
samples
. - La herramienta de línea de comandos de
istioctl
que usas para instalar Anthos Service Mesh se encuentra en el directoriobin
. - Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio
install/kubernetes/operator/profiles
.
- Hay aplicaciones de muestra en el directorio
-
Asegúrate de estar en el directorio raíz de la instalación de Anthos Service Mesh.
cd istio-1.7.8-asm.10
-
Para mayor comodidad, agrega las herramientas que contiene el directorio
/bin
a tu ruta de acceso (PATH).export PATH=$PWD/bin:$PATH
Linux
macOS
Windows
Crea el espacio de nombres istio-system
Crea un espacio de nombres llamado istio-system para los componentes del plano de control:
kubectl create namespace istio-system
Configura el webhook de validación
Cuando instales Anthos Service Mesh, configura una etiqueta de revisión en istiod
. Debes configurar la misma revisión en el webhook de validación.
Guarda el siguiente YAML en un archivo llamado istiod-service.yaml
:
apiVersion: v1
kind: Service
metadata:
name: istiod
namespace: istio-system
labels:
istio.io/rev: asm-178-10
app: istiod
istio: pilot
release: istio
spec:
ports:
- port: 15010
name: grpc-xds # plaintext
protocol: TCP
- port: 15012
name: https-dns # mTLS with k8s-signed cert
protocol: TCP
- port: 443
name: https-webhook # validation and injection
targetPort: 15017
protocol: TCP
- port: 15014
name: http-monitoring # prometheus stats
protocol: TCP
selector:
app: istiod
istio.io/rev: asm-178-10
Instala Anthos Service Mesh
Ejecuta el siguiente comando para instalar Anthos Service Mesh mediante el perfil
asm-multicloud
. Si deseas habilitar una función compatible opcional, incluye-f
y el nombre del archivo YAML en la siguiente línea de comandos. Consulta Habilita funciones opcionales para obtener más información.istioctl install \ --set profile=asm-multicloud \ --set revision=asm-178-10
El argumento
--set revision
agrega una etiqueta de revisión con el formatoistio.io/rev=asm-178-10
aistiod
. El webhook automático de inyector de sidecar usa la etiqueta de revisión para asociar los sidecars insertados con una revisiónistiod
particular. Para habilitar la inserción automática del sidecar para un espacio de nombres, debes etiquetarlo con una revisión que coincida con la etiqueta enistiod
.Configura el webhook de validación para que pueda encontrar el servicio
istiod
con la etiqueta de revisión:kubectl apply -f istiod-service.yaml
Este comando crea una entrada de servicio que permite que el webhook de validación verifique de manera automática las configuraciones antes de que se apliquen.
La TLS mutua automática (mTLS automática) está habilitada de forma predeterminada. Con la mTLS automática, un proxy de sidecar de cliente detecta si el servidor tiene un sidecar de forma automática. El sidecar del cliente envía mTLS a las cargas de trabajo con sidecars y envía tráfico de texto sin formato a las cargas de trabajo sin sidecars.
Verifica los componentes del plano de control
Comprueba que los pods del plano de control en istio-system
se encuentren en ejecución:
kubectl get pod -n istio-system
El resultado esperado es similar al siguiente:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-74cc894bfd-786rg 1/1 Running 0 7m19s istiod-78cdbbbdb-d7tps 1/1 Running 0 7m36s promsd-576b8db4d6-lqf64 2/2 Running 1 7m19s
Inserta proxies de sidecar
Anthos Service Mesh usa proxies de sidecar para mejorar la seguridad, confiabilidad y observabilidad de la red. Con Anthos Service Mesh, estas funciones se abstraen del contenedor principal de la aplicación y se implementan en un proxy común fuera del proceso, que se entrega como un contenedor separado en el mismo pod. Para incorporar tus Pods con el proxy de sidecar, debes configurar la inserción automática de proxy de sidecar (inserción automática) mediante el etiquetado de tus espacios de nombres con la misma etiqueta de revisión que configuraste en istiod
cuando instalaste Anthos Service Mesh.
Debes habilitar la inserción automática en cualquier espacio de nombres con cargas de trabajo que se estaban ejecutando en tu clúster antes de instalar Anthos Service Mesh.
Antes de implementar las cargas de trabajo nuevas, asegúrate de configurar la incorporación automática del proxy de sidecar para que Anthos Service Mesh pueda supervisar y asegurar 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-178-10-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-178-10,istio=istiod,pod-template-hash=5788d57586 istiod-asm-178-10-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-178-10,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-178-10
.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
Configura una dirección IP externa
La instalación predeterminada de Anthos Service Mesh supone que se asigna una dirección IP externa a los servicios LoadBalancer
de forma automática. Esto no es así en GKE en VMware. Debido a esto, debes asignar una dirección IP de forma manual para el recurso de entrada de puerta de enlace de entrada de Anthos.
Para configurar una dirección IP externa, sigue una de las secciones que se encuentran a continuación, según el modo de balanceo de cargas de tu clúster:
Configura el modo de balanceo de cargas integrado
Abre la configuración del servicio
istio-ingressgateway
:kubectl edit svc -n istio-system istio-ingressgateway
La configuración del servicio
istio-ingressgateway
se abre en el editor de texto predeterminado de tu shell.En el archivo, agrega la siguiente línea debajo del bloque de especificación (
spec
):loadBalancerIP: <your static external IP address>
Por ejemplo:
spec: loadBalancerIP: 203.0.113.1
Guarda el archivo.
Configura el modo de balanceo de cargas manual
Para exponer un servicio de tipo NodePort con una VIP en el balanceador de cargas seleccionado, primero debes averiguar los valores de nodePort
:
Visualiza la configuración del servicio
istio-ingressgateway
en tu shell:kubectl get svc -n istio-system istio-ingressgateway -o yaml
Se muestran cada uno de los puertos para las puertas de enlace de Anthos Service Mesh. El resultado del comando es similar al siguiente:
... ports: - name: status-port nodePort: 30391 port: 15020 protocol: TCP targetPort: 15020 - name: http2 nodePort: 31380 port: 80 protocol: TCP targetPort: 80 - name: https nodePort: 31390 port: 443 protocol: TCP targetPort: 443 - name: tcp nodePort: 31400 port: 31400 protocol: TCP targetPort: 31400 - name: https-kiali nodePort: 31073 port: 15029 protocol: TCP targetPort: 15029 - name: https-prometheus nodePort: 30253 port: 15030 protocol: TCP targetPort: 15030 - name: https-grafana nodePort: 30050 port: 15031 protocol: TCP targetPort: 15031 - name: https-tracing nodePort: 31204 port: 15032 protocol: TCP targetPort: 15032 - name: tls nodePort: 30158 port: 15443 protocol: TCP targetPort: 15443 ...
Expón estos puertos a través del balanceador de cargas.
Por ejemplo, el puerto de servicio llamado
http2
tieneport
80 ynodePort
31380. Supongamos que las direcciones de nodos de tu clúster de usuario son192.168.0.10
,192.168.0.11
y192.168.0.12
, y la VIP del balanceador de cargas es203.0.113.1
.Configura el balanceador de cargas para que el tráfico enviado a
203.0.113.1:80
se reenvíe a192.168.0.10:31380
,192.168.0.11:31380
o192.168.0.12:31380
. Puedes seleccionar los puertos de servicio que deseas exponer en esta VIP determinada.