Usar Anthos Service Mesh

A partir de la versión 1.8 de Apigee hybrid, Apigee hybrid usa la puerta de enlace de entrada de Apigee para proporcionar una puerta de enlace de entrada para tu instalación híbrida. Si prefieres usar Anthos Service Mesh para el tráfico de entrada, sigue estos pasos para instalar Anthos Service Mesh en tu clúster.

Versiones compatibles de Anthos Service Mesh

Consulta las plataformas compatibles con Apigee Hybrid para ver las versiones de Anthos Service Mesh compatibles con la versión 1.8 de Hybrid.

Si vas a actualizar tu instalación híbrida, sigue las instrucciones que se indican en Actualizar Anthos Service Mesh.

Instalar Anthos Service Mesh

Realiza estos pasos en una instalación nueva de Apigee hybrid solo si no utilizas la pasarela de entrada de Apigee.

Sigue los procedimientos que se indican en la documentación de Anthos Service Mesh correspondiente a tu plataforma:

Las instrucciones para instalar y configurar Anthos Service Mesh varían en función de 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 en VMware (GKE On-Prem)
    • Anthos en Bare Metal
    • Clústeres de Anthos en AWS
    • Amazon EKS
  • Otras plataformas de Kubernetes: clústeres conformes creados y ejecutados en:
    • AKS
    • EKS
    • OpenShift

GKE

La secuencia para instalar Anthos Service Mesh es la siguiente:

  1. Prepárate para la instalación.
  2. Instala la nueva versión de Anthos Service Mesh.

Prepararse para instalar Anthos Service Mesh

  1. Consulta los requisitos en Actualizar Anthos Service Mesh, pero no realices la actualización todavía.
  2. Crea un archivo overlay.yaml o comprueba que el que ya tienes contiene lo siguiente:overlay.yaml
    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)%"}'
  3. Sigue las instrucciones de las siguientes secciones de la documentación de Anthos Service Mesh:
    1. Descargar asmcli
    2. Conceder permisos de administrador de clústeres
    3. Validar proyecto y clúster
    4. Actualiza tu plan con funciones opcionales. Detente antes de empezar la sección "Actualizar pasarelas".

Fuera de Google Cloud

Estas instrucciones explican cómo actualizar Anthos Service Mesh en los siguientes entornos:

  • Clústeres de Anthos en VMware (GKE On-Prem)
  • Anthos en Bare Metal
  • Clústeres de Anthos en AWS
  • Amazon EKS

La secuencia para instalar Anthos Service Mesh es la siguiente:

  1. Prepárate para la instalación.
  2. Instala la nueva versión de Anthos Service Mesh.

Prepararse para instalar Anthos Service Mesh

  1. Consulta los requisitos en Actualizar Anthos Service Mesh, pero no realices la actualización todavía.
  2. Crea un archivo overlay.yaml o comprueba que el que ya tienes contiene lo siguiente:overlay.yaml
    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)%"}'
  3. Sigue las instrucciones de las siguientes secciones de la documentación de Anthos Service Mesh:
    1. Descargar asmcli
    2. Conceder permisos de administrador de clústeres
    3. Validar proyecto y clúster
    4. Actualiza tu plan con funciones opcionales. Detente antes de empezar la sección "Actualizar pasarelas".

AKS/EKS

Prepararse para instalar Anthos Service Mesh

    Linux

  1. Descarga el archivo de instalación de Anthos Service Mesh en tu directorio de trabajo actual:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-linux-amd64.tar.gz
  2. Descarga el archivo de firma y usa OpenSSL para verificar la firma:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature 1.17.8-asm.4-distroless-linux-amd64.tar.gz.1.sig 1.17.8-asm.4-distroless.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  3. Extrae el contenido del archivo a cualquier ubicación de tu sistema de archivos. Por ejemplo, para extraer el contenido al directorio de trabajo actual, haz lo siguiente:
    tar xzf 1.17.8-asm.4-distroless-linux-amd64.tar.gz

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado 1.17.8-asm.4-distroless que contiene lo siguiente:

    • Aplicaciones de ejemplo en el directorio samples.
    • La herramienta de línea de comandos istioctl que usas para instalar Anthos Service Mesh se encuentra en el directorio bin.
    • Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio manifests/profiles.
  4. Asegúrate de que te encuentras en el directorio raíz de la instalación de Anthos Service Mesh:
    cd 1.17.8-asm.4-distroless
  5. Para mayor comodidad, añade las herramientas del directorio /bin a tu PATH:
    export PATH=$PWD/bin:$PATH
  6. macOS

  7. Descarga el archivo de instalación de Anthos Service Mesh en tu directorio de trabajo actual:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-osx.tar.gz
  8. Descarga el archivo de firma y usa OpenSSL para verificar la firma:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature 1.17.8-asm.4-distroless-osx.tar.gz.1.sig 1.17.8-asm.4-distroless.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  9. Extrae el contenido del archivo a cualquier ubicación de tu sistema de archivos. Por ejemplo, para extraer el contenido al directorio de trabajo actual, haz lo siguiente:
    tar xzf 1.17.8-asm.4-distroless-osx.tar.gz

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado 1.17.8-asm.4-distroless que contiene lo siguiente:

    • Aplicaciones de ejemplo en el directorio samples.
    • La herramienta de línea de comandos istioctl que usas para instalar Anthos Service Mesh se encuentra en el directorio bin.
    • Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio manifests/profiles.
  10. Asegúrate de que te encuentras en el directorio raíz de la instalación de Anthos Service Mesh:
    cd 1.17.8-asm.4-distroless
  11. Para mayor comodidad, añade las herramientas del directorio /bin a tu PATH:
    export PATH=$PWD/bin:$PATH
  12. Windows

  13. Descarga el archivo de instalación de Anthos Service Mesh en tu directorio de trabajo actual:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-win.zip
  14. Descarga el archivo de firma y usa OpenSSL para verificar la firma:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-win.zip.1.sig
    openssl dgst -verify - -signature 1.17.8-asm.4-distroless-win.zip.1.sig 1.17.8-asm.4-distroless.win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  15. Extrae el contenido del archivo a cualquier ubicación de tu sistema de archivos. Por ejemplo, para extraer el contenido al directorio de trabajo actual, haz lo siguiente:
    tar xzf 1.17.8-asm.4-distroless-win.zip

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado 1.17.8-asm.4-distroless que contiene lo siguiente:

    • Aplicaciones de ejemplo en el directorio samples.
    • La herramienta de línea de comandos istioctl que usas para instalar Anthos Service Mesh se encuentra en el directorio bin.
    • Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio manifests\profiles.
  16. Asegúrate de que te encuentras en el directorio raíz de la instalación de Anthos Service Mesh:
    cd 1.17.8-asm.4-distroless
  17. Para mayor comodidad, añade las herramientas del directorio \bin a tu PATH:
    set PATH=%CD%\bin:%PATH%
  18. Ahora que se ha instalado Anthos Service Mesh Istio, comprueba la versión de istioctl:
    istioctl version
  19. Crea un espacio de nombres llamado istio-system para los componentes del plano de control:
    kubectl create namespace istio-system

Instalar Anthos Service Mesh

  1. Edita el archivo overlay.yaml o crea uno 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
    
  2. Instala Anthos Service Mesh con istioctl mediante el perfil asm-multicloud:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1178-1" \
        --filename overlay.yaml

    La salida debería tener un aspecto similar a este:

    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-1178-1-798ffb964-2ls88       1/1     Running   0          3m21s
    istiod-asm-1178-1-798ffb964-fnj8c       1/1     Running   1          3m21s

    El argumento --set revision añade una etiqueta de revisión con el formato istio.io/rev=asm-1178-1 a istiod. El webhook del inyector automático de sidecars usa la etiqueta de revisión para asociar los sidecars inyectados con una revisión istiod concreta. Para habilitar la inyección automática de sidecar en un espacio de nombres, debes etiquetarlo con una revisión que coincida con la etiqueta de istiod.

  3. Comprueba que la instalación se ha completado:
    kubectl get svc -n istio-system

    La salida debería tener un aspecto similar a este:

    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-1178-1       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

OpenShift

Prepararse para instalar Anthos Service Mesh

  1. Antes de instalar la nueva versión, determina la revisión actual. Necesitará esta información para eliminar el webhook de validación y el webhook de mutación de su 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

    La salida debería tener un aspecto similar a este: 1.16

  2. Linux

  3. Asigna la restricción de contexto de seguridad (SCC) anyuid a istio-system con el siguiente comando de la CLI de OpenShift (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  4. Descarga el archivo de instalación de Anthos Service Mesh en tu directorio de trabajo actual:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-linux-amd64.tar.gz
  5. Descarga el archivo de firma y usa OpenSSL para verificar la firma:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature 1.17.8-asm.4-distroless-linux-amd64.tar.gz.1.sig 1.17.8-asm.4-distroless.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  6. Extrae el contenido del archivo a cualquier ubicación de tu sistema de archivos. Por ejemplo, para extraer el contenido al directorio de trabajo actual, haz lo siguiente:
    tar xzf 1.17.8-asm.4-distroless-linux-amd64.tar.gz

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado 1.17.8-asm.4-distroless que contiene lo siguiente:

    • Aplicaciones de ejemplo en el directorio samples.
    • La herramienta de línea de comandos istioctl que usas para instalar Anthos Service Mesh se encuentra en el directorio bin.
    • Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio manifests/profiles.
  7. Asegúrate de que te encuentras en el directorio raíz de la instalación de Anthos Service Mesh:
    cd 1.17.8-asm.4-distroless
  8. Para mayor comodidad, añade las herramientas del directorio /bin a tu PATH:
    export PATH=$PWD/bin:$PATH
  9. macOS

  10. Asigna la restricción de contexto de seguridad (SCC) anyuid a istio-system con el siguiente comando de la CLI de OpenShift (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  11. Descarga el archivo de instalación de Anthos Service Mesh en tu directorio de trabajo actual:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-osx.tar.gz
  12. Descarga el archivo de firma y usa OpenSSL para verificar la firma:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature 1.17.8-asm.4-distroless-osx.tar.gz.1.sig 1.17.8-asm.4-distroless.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  13. Extrae el contenido del archivo a cualquier ubicación de tu sistema de archivos. Por ejemplo, para extraer el contenido al directorio de trabajo actual, haz lo siguiente:
    tar xzf 1.17.8-asm.4-distroless-osx.tar.gz

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado 1.17.8-asm.4-distroless que contiene lo siguiente:

    • Aplicaciones de ejemplo en el directorio samples.
    • La herramienta de línea de comandos istioctl que usas para instalar Anthos Service Mesh se encuentra en el directorio bin.
    • Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio manifests/profiles.
  14. Asegúrate de que te encuentras en el directorio raíz de la instalación de Anthos Service Mesh:
    cd 1.17.8-asm.4-distroless
  15. Para mayor comodidad, añade las herramientas del directorio /bin a tu PATH:
    export PATH=$PWD/bin:$PATH
  16. Windows

  17. Asigna la restricción de contexto de seguridad (SCC) anyuid a istio-system con el siguiente comando de la CLI de OpenShift (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  18. Descarga el archivo de instalación de Anthos Service Mesh en tu directorio de trabajo actual:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-win.zip
  19. Descarga el archivo de firma y usa OpenSSL para verificar la firma:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-win.zip.1.sig
    openssl dgst -verify - -signature 1.17.8-asm.4-distroless-win.zip.1.sig 1.17.8-asm.4-distroless.win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  20. Extrae el contenido del archivo a cualquier ubicación de tu sistema de archivos. Por ejemplo, para extraer el contenido al directorio de trabajo actual, haz lo siguiente:
    tar xzf 1.17.8-asm.4-distroless-win.zip

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado 1.17.8-asm.4-distroless que contiene lo siguiente:

    • Aplicaciones de ejemplo en el directorio samples.
    • La herramienta de línea de comandos istioctl que usas para instalar Anthos Service Mesh se encuentra en el directorio bin.
    • Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio manifests\profiles.
  21. Asegúrate de que te encuentras en el directorio raíz de la instalación de Anthos Service Mesh:
    cd 1.17.8-asm.4-distroless
  22. Para mayor comodidad, añade las herramientas del directorio \bin a tu PATH:
    set PATH=%CD%\bin:%PATH%
  23. Ahora que se ha instalado Anthos Service Mesh Istio, comprueba la versión de istioctl:
    istioctl version
  24. Crea un espacio de nombres llamado istio-system para los componentes del plano de control:
    kubectl create namespace istio-system

Configurar el webhook de validación

Cuando instalas Anthos Service Mesh, asignas una etiqueta de revisión a istiod. Debes definir la misma revisión en el webhook de validación.

  1. Crea un archivo llamado istiod-service.yaml con el siguiente contenido:
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1178-1
        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-1178-1
      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)%"}'
  2. Usa kubectl para aplicar la configuración del webhook de validación:
    kubectl apply -f istiod-service.yaml
  3. Verifica que se ha aplicado la configuración:
    kubectl get svc -n istio-system

    La respuesta debería ser similar a esta:

    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

Instalar Anthos Service Mesh

  1. Edita el archivo overlay.yaml o crea uno 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
    
  2. Instala Anthos Service Mesh con istioctl mediante el perfil asm-multicloud:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1178-1" \
        --filename overlayfile.yaml

    La salida debería tener un aspecto similar a este:

    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-1178-1-798ffb964-2ls88       1/1     Running   0          3m21s
    istiod-asm-1178-1-798ffb964-fnj8c       1/1     Running   1          3m21s

    El argumento --set revision añade una etiqueta de revisión con el formato istio.io/rev=1.6.11-asm.1 a istiod. El webhook del inyector automático de sidecars usa la etiqueta de revisión para asociar los sidecars inyectados con una revisión istiod concreta. Para habilitar la inyección automática de sidecar en un espacio de nombres, debes etiquetarlo con una revisión que coincida con la etiqueta de istiod.

  3. Comprueba que la instalación se ha completado:
    kubectl get svc -n istio-system

    La salida debería tener un aspecto similar a este:

    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-1178-1       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s