Habilita funciones opcionales en el plano de control en el clúster

En esta página, se describe cómo habilitar funciones opcionales en un plano de control en el clúster. Para obtener información sobre el plano de control administrado por Google, consulta Configura el plano de control administrado por Google.

Cuando instalas Anthos Service Mesh, las funciones que están habilitadas de forma predeterminada difieren según la plataforma. Puedes habilitar funciones opcionales si incluyes un archivo de superposición cuando instalas (o actualizas) Anthos Service Mesh. Un archivo de superposición es un archivo YAML que contiene una recurso personalizado (CR) IstioOperator que usas para configurar el plano de control. Puedes anular la configuración predeterminada y habilitar una función opcional o inhabilitar una función predeterminada en un archivo de superposición. Especifica una función por archivo de superposición. Puedes agregar capas a más superposiciones, y cada archivo superpuesto anula la configuración de las capas anteriores.

Acerca de los archivos de superposición

Los archivos de superposición de esta página se encuentran en el paquete anthos-service-mesh en GitHub. Estos archivos contienen personalizaciones comunes de la configuración predeterminada. Puedes usar estos archivos tal como están o puedes realizar cambios adicionales según sea necesario.

  • Cuando instalas Anthos Service Mesh con el comando istioctl install, puedes especificar uno o más archivos de superposición con la opción de línea de comandos -f. Aunque puedes modificar la configuración si especificas los parámetros de configuración en la línea de comandos mediante la opción --set en istioctl install, te recomendamos que uses un archivo de superposición para que puedas almacenar el archivo en tu sistema de control de versión junto con tus otros archivos de recursos personalizados. Necesitas conservar estos archivos para actualizar Anthos Service Mesh a fin de que el plano de control tenga la misma configuración después de la actualización.

  • Cuando instalas Anthos Service Mesh con la secuencia de comandos install_asm que proporciona Google, puedes especificar uno o más archivos de superposición con la --option o las opciones --custom_overlay. Si no necesitas realizar cambios en los archivos del repositorio anthos-service-mesh, puedes usar --option y la secuencia de comandos recupera el archivo de GitHub. De lo contrario, puedes realizar cambios en el archivo de superposición y, luego, usar la opción --custom_overlay para pasarlo a la secuencia de comandos install_asm.

No incluyas varios CR en un archivo superpuesto Crea archivos superpuestos separados para cada CR
varios CR en un yaml archivos yaml separados para cada CR

Descarga el paquete anthos-service-mesh

Para descargar el paquete anthos-service-mesh, sigue estos pasos:

En los siguientes pasos, se usa kpt para descargar el paquete asm desde el repositorio de GitHub. Si lo prefieres, puedes usar git clone en su lugar.

  1. Instala kpt si aún no lo hiciste:

    gcloud components install kpt
    
  2. Descarga el paquete que contiene los archivos:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.9-asm asm
    

    En los siguientes ejemplos, se supone que el paquete asm está en tu directorio de trabajo actual.

Cómo habilitar funciones opcionales

Para habilitar una característica cuando instalas Anthos Service Mesh, el comando exacto difiere un poco según tu plataforma y si usas la secuencia de comandos install_asm o el comando istioctl install.

Los siguientes ejemplos están simplificados para que solo se muestren con las superposiciones personalizadas a fin de habilitar funciones opcionales. Reemplaza OTHER_FLAGS por las opciones de línea de comandos de la guía de instalación que sigues.

Usa la secuencia de comandos install_asm

La secuencia de comandos install_asm proporciona dos formas de habilitar una función opcional. El método que uses dependerá de si necesitas hacer cambios en el archivo de superposición.

  • Usa --option cuando no necesites realizar ningún cambio en el archivo de superposición. Con --option, install_asm recupera el archivo del repositorio de GitHub, por lo que debes tener una conexión a Internet.

    ./install_asm \
      OTHER_FLAGS \
      --option OPTION_NAME
    

    Reemplaza OPTION_NAME por la opción que deseas habilitar. Para obtener una lista de opciones, consulta el paquete anthos-service-mesh.

  • Usa --custom_overlay cuando necesites personalizar el archivo de superposición.

    ./install_asm \
      OTHER_FLAGS \
      --custom_overlay PATH_TO_FILE
    

    Reemplaza PATH_TO_FILE por la ruta de acceso al archivo de superposición que deseas usar.

Usa el comando istioctl install

Usa el comando istioctl install para instalaciones de varios proyectos en GKE y para plataformas que no están en Google Cloud, como GKE en VMware.

  • Usa -f para incluir el archivo de superposición. Puede ser un archivo de superposición del paquete anthos-service-mesh sin personalizaciones o un archivo de superposición personalizado.

    istioctl install  \
     OTHER_FLAGS \
     -f PATH_TO_FILE
    

    Reemplaza PATH_TO_FILE por la ruta de acceso al archivo de superposición que deseas usar.

YAML para características opcionales

En las siguientes secciones, se proporciona el archivo YAML para habilitar características opcionales y compatibles.

Modo STRICT de mTLS

Se quitó la configuración global.mtls.enabled de la CR de IstioOperator para evitar problemas con las actualizaciones y proporcionar una instalación más flexible. Para habilitar mTLS STRICT, configura una política de autenticación de pares.

Dirige Envoy a stdout

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    accessLogFile: "/dev/stdout"

Para obtener más información, consulta Habilita el registro de acceso de Envoy.

Cloud Trace

Para las instalaciones en GKE, puedes habilitar Cloud Trace. Para obtener información detallada sobre los precios, consulta la página de precios de Cloud Trace.

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
  values:
    global:
      proxy:
        tracer: stackdriver

La tasa de muestreo predeterminada es del 1%, pero puedes anular el valor predeterminado si especificas un valor tracing.sampling. El valor debe estar en el rango de 0.0 a 100.0 con una precisión de 0.01. Por ejemplo, para hacer un seguimiento de 5 solicitudes de cada 10,000, usa 0.05.

En el siguiente ejemplo, se muestra una tasa de muestreo del 100% (que solo usarías con fines de demostración o solución de problemas).

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
    defaultConfig:
      tracing:
        sampling: 100
  values:
    global:
      proxy:
        tracer: stackdriver

Ten en cuenta que, actualmente, la configuración del rastreador es parte de la configuración de arranque del proxy, por lo que el pod debe reiniciarse y volver a insertarse para aplicar la actualización del rastreador. Por ejemplo, puedes usar el siguiente comando para reiniciar los pods que pertenecen a una implementación:

kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME

Propagación del contexto de seguimiento

Aunque los proxies de sidecar pueden enviar de forma automática intervalos de seguimiento, necesitan algunas sugerencias para unir todo el seguimiento. Las aplicaciones deben propagar los encabezados HTTP adecuados para que cuando los proxies envíen información de intervalo, los intervalos puedan correlacionarse de forma correcta en un solo seguimiento.

Para ello, una aplicación debe recopilar y propagar los siguientes encabezados de la solicitud entrante en cualquier solicitud saliente:

  • x-request-id
  • x-b3-traceid
  • x-b3-spanid
  • x-b3-parentspanid
  • x-b3-sampled
  • x-b3-flags
  • x-ot-span-context
  • x-cloud-trace-context
  • traceparent
  • grpc-trace-bin

Para ver ejemplos que propagan los encabezados, consulta Propagación del contexto de seguimiento.

Crea un seguimiento desde un cliente con un ID personalizado

Si deseas crear un seguimiento a partir de un cliente con un ID personalizado, usa el comando curl para crear una solicitud con un cliente externo y forzarlo a mostrar un seguimiento. Por ejemplo:

curl $URL --header "x-client-trace-id: 105445aa7843bc8bf206b12000100000"

Para obtener más información sobre x-client-trace-id, consulta la documentación de Envoy.

Salida mediante puertas de enlace de salida

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    egressGateways:
      - name: istio-egressgateway
        enabled: true

Para obtener más información, consulta Puertas de enlace de salida.

Interfaz de red de contenedor de Istio

La forma de habilitar la interfaz de red de contenedor (CNI) de Istio depende del entorno en el que esté instalado Anthos Service Mesh.

  1. Habilita una política de red.

  2. Elige el archivo de superposición que coincida con tu plataforma.

Habilita CNI en GKE

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    cni:
      enabled: true
      namespace: kube-system
  values:
    cni:
      cniBinDir: /home/kubernetes/bin
      excludeNamespaces:
        - istio-system
        - kube-system

Habilita la CNI en un entorno local

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    cni:
      enabled: true
      namespace: kube-system
  values:
    cni:
      cniBinDir: /opt/cni/bin
      excludeNamespaces:
        - istio-system
        - kube-system
        - gke-system

Habilita un balanceador de cargas interno

Para las instalaciones en GKE, puedes habilitar un balanceador de cargas interno para la puerta de enlace de entrada de Istio.

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    ingressGateways:
      - name: istio-ingressgateway
        enabled: true
        k8s:
          serviceAnnotations:
            cloud.google.com/load-balancer-type: "internal"
          service:
            ports:
              - name: status-port
                port: 15020
              - name: http2
                port: 80
                targetPort: 8080
              - name: https
                port: 443
                targetPort: 8443

Administración de certificados externos en la puerta de enlace de entrada

Para obtener información sobre cómo habilitar la administración de certificados externos en la puerta de enlace de entrada mediante SDS de Envoy, consulta Protege las puertas de enlace.