Presentación de la puerta de enlace de entrada de Apigee
A partir de la versión 1.8, Apigee Hybrid ofrece una función nueva para administrar la puerta de enlace de entrada de tu instalación híbrida, la puerta de enlace de entrada de Apigee. Anthos Service Mesh ya no es un requisito para la instalación híbrida. Con la puerta de enlace de entrada de Apigee, Apigee dejará de proporcionar la configuración de enrutamiento a Anthos Service Mesh. Después de la actualización, debes migrar el tráfico a la nueva puerta de enlace de entrada de Apigee antes de poder comenzar a usar la función.
Apigee usa un pequeño subconjunto de funciones de Anthos Service Mesh para la puerta de enlace de entrada. A partir de la versión híbrida 1.8 de Apigee, se incluye una puerta de enlace de entrada que se instala y actualiza como parte de las actualizaciones híbridas de Apigee. Por lo tanto, no necesitas adquirir experiencia en Anthos Service Mesh para instalar, actualizar y administrar Apigee Hybrid. Los problemas relacionados con las versiones de la puerta de enlace de entrada y la compatibilidad con las versiones híbridas de Apigee se controlan automáticamente.
Hay dos situaciones de migración:
- Migración multiclúster o multirregión (recomendada):
Antes de cambiar a una nueva entrada para Apigee, desvía todo el tráfico a otro clúster o región del clúster que migras. Esto te dará tiempo para probar si la nueva puerta de enlace de entrada de Apigee funciona como se espera. Luego, vuelve a mover el tráfico al clúster actualizado.
- Actualización local (no se recomienda en entornos de producción):
Durante la actualización, Apigee mostrará la puerta de enlace de entrada nueva con una dirección IP que especifiques. A continuación, puedes probar si la nueva puerta de enlace de entrada de Apigee funciona como se espera y, luego, desviar el tráfico a la nueva entrada. Es posible que haya tiempo de inactividad durante esta actualización.
Cuando actualizas Apigee Hybrid a la versión 1.8, debes configurar la puerta de enlace de entrada de Apigee en tu archivo de anulaciones. Después de la actualización, controla qué tipo de puerta de enlace de entrada usarán tus clústeres si diriges los registros A o CNAME en tu registrador a la dirección IP de la puerta de enlace de entrada de Apigee o de Anthos Service Mesh.
Descripción general de la actualización a la versión 1.8.8
Los procedimientos para actualizar Apigee Hybrid se organizan en las siguientes secciones:
- Prepárate para la actualización.
- Instala la versión 1.8.8 del entorno de ejecución de hybrid.
- Para la puerta de enlace de entrada, elige una de las siguientes opciones:
- (Recomendada) Usa la nueva puerta de enlace de entrada de Apigee, sigue los pasos en Cambia el tráfico de Anthos Service Mesh a la puerta de enlace de entrada de Apigee.
- Continúa usando Anthos Service Mesh para tu puerta de enlace de entrada.
Requisitos
En estas instrucciones de actualización, se supone que tienes la versión 1.7.x de Apigee Hybrid o una versión de parche anterior de la versión 1.8.x instalada y deseas actualizarla a la versión 1.8.8. Si estás actualizando desde una versión anterior, consulta las instrucciones para actualizar Apigee Hybrid 1.7.
Si prefieres continuar usando Anthos Service Mesh, debes asegurarte de que Anthos Service Mesh se actualice a una versión compatible. Consulta la tabla Plataformas compatibles para conocer las versiones compatibles de Anthos Service Mesh.
Prepárate para actualizar a la versión 1.8
Crea una copia de seguridad de tu instalación híbrida (recomendado)
- En estas instrucciones, se usa la variable de entorno APIGEECTL_HOME para el directorio en tu sistema de archivos en el que instalaste
apigeectl
. Si es necesario, cambia el directorio a tu directorioapigeectl
y define la variable con el siguiente comando:Linux
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
macOS
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Windows
set APIGEECTL_HOME=%CD%
echo %APIGEECTL_HOME%
- Realiza una copia de seguridad de tu directorio
$APIGEECTL_HOME/
versión 1.7. Por ejemplo:tar -czvf $APIGEECTL_HOME/../apigeectl-v1.7-backup.tar.gz $APIGEECTL_HOME
- Realiza una copia de seguridad de tu base de datos de Cassandra según las instrucciones que se indican en Copia de seguridad y recuperación de Cassandra.
Agrega el rol Agente de Cloud Trace a la cuenta de servicio para el entorno de ejecución de Apigee. (Opcional)
Opcional: Si planeas usar Cloud Trace y aún no realizaste este paso en la instalación de Hybrid v1.7, asegúrate de que tu cuenta de servicio para tus servicios del entorno de ejecución de Apigee tenga el rol de Agente de Cloud Trace de Google.
(roles/cloudtrace.agent
).
Para los entornos de producción, por lo general, es la cuenta de servicio apigee-runtime
. En entornos que no son de producción, por lo general, es la cuenta de servicio apigee-non-prod
.
Puedes agregar el rol en la IU de la consola de Cloud > IAM y administración > Cuentas de servicio o con los siguientes comandos:
- Obtén la dirección de correo electrónico de tu cuenta de servicio con el siguiente comando:
Producción
gcloud iam service-accounts list --filter "apigee-runtime"
Si coincide con el patrón
apigee-runtime@$ORG_NAME.iam.gserviceaccount.com
, puedes usarlo en el paso siguienteNo producción
gcloud iam service-accounts list --filter "apigee-non-prod"
Si coincide con el patrón
apigee-non-prod@$ORG_NAME.iam.gserviceaccount.com
, puedes usarlo en el paso siguiente - Asigna el rol Agente de Cloud Trace a la cuenta de servicio:
Producción
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-runtime@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/cloudtrace.agent"
No producción
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/cloudtrace.agent"
Ejemplo
gcloud projects add-iam-policy-binding hybrid-example-project \ --member="serviceAccount:apigee-runtime@hybrid-example-project.iam.gserviceaccount.com" \ --role="roles/cloudtrace.agent"
En el ejemplo anterior, $PROJECT_ID es el nombre del proyecto de Google Cloud en el que se instala Apigee Hybrid.
Prepárate para instalar la puerta de enlace de entrada de Apigee
Para instalar la puerta de enlace de entrada de Apigee como parte de la actualización. Debes agregar la siguiente propiedad
ingressGateways
a tu archivo de anulaciones.
Sintaxis
ingressGateways: - name: INGRESS_NAME replicaCountMin: REPLICAS_MIN replicaCountMax: REPLICAS_MAX resources: requests: cpu: CPU_COUNT_REQ memory: MEMORY_REQ limits: cpu: CPU_COUNT_LIMIT memory: MEMORY_LIMIT svcAnnotations: # optional. See Known issue 243599452. SVC_ANNOTATIONS_KEY: SVC_ANNOTATIONS_VALUE svcLoadBalancerIP: SVC_LOAD_BALANCER_IP # optional
Ejemplo
ingressGateways: - name: prod1 replicaCountMin: 2 replicaCountMax: 100 resources: requests: cpu: 1 memory: 1Gi limits: cpu: 2 memory: 2Gi
- INGRESS_NAME es el nombre de la implementación de entrada. Puede ser cualquier nombre que cumpla con los siguientes requisitos:
- Tener una longitud máxima de 17 caracteres
- Contener solo caracteres alfanuméricos en minúscula “.” o “-”.
- Comenzar con un carácter alfanumérico
- Terminar con un carácter alfanumérico
Consulta
ingressGateways[].name
en la referencia de la propiedad de configuración. - REPLICAS_MIN y REPLICAS_MAX son los recuentos de réplicas mínimas y máximas para la puerta de enlace de entrada de Apigee en tu instalación. Para obtener más información y la configuración predeterminada, consulta
ingressGateways[].replicaCountMin
yingressGateways[].replicaCountMax
en la referencia de la propiedad de configuración. - CPU_COUNT_REQ y MEMORY_REQ son la solicitud de CPU y memoria para cada réplica de la puerta de enlace de entrada de Apigee en tu instalación.
Para obtener más información y la configuración predeterminada, consulta
ingressGateways[].resources.requests.cpu
yingressGateways[].resources.requests.memory
en la referencia de la propiedad de configuración. - CPU_COUNT_LIMIT y MEMORY_LIMIT son los límites máximos de CPU y memoria para cada réplica de la puerta de enlace de entrada de Apigee en tu instalación.
Para obtener más información y la configuración predeterminada, consulta
ingressGateways[].resources.limits.cpu
yingressGateways[].resources.limits.memory
en la referencia de la propiedad de configuración. - SVC_ANNOTATIONS_KEY y SVC_ANNOTATIONS_VALUE (opcional):
Este es un par clave-valor que proporciona anotaciones para tu servicio de entrada predeterminado. La plataforma en la nube usa las anotaciones para configurar tu instalación híbrida, por ejemplo, si estableces el tipo de balanceador de cargas como interno o externo. Por ejemplo:
ingressGateways: svcAnnotations: networking.gke.io/load-balancer-type: "Internal"
Las anotaciones varían de una plataforma a otra. Consulta la documentación de tu plataforma para ver las anotaciones obligatorias y sugeridas.
ConsultaingressGateways[].svcAnnotations
en la referencia de la propiedad de configuración. - SVC_LOAD_BALANCER_IP (opcional) te permite asignar una dirección IP estática para el balanceador de cargas. En las plataformas que admiten la especificación de la dirección IP del balanceador de cargas, el balanceador de cargas se creará con esta dirección IP. En plataformas que no te permiten especificar la dirección IP del balanceador de cargas, se ignora esta propiedad.
Si no tienes una dirección IP estática asignada a tu balanceador de cargas, deja esta propiedad fuera de tu archivo de anulaciones.
ConsultaingressGateways[].svcLoadBalancerIP
en la referencia de la propiedad de configuración.
Realizar cambios adicionales en tu archivo de anulaciones para habilitar o inhabilitar las funciones opcionales de la versión 1.8
Agrega las siguientes propiedades a tu archivo overrides.yaml
para habilitar funciones nuevas en la versión híbrida 1.8. Estas funciones son opcionales.
- El UDCA con permiso de organización ahora está activado de forma predeterminada. El uso de una sola implementación de UDCA para manejar el tráfico en todos los entornos
evita la falta de uso de Pods de UDCA y aumenta la disponibilidad de los recursos de nodo para otros componentes de Apigee.
El UDCA con permiso de la organización usa una sola cuenta de servicio para todos los entornos,
apigee-udca
.Si usas cuentas de servicio diferentes para UDCA en diferentes entornos, ten en cuenta que ahora usará la cuenta de servicio especificada a nivel de la organización en el archivo de anulaciones con
udca:serviceAccountPath
, en lugar de las que se especifican en el nivel de entorno conenvs:udca:serviceAccountPath
.Apigee Hybrid v.1.8 admite UDCA con alcance de entorno. Para mantener el UDCA por entorno, configura
orgScopedUDCA: false
.Consulta
orgScopedUDCA
en la referencia de las propiedades de configuración. - Habilita
validateOrg
para requerir una validación estricta de que la organización y el entorno de Apigee están activos y funcionan con el proyecto de Google Cloud Platform especificado en tu archivooverrides
.validateOrg: true
Consulta
validateOrg
en la referencia de las propiedades de configuración.
Instala el entorno de ejecución de hybrid 1.8.8
- Asegúrate de estar en el directorio base híbrido (el superior del directorio en el que se encuentra el archivo ejecutable
apigeectl
):cd $APIGEECTL_HOME/..
-
Descarga el paquete de lanzamientos para tu sistema operativo con el siguiente comando. Asegúrate de seleccionar tu plataforma en la siguiente tabla:
Linux
Linux de 64 bits
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.8.8/apigeectl_linux_64.tar.gz
macOS
Mac (64 bits)
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.8.8/apigeectl_mac_64.tar.gz
Windows
Windows de 64 bits
curl -LO ^ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.8.8/apigeectl_windows_64.zip
- Cambia el nombre de tu directorio
apigeectl/
actual por un nombre de directorio de copia de seguridad. Por ejemplo:Linux
mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.7/
macOS
mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.7/
Windows
rename %APIGEECTL_HOME% %APIGEECTL_HOME%-v1.7
-
Extrae el contenido del archivo gzip descargado en tu directorio base híbrido. El directorio base híbrido es el directorio donde se encuentra el directorio
apigeectl-v1.7
al que se le cambió el nombre:Linux
tar xvzf filename.tar.gz -C ./
macOS
tar xvzf filename.tar.gz -C ./
Windows
tar xvzf filename.zip -C ./
-
De forma predeterminada, el contenido del archivo tar se expande a un directorio con la versión y la plataforma en su nombre. Por ejemplo:
./apigeectl_1.8.8-xxxxxxx_linux_64
. Cambia el nombre de ese directorio aapigeectl
con el siguiente comando:Linux
mv apigeectl_1.8.8-xxxxxxx_linux_64 apigeectl
macOS
mv apigeectl_1.8.8-xxxxxxx_mac_64 apigeectl
Windows
rename apigeectl_1.8.8-xxxxxxx_windows_64 apigeectl
-
Cambia al directorio
apigeectl
:cd ./apigeectl
Este directorio es el directorio principal de
apigeectl
. Es donde se encuentra el comando ejecutableapigeectl
. - En estas instrucciones, se usa la variable de entorno
$APIGEECTL_HOME
para el directorio en tu sistema de archivos en el que está instalada la utilidadapigeectl
. Si es necesario, cambia el directorio a tu directorioapigeectl
y define la variable con el siguiente comando:Linux
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
macOS
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Windows
set APIGEECTL_HOME=%CD%
echo %APIGEECTL_HOME%
- Verifica la versión de
apigeectl
con el comandoversion
:./apigeectl version
Version: 1.8.8
- Ve al directorio
hybrid-base-directory/hybrid-files
. El directoriohybrid-files
es donde se encuentran los archivos de configuración, como el archivo de anulación, los certificados y las cuentas de servicio. Por ejemplo:cd $APIGEECTL_HOME/../hybrid-files
- Verifica que
kubectl
esté configurado en el contexto correcto con el siguiente comando. El contexto actual debe configurarse en el clúster en el que actualizas Apigee Hybrid.kubectl config get-contexts | grep \*
- En el directorio
hybrid-files
:-
Actualiza los siguientes vínculos simbólicos a
$APIGEECTL_HOME
. Estos vínculos te permiten ejecutar el comandoapigeectl
recién instalado desde el directoriohybrid-files
:ln -nfs
$APIGEECTL_HOME
/tools toolsln -nfs
$APIGEECTL_HOME
/config configln -nfs
$APIGEECTL_HOME
/templates templatesln -nfs
$APIGEECTL_HOME
/plugins plugins -
Para verificar que los symlinks se hayan creado correctamente, ejecuta este comando y asegúrate de que las rutas de los vínculos apunten a las ubicaciones correctas:
ls -l | grep ^l
-
Actualiza los siguientes vínculos simbólicos a
- Realiza una inicialización de prueba de validación para verificar si hay errores:
${APIGEECTL_HOME}/apigeectl init -f OVERRIDES_FILE --dry-run=client
En el ejemplo anterior, OVERRIDES_FILE es el nombre del archivo de anulación, por ejemplo,
./overrides/overrides.yaml
. - Si no hay errores, inicializa Hybrid 1.8.8. Con este comando, también se instala y configura la puerta de enlace de entrada de Apigee:
$APIGEECTL_HOME/apigeectl init -f OVERRIDES_FILE
- Comprueba el estado de inicialización:
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
Si se realiza de forma correcta, el resultado indica lo siguiente:
All containers ready.
Como verificación adicional, también puedes ejecutar este comando para verificar el estado de ApigeeDataStore:
kubectl describe apigeeds -n apigee
En el resultado, busca
State: running
. - Verifica si hay errores con una prueba de validación del comando
apply
mediante la marca--dry-run
:$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --dry-run=client
- Si no hay errores, aplica tus anulaciones. Selecciona y sigue las instrucciones para los entornos de producción o que no sean de producción, según tu instalación.
Producción
En los entornos de producción, debes actualizar cada componente Hybrid de forma individual y verificar el estado del componente actualizado antes de continuar con el siguiente.
- Asegúrate de que estés en el directorio
hybrid-files
. - Aplica tus anulaciones para actualizar Cassandra:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --datastore
- Verifica la finalización:
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
Continúa con el siguiente paso solo cuando los Pods estén listos.
- Aplica tus anulaciones para actualizar los componentes de telemetría y verificar la finalización:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --telemetry
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
- Abre los componentes de Redis:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --redis
- Aplica tus anulaciones para actualizar los componentes a nivel de la organización (MART, Watcher y Apigee Connect) y verifica la finalización:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --org
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
- Aplica tus anulaciones para actualizar tus entornos. Tienes dos opciones:
- Entorno por entorno: Aplica tus anulaciones a un entorno a la vez y verifica la finalización. Repite este paso para cada entorno:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --env ENV_NAME
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
En el comando anterior, ENV_NAME es el nombre del entorno que estás actualizando.
- Todos los entornos a la vez: Aplica las anulaciones a todos los entornos a la vez y verifica la finalización:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --all-envs
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
- Entorno por entorno: Aplica tus anulaciones a un entorno a la vez y verifica la finalización. Repite este paso para cada entorno:
- Aplica tus anulaciones para actualizar los componentes
virtualhosts
y verificar la finalización:$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --settings virtualhosts
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
No producción
En la mayoría de los entornos experimentales, de producción o de no producción, puedes aplicar las anulaciones a todos los componentes a la vez. Si tu entorno de no producción es grande y complejo, o imita a un entorno de producción, te recomendamos seguir las instrucciones para actualizar entornos de producción.
- Asegúrate de que estés en el directorio
hybrid-files
. $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE
- Verifica el estado:
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
- Asegúrate de que estés en el directorio
Actualiza tu versión de Kubernetes
Actualiza tu plataforma de Kubernetes a las versiones compatibles con la versión híbrida 1.8. Si necesitas ayuda, sigue la documentación de la plataforma.
Cambia el tráfico de Anthos Service Mesh a la puerta de enlace de entrada de Apigee
Para cambiar el tráfico a la puerta de enlace de entrada de Apigee, sigue estos pasos:
- Expón la puerta de enlace de entrada de Apigee. Sigue los procedimientos que aparecen en Expón la puerta de enlace de entrada de Apigee.
- Prueba la nueva puerta de enlace de entrada mediante una llamada a un proxy. Lo ideal es que pruebes todos los proxies fundamentales que tienes implementados actualmente.
- A fin de cambiar el tráfico, actualiza tus registros DNS para que apunten a la dirección IP de tu nueva puerta de enlace de entrada de Apigee.
Según tu proveedor de DNS, es posible que puedas transferir el tráfico de manera gradual al extremo nuevo.
Sugerencia: Puedes encontrar la dirección IP externa de la puerta de enlace de entrada de Apigee con el siguiente comando: kubectl get svc -n apigee -l app=apigee-ingressgateway
Deberías obtener un resultado similar al siguiente:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE apigee-ingressgateway-prod-hybrid-37a39bd LoadBalancer 192.0.2.123 233.252.0.123 15021:32049/TCP,80:31624/TCP,443:30723/TCP 16h
- Supervisa los paneles para asegurarte de que todo el tráfico del entorno de ejecución funcione. Continúa con el paso siguiente solo si todo funciona como se espera. Asegúrate de que no haya tráfico que pase por la puerta de enlace de entrada anterior (Anthos Service Mesh), ya que la actualización del DNS puede tardar en propagarse debido al almacenamiento en caché del DNS.
- Para evitar que Apigee proporcione una configuración a Anthos Service Mesh, sigue los pasos que se indican en Deja de proporcionar la configuración a ASM en la guía sobre cómo administrar la puerta de enlace de entrada de Apigee.
- Vuelve a probar y supervisa el tráfico del proxy de API.
- Sigue las instrucciones en la documentación de Anthos Service Mesh para desinstalar Anthos Service Mesh del clúster.
Actualiza Anthos Service Mesh a la versión 1.13
Realiza los procedimientos mediante la documentación de Anthos Service Mesh adecuada para tu plataforma:
Las instrucciones para instalar y configurar Anthos Service Mesh son diferentes según la plataforma. Las plataformas se dividen en las siguientes categorías:
- GKE: clústeres de Google Kubernetes Engine que se ejecutan en Google Cloud.
- Fuera de Google Cloud: Clústeres de Anthos que se ejecutan en:
- Clústeres de Anthos alojados en VMware (GKE On-Prem)
- Anthos en Bare Metal
- Clústeres de Anthos en AWS
- Amazon EKS
- Otras plataformas de Kubernetes: clústeres que cumplen con las especificaciones que se crean y ejecutan en los siguientes entornos:
- AKS
- EKS
- OpenShift
GKE
La secuencia para actualizar a la versión 1.13.9 de Anthos Service Mesh para tu instalación de Hybrid es la siguiente:
- Prepárate para la actualización.
- Instala la versión nueva de Anthos Service Mesh.
- Borra las implementaciones, los servicios y los webhooks de la versión anterior de Anthos Service Mesh de tu instalación actual.
- Actualiza las puertas de enlace y configura los webhooks nuevos.
Prepárate para actualizar Anthos Service Mesh a la versión 1.13.9
- Revisa los requisitos de Actualiza Anthos Service Mesh, pero aún no realices la actualización.
- Antes de instalar la versión nueva, determina la revisión actual. Necesitarás esta información para borrar las implementaciones, los servicios y los webhooks de la versión anterior de Anthos Service Mesh de tu instalación actual. Usa el siguiente comando para almacenar la revisión actual de
istiod
en una variable de entorno:export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
echo $DELETE_REV
Deberías obtener un resultado similar a
1.12.9-asm.2
- Crea un archivo
overlay.yaml
nuevo o verifica que tuoverlay.yaml
existente tenga el siguiente contenido:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: nodeSelector: # default node selector, if different or not using node selectors, change accordingly. cloud.google.com/gke-nodepool: apigee-runtime resources: requests: cpu: 1000m service: type: LoadBalancer loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out. ports: - name: http-status-port port: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443 meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- Sigue las instrucciones de las siguientes secciones en la documentación de Anthos Service Mesh:
- Descarga asmcli
- Otorga permisos de administrador del clúster
- Valida el proyecto y el clúster.
- Actualiza con funciones opcionales. Detente antes de iniciar la “sección Actualiza las puertas de enlace”.
- Cambia al nuevo plano de control:
- Obtén la etiqueta de revisión que está en
istiod
:kubectl get pod -n istio-system -L istio.io/rev
El resultado del comando es similar al siguiente:
NAME READY STATUS RESTARTS AGE REV istiod-asm-1139-10-67998f4b55-lrzpz 1/1 Running 0 68m asm-1129-0 istiod-asm-1139-10-67998f4b55-r76kr 1/1 Running 0 68m asm-1129-0 istiod-1129-0-1-5cd96f88f6-n7tj9 1/1 Running 0 27s asm-1139-10 istiod-1129-0-1-5cd96f88f6-wm68b 1/1 Running 0 27s asm-1139-10
- Asigna la etiqueta de revisión más reciente a una variable de entorno.
En el resultado, en la columna
REV
, anota el valor de la etiqueta de revisión de la versión nueva. En este ejemplo, el valor esasm-1139-10
.export UPGRADE_REV="REVISION_LABEL"
- Agrega la etiqueta de revisión al espacio de nombres
istio-system
y quita la etiquetaistio-injection
(si existe) con el siguiente comando.kubectl label namespace istio-system istio.io/rev=$UPGRADE_REV istio-injection- --overwrite
Si ves
"istio-injection not found"
en el resultado, puedes ignorarlo. Esto significa que el espacio de nombres no tenía la etiquetaistio-injection
antes. 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
. - Reinicia los Pods para activar la reinserción:
kubectl rollout restart deployment -n istio-system
- Prueba la aplicación para verificar que las cargas de trabajo funcionen de forma correcta.
- Si tienes cargas de trabajo en otros espacios de nombres, repite los pasos para etiquetar el espacio de nombres y reiniciar los pods.
- Obtén la etiqueta de revisión que está en
- Borra las versiones anteriores:
- Navega en el directorio en el que instalaste
asmcli
. - Almacena el directorio de salida para la instalación de Anthos Service Mesh en la variable de entorno
DIR_PATH
. Este es el mismo directorio que especificaste en el procedimiento Actualiza con funciones opcionales.export DIR_PATH=OUTPUT_DIR
- Crea una secuencia de comandos de shell que contenga los siguientes comandos:
#!/bin/bash set -ex if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl apply -f ${DIR_PATH}/asm/istio/istiod-service.yaml kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi
- Ejecuta la secuencia de comandos para borrar las versiones anteriores.
- Navega en el directorio en el que instalaste
Fuera de Google Cloud
En estas instrucciones, se describe cómo actualizar Anthos Service Mesh en:
- Clústeres de Anthos alojados en VMware (GKE On-Prem)
- Anthos en Bare Metal
- Clústeres de Anthos en AWS
- Amazon EKS
La secuencia para actualizar a la versión 1.13.9 de Anthos Service Mesh para tu instalación de Hybrid es la siguiente:
- Prepárate para la actualización.
- Instala la versión nueva de Anthos Service Mesh.
- Borra las implementaciones, los servicios y los webhooks de la versión anterior de Anthos Service Mesh de tu instalación actual.
- Actualiza las puertas de enlace y configura los webhooks nuevos.
Prepárate para actualizar Anthos Service Mesh a la versión 1.13.9
- Revisa los requisitos de Actualiza Anthos Service Mesh, pero aún no realices la actualización.
- Antes de instalar la versión nueva, determina la revisión actual. Necesitarás esta información para borrar las implementaciones, los servicios y los webhooks de la versión anterior de Anthos Service Mesh de tu instalación actual. Usa el siguiente comando para almacenar la revisión actual de
istiod
en una variable de entorno:export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
echo $DELETE_REV
Deberías obtener un resultado similar a
1.12.9-asm.2
- Crea un archivo
overlay.yaml
nuevo o verifica que tuoverlay.yaml
existente tenga el siguiente contenido:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: nodeSelector: # default node selector, if different or not using node selectors, change accordingly. cloud.google.com/gke-nodepool: apigee-runtime resources: requests: cpu: 1000m service: type: LoadBalancer loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out. ports: - name: http-status-port port: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443 values: gateways: istio-ingressgateway: runAsRoot: true meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- Sigue las instrucciones de las siguientes secciones en la documentación de Anthos Service Mesh:
- Descarga asmcli
- Otorga permisos de administrador del clúster
- Valida el proyecto y el clúster.
- Actualiza con funciones opcionales. Detente antes de iniciar la “sección Actualiza las puertas de enlace”.
- Cambia al nuevo plano de control:
- Obtén la etiqueta de revisión que está en
istiod
:kubectl get pod -n istio-system -L istio.io/rev
El resultado del comando es similar al siguiente:
NAME READY STATUS RESTARTS AGE REV istiod-asm-1139-10-67998f4b55-lrzpz 1/1 Running 0 68m asm-1129-0 istiod-asm-1139-10-67998f4b55-r76kr 1/1 Running 0 68m asm-1129-0 istiod-1129-0-1-5cd96f88f6-n7tj9 1/1 Running 0 27s asm-1139-10 istiod-1129-0-1-5cd96f88f6-wm68b 1/1 Running 0 27s asm-1139-10
- Asigna la etiqueta de revisión más reciente a una variable de entorno.
En el resultado, en la columna
REV
, anota el valor de la etiqueta de revisión de la versión nueva. En este ejemplo, el valor esasm-1139-10
.export UPGRADE_REV="REVISION_LABEL"
- Agrega la etiqueta de revisión al espacio de nombres
istio-system
y quita la etiquetaistio-injection
(si existe) con el siguiente comando.kubectl label namespace istio-system istio.io/rev=$UPGRADE_REV istio-injection- --overwrite
Si ves
"istio-injection not found"
en el resultado, puedes ignorarlo. Esto significa que el espacio de nombres no tenía la etiquetaistio-injection
antes. 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
. - Reinicia los Pods para activar la reinserción:
kubectl rollout restart deployment -n istio-system
- Prueba la aplicación para verificar que las cargas de trabajo funcionen de forma correcta.
- Si tienes cargas de trabajo en otros espacios de nombres, repite los pasos para etiquetar el espacio de nombres y reiniciar los pods.
- Obtén la etiqueta de revisión que está en
- Borra las versiones anteriores:
- Navega en el directorio en el que instalaste
asmcli
. - Almacena el directorio de salida para la instalación de Anthos Service Mesh en la variable de entorno
DIR_PATH
. Este es el mismo directorio que especificaste en el procedimiento Actualiza con funciones opcionales.export DIR_PATH=OUTPUT_DIR
- Crea una secuencia de comandos de shell que contenga los siguientes comandos:
#!/bin/bash set -ex if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl apply -f ${DIR_PATH}/asm/istio/istiod-service.yaml kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi
- Ejecuta la secuencia de comandos para borrar las versiones anteriores.
- Navega en el directorio en el que instalaste
AKS / EKS
En estas instrucciones, el proceso para actualizar la versión istio-1.13.9-asm.10 de Anthos Service Mesh en clústeres conectados de Anthos es lo mismo que realizar una instalación nueva.
Prepárate para instalar Anthos Service Mesh
- Antes de instalar la versión nueva, determina la revisión actual. Necesitarás esta información para borrar el webhook de validación y la webhook de mutación de tu instalación actual de Anthos Service Mesh. Usa el siguiente comando para almacenar la revisión actual de
istiod
en una variable de entorno:export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
echo $DELETE_REV
Deberías obtener un resultado similar a
1.12.9-asm.2
- 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.13.9-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.13.9-asm.10-linux-amd64.tar.gz.1.sig
openssl dgst -verify /dev/stdin -signature istio-1.13.9-asm.10-linux-amd64.tar.gz.1.sig istio-1.13.9-asm.10.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - 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.13.9-asm.10-linux-amd64.tar.gz
El comando crea un directorio de instalación en tu directorio de trabajo actual llamado
istio-1.13.9-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
manifests/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.13.9-asm.10
- Para mayor comodidad, agrega las herramientas que contiene el directorio
/bin
a tu ruta de accesoPATH
:export PATH=$PWD/bin:$PATH
- 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.13.9-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.13.9-asm.10-osx.tar.gz.1.sig
openssl dgst -sha256 -verify /dev/stdin -signature istio-1.13.9-asm.10-osx.tar.gz.1.sig istio-1.13.9-asm.10.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - 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.13.9-asm.10-osx.tar.gz
El comando crea un directorio de instalación en tu directorio de trabajo actual llamado
istio-1.13.9-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
manifests/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.13.9-asm.10
- Para mayor comodidad, agrega las herramientas que contiene el directorio
/bin
a tu ruta de accesoPATH
:export PATH=$PWD/bin:$PATH
- 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.13.9-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.13.9-asm.10-win.zip.1.sig
openssl dgst -verify - -signature istio-1.13.9-asm.10-win.zip.1.sig istio-1.13.9-asm.10.win.zip <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - 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.13.9-asm.10-win.zip
El comando crea un directorio de instalación en tu directorio de trabajo actual llamado
istio-1.13.9-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
manifests\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.13.9-asm.10
- Para mayor comodidad, agregue las herramientas que contiene el directorio /bin a su RUTA DE ACCESO.
set PATH=%CD%\bin:%PATH%
- Ahora que instalaste Istio de Anthos Service Mesh, verifica la versión de
istioctl
:istioctl version
- Crea un espacio de nombres llamado istio-system para los componentes del plano de control:
kubectl create namespace istio-system
Linux
macOS
Windows
Instala Anthos Service Mesh
- Edita tu archivo
overlay.yaml
o crea uno nuevo con el siguiente contenido:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: meshConfig: accessLogFile: /dev/stdout enableTracing: true accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}' components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: service: type: LoadBalancer ports: - name: status-port port: 15021 targetPort: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443
- Instala Anthos Service Mesh con
istioctl
mediante el perfilasm-multicloud
:istioctl install \ --set profile=asm-multicloud \ --set revision="asm-1139-10" \ --filename overlay.yaml
Deberías obtener un resultado similar al siguiente:
kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE istio-ingressgateway-88b6fd976-flgp2 1/1 Running 0 3m13s istio-ingressgateway-88b6fd976-p5dl9 1/1 Running 0 2m57s istiod-asm-1139-10-798ffb964-2ls88 1/1 Running 0 3m21s istiod-asm-1139-10-798ffb964-fnj8c 1/1 Running 1 3m21s
El argumento
--set revision
agrega una etiqueta de revisión con el formatoistio.io/rev=asm-1139-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
. - Verifica que se haya completado la instalación:
kubectl get svc -n istio-system
Deberías obtener un resultado similar al siguiente:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 172.200.48.52 34.74.177.168 15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP 3m35s istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 4m46s istiod-asm-1139-10 ClusterIP 172.200.63.220 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 3m43s
- Cambia al nuevo plano de control:
- Obtén la etiqueta de revisión que está en
istiod
:kubectl get pod -n istio-system -L istio.io/rev
El resultado del comando es similar al siguiente:
NAME READY STATUS RESTARTS AGE REV istiod-asm-1139-10-67998f4b55-lrzpz 1/1 Running 0 68m asm-1129-0 istiod-asm-1139-10-67998f4b55-r76kr 1/1 Running 0 68m asm-1129-0 istiod-1129-0-1-5cd96f88f6-n7tj9 1/1 Running 0 27s asm-1139-10 istiod-1129-0-1-5cd96f88f6-wm68b 1/1 Running 0 27s asm-1139-10
- Asigna la etiqueta de revisión más reciente a una variable de entorno.
En el resultado, en la columna
REV
, anota el valor de la etiqueta de revisión de la versión nueva. En este ejemplo, el valor esasm-1139-10
.export UPGRADE_REV="REVISION_LABEL"
- Agrega la etiqueta de revisión al espacio de nombres
istio-system
y quita la etiquetaistio-injection
(si existe) con el siguiente comando.kubectl label namespace istio-system istio.io/rev=$UPGRADE_REV istio-injection- --overwrite
Si ves
"istio-injection not found"
en el resultado, puedes ignorarlo. Esto significa que el espacio de nombres no tenía la etiquetaistio-injection
antes. 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
. - Reinicia los Pods para activar la reinserción:
kubectl rollout restart deployment -n istio-system
- Prueba la aplicación para verificar que las cargas de trabajo funcionen de forma correcta.
- Si tienes cargas de trabajo en otros espacios de nombres, repite los pasos para etiquetar el espacio de nombres y reiniciar los pods.
- Obtén la etiqueta de revisión que está en
- Borra las versiones anteriores:
- Navega en el directorio en el que instalaste
asmcli
. - Crea una secuencia de comandos de shell que contenga los siguientes comandos:
#!/bin/bash set -ex if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi
- Ejecuta la secuencia de comandos para borrar las versiones anteriores.
- Navega en el directorio en el que instalaste
OpenShift
En estas instrucciones, el proceso para actualizar la versión istio-1.13.9-asm.10 de Anthos Service Mesh en clústeres conectados de Anthos es lo mismo que realizar una instalación nueva.
Prepárate para instalar Anthos Service Mesh
- Antes de instalar la versión nueva, determina la revisión actual. Necesitarás esta información para borrar el webhook de validación y la webhook de mutación de tu instalación actual de Anthos Service Mesh. Usa el siguiente comando para almacenar la revisión actual de
istiod
en una variable de entorno:export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
echo $DELETE_REV
Deberías obtener un resultado similar a
1.12.9-asm.2
- Otorga la restricción de contexto de seguridad (SCC)
anyuid
al sistema istio con el siguiente comando de la CLI de OpenShift (oc
):oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- 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.13.9-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.13.9-asm.10-linux-amd64.tar.gz.1.sig
openssl dgst -verify /dev/stdin -signature istio-1.13.9-asm.10-linux-amd64.tar.gz.1.sig istio-1.13.9-asm.10.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - 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.13.9-asm.10-linux-amd64.tar.gz
El comando crea un directorio de instalación en tu directorio de trabajo actual llamado
istio-1.13.9-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
manifests/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.13.9-asm.10
- Para mayor comodidad, agrega las herramientas que contiene el directorio
/bin
a tu ruta de accesoPATH
:export PATH=$PWD/bin:$PATH
- Otorga la restricción de contexto de seguridad (SCC)
anyuid
al sistema istio con el siguiente comando de la CLI de OpenShift (oc
):oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- 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.13.9-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.13.9-asm.10-osx.tar.gz.1.sig
openssl dgst -sha256 -verify /dev/stdin -signature istio-1.13.9-asm.10-osx.tar.gz.1.sig istio-1.13.9-asm.10.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - 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.13.9-asm.10-osx.tar.gz
El comando crea un directorio de instalación en tu directorio de trabajo actual llamado
istio-1.13.9-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
manifests/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.13.9-asm.10
- Para mayor comodidad, agrega las herramientas que contiene el directorio
/bin
a tu ruta de accesoPATH
:export PATH=$PWD/bin:$PATH
- Otorga la restricción de contexto de seguridad (SCC)
anyuid
al sistema istio con el siguiente comando de la CLI de OpenShift (oc
):oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- 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.13.9-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.13.9-asm.10-win.zip.1.sig
openssl dgst -verify - -signature istio-1.13.9-asm.10-win.zip.1.sig istio-1.13.9-asm.10.win.zip <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - 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.13.9-asm.10-win.zip
El comando crea un directorio de instalación en tu directorio de trabajo actual llamado
istio-1.13.9-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
manifests\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.13.9-asm.10
- Para mayor comodidad, agregue las herramientas que contiene el directorio /bin a su RUTA DE ACCESO.
set PATH=%CD%\bin:%PATH%
- Ahora que instalaste Istio de Anthos Service Mesh, verifica la versión de
istioctl
:istioctl version
- Crea un espacio de nombres llamado istio-system para los componentes del plano de control:
kubectl create namespace istio-system
Linux
macOS
Windows
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.
- Crea un archivo
istiod-service.yaml
con el siguiente contenido:apiVersion: v1 kind: Service metadata: name: istiod namespace: istio-system labels: istio.io/rev: asm-1139-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-1139-10 meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- Usa
kubectl
para aplicar la configuración de webhook de validación:kubectl apply -f istiod-service.yaml
- Verifica si se aplicó la configuración:
kubectl get svc -n istio-system
La respuesta debería ser similar a la siguiente:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 22s
Instala Anthos Service Mesh
- Edita tu archivo
overlay.yaml
o crea uno nuevo con el siguiente contenido:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: meshConfig: accessLogFile: /dev/stdout enableTracing: true accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}' components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: service: type: LoadBalancer ports: - name: status-port port: 15021 targetPort: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443
- Instala Anthos Service Mesh con
istioctl
mediante el perfilasm-multicloud
:istioctl install \ --set profile=asm-multicloud \ --set revision="asm-1139-10" \ --filename overlayfile.yaml
Deberías obtener un resultado similar al siguiente:
kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE istio-ingressgateway-88b6fd976-flgp2 1/1 Running 0 3m13s istio-ingressgateway-88b6fd976-p5dl9 1/1 Running 0 2m57s istiod-asm-1139-10-798ffb964-2ls88 1/1 Running 0 3m21s istiod-asm-1139-10-798ffb964-fnj8c 1/1 Running 1 3m21s
El argumento
--set revision
agrega una etiqueta de revisión con el formatoistio.io/rev=1.6.11-asm.1
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
. - Verifica que se haya completado la instalación:
kubectl get svc -n istio-system
Deberías obtener un resultado similar al siguiente:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 172.200.48.52 34.74.177.168 15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP 3m35s istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 4m46s istiod-asm-1139-10 ClusterIP 172.200.63.220 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 3m43s
- Cambia al nuevo plano de control:
- Obtén la etiqueta de revisión que está en
istiod
:kubectl get pod -n istio-system -L istio.io/rev
El resultado del comando es similar al siguiente:
NAME READY STATUS RESTARTS AGE REV istiod-asm-1139-10-67998f4b55-lrzpz 1/1 Running 0 68m asm-1129-0 istiod-asm-1139-10-67998f4b55-r76kr 1/1 Running 0 68m asm-1129-0 istiod-1129-0-1-5cd96f88f6-n7tj9 1/1 Running 0 27s asm-1139-10 istiod-1129-0-1-5cd96f88f6-wm68b 1/1 Running 0 27s asm-1139-10
- Asigna la etiqueta de revisión más reciente a una variable de entorno.
En el resultado, en la columna
REV
, anota el valor de la etiqueta de revisión de la versión nueva. En este ejemplo, el valor esasm-1139-10
.export UPGRADE_REV="REVISION_LABEL"
- Agrega la etiqueta de revisión al espacio de nombres
istio-system
y quita la etiquetaistio-injection
(si existe) con el siguiente comando.kubectl label namespace istio-system istio.io/rev=$UPGRADE_REV istio-injection- --overwrite
Si ves
"istio-injection not found"
en el resultado, puedes ignorarlo. Esto significa que el espacio de nombres no tenía la etiquetaistio-injection
antes. 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
. - Reinicia los Pods para activar la reinserción:
kubectl rollout restart deployment -n istio-system
- Prueba la aplicación para verificar que las cargas de trabajo funcionen de forma correcta.
- Si tienes cargas de trabajo en otros espacios de nombres, repite los pasos para etiquetar el espacio de nombres y reiniciar los pods.
- Obtén la etiqueta de revisión que está en
- Borra las versiones anteriores:
- Navega en el directorio en el que instalaste
asmcli
. - Crea una secuencia de comandos de shell que contenga los siguientes comandos:
#!/bin/bash set -ex if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi
- Ejecuta la secuencia de comandos para borrar las versiones anteriores.
- Navega en el directorio en el que instalaste
Revierte una actualización
Sigue estos pasos para revertir una actualización anterior:
- Limpia los trabajos completados del espacio de nombres del entorno de ejecución híbrido, en el que NAMESPACE es el espacio de nombres especificado en el archivo de anulaciones, si especificaste un espacio de nombres. De lo contrario, el espacio de nombres predeterminado será
apigee
:kubectl delete job -n NAMESPACE \ $(kubectl get job -n NAMESPACE \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
- Limpia los trabajos completados del espacio de nombres
apigee-system
:kubectl delete job -n apigee-system \ $(kubectl get job -n apigee-system \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
- Cambia la variable
APIGEECTL_HOME
para que apunte al directorio que contiene la versión previa deapigeectl
. Por ejemplo:export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
- Deshace los cambios en tu archivo
overrides
:- Quita o marca como comentario
ingressGateways
y todas sus propiedades. - Configura el valor de
virtualhosts.selector.app
como el valor anterior, por ejemplo:virtualhosts: - name: my-env-group selector: app: istio-ingressgateway
- Quita o marca como comentario
ao.args.disableIstioConfigInAPIServer
.
- Quita o marca como comentario
- En el directorio raíz de la instalación a la que deseas revertir, ejecuta
apigeectl apply
, verifica el estado de los Pods y, luego, ejecutaapigeectl init
. Asegúrate de usar el archivo de anulaciones original para la versión a la que deseas revertir:- En el directorio archivos híbridos, ejecuta
apigeectl apply
:$APIGEECTL_HOME
/apigeectl apply -f ORIGINAL_OVERRIDES_FILEEn el ejemplo anterior, ORIGINAL_OVERRIDES_FILE es la ruta relativa y el nombre de archivo del archivo de anulación de la instalación híbrida de la versión anterior, por ejemplo,
./overrides/overrides1.7.yaml
. - Verifica el estado de los pods:
kubectl -n NAMESPACE get pods
En el ejemplo anterior, NAMESPACE es el espacio de nombres híbrido de Apigee.
- Verifica el estado de
apigeeds
:kubectl describe apigeeds -n apigee
Deberías obtener un resultado similar al siguiente:
Status: Cassandra Data Replication: Cassandra Pod Ips: 10.8.2.204 Cassandra Ready Replicas: 1 Components: Cassandra: Last Successfully Released Version: Revision: v1-f8aa9a82b9f69613 Version: v1 Replicas: Available: 1 Ready: 1 Total: 1 Updated: 1 State: running Scaling: In Progress: false Operation: Requested Replicas: 0 State: running
Continúa con el siguiente paso solo cuando el Pod
apigeeds
esté en ejecución. - Ejecuta el siguiente comando para tomar nota de los valores nuevos de cantidad de réplicas del procesador de mensajes después de la actualización. Si estos valores no coinciden con lo que configuraste antes, cambia los valores en el archivo de anulación para que coincidan con tu configuración anterior.
apigeectl apply -f ORIGINAL_OVERRIDES_FILE --dry-run=client --print-yaml --env ENV_NAME 2>/dev/null |grep "runtime:" -A 25 -B 1| grep "autoScaler" -A 2
Deberías obtener un resultado similar al siguiente:
autoScaler: minReplicas: 2 maxReplicas: 10
-
Si reviertes a la versión 1.8.4 de Hybrid o una anterior, borra la implementación del controlador que usa la versión 1.8.5 de Hybrid y versiones posteriores:
kubectl -n apigee-system delete deploy apigee-controller-manager
- Ejecuta
apigeectl init
:$APIGEECTL_HOME
/apigeectl init -f ORIGINAL_OVERRIDES_FILE
- En el directorio archivos híbridos, ejecuta
- Borra la implementación del administrador de puerta de enlace de entrada de Apigee. Este componente solo es relevante para las versiones de Apigee Hybrid 1.8 y posteriores.
kubectl delete deployment -n NAMESPACE apigee-ingress-gateway-manager
En el ejemplo anterior, NAMESPACE es el espacio de nombres híbrido de Apigee.