Compartir a través de


Solución de problemas de puerta de enlace de entrada de complemento de Istio Service Mesh

En este artículo se describe cómo solucionar problemas de puerta de enlace de entrada en el complemento de malla de servicio Istio para Azure Kubernetes Service (AKS). La puerta de enlace de entrada de Istio es un proxy inverso basado en Envoy que puede usar para enrutar el tráfico entrante a las cargas de trabajo de la malla.

Para el complemento de malla de servicio basado en Istio, ofrecemos las siguientes opciones de puerta de enlace de entrada:

  • Puerta de enlace de entrada interna que usa una dirección IP privada.

  • Puerta de enlace de entrada externa que usa una dirección IP accesible públicamente.

Nota:

Microsoft no admite la personalización de la dirección IP para las puertas de enlace de entrada internas o externas. Cualquier cambio de personalización de IP en el complemento de malla de servicio de Istio se revertirá.

El complemento implementa pods e implementaciones de puerta de enlace de entrada de Istio por revisión. Si va a realizar una actualización controlada y tiene dos revisiones del plano de control instaladas en el clúster, es posible que tenga que solucionar varios pods de puerta de enlace de entrada en ambas revisiones.

Lista de comprobación de solución de problemas

Paso 1: Asegúrese de que no haya ninguna regla de firewall o grupo de seguridad de red bloquee la puerta de enlace de entrada.

Compruebe que no tiene reglas de firewall o grupo de seguridad de red (NSG) que bloquean el tráfico a la puerta de enlace de entrada. Debe agregar explícitamente una regla de traducción de direcciones de red de destino (DNAT) para permitir el tráfico entrante a través de Azure Firewall a la puerta de enlace de entrada.

Paso 2: Configurar las puertas de enlace, los servicios virtuales y las reglas de destino correctamente

Al configurar puertas de enlace, servicios virtuales y reglas de destino para el enrutamiento de tráfico a través de la puerta de enlace de entrada, siga estos pasos:

  1. Asegúrese de que el selector de puerta de enlace de entrada del recurso de puerta de enlace esté establecido en uno de los siguientes valores de texto si usa una puerta de enlace interna o externa, respectivamente:

    • istio: aks-istio-ingressgateway-external
    • istio: aks-istio-ingressgateway-internal
  2. Asegúrese de que los puertos se establecen correctamente en puertas de enlace y servicios virtuales. Para la puerta de enlace, el puerto debe establecerse 80 en para http o 443 para https. Para el servicio virtual, el puerto debe establecerse en el puerto en el que escucha el servicio correspondiente para la aplicación.

  3. Compruebe que el servicio se expone dentro de la hosts especificación para la puerta de enlace y el servicio virtual. Si experimenta problemas relacionados con el Host encabezado en las solicitudes, intente agregar a la lista de permitidos todos los hosts que contienen un carácter comodín asterisco ("*"), como en esta configuración de puerta de enlace de ejemplo. Sin embargo, se recomienda no modificar la lista de permitidos como práctica de producción. Además, la hosts especificación debe configurarse explícitamente.

Paso 3: Corrección del estado del pod de puerta de enlace de entrada

Si el pod de puerta de enlace de entrada se bloquea o no aparece en el estado listo, compruebe que el pod del plano de control de Istioistiod está en estado listo. La puerta de enlace de entrada depende de que la istiod versión esté lista.

Si el istiod pod no aparece en el estado listo, asegúrese de que las definiciones de recursos personalizados (CRD) de Istio y el base gráfico de Helm está instalado correctamente. Para ello, ejecute el siguiente comando:

helm ls --all --all-namespaces

Es posible que vea un error más amplio en el que la instalación del complemento no está configurada específicamente para la puerta de enlace de entrada.

Si el istiod pod es correcto, pero los pods de puerta de enlace de entrada no responden, inspeccione los siguientes recursos de puerta de enlace de entrada en el aks-istio-ingress espacio de nombres para recopilar más información:

  • Versión de Helm
  • Implementación
  • Service

Además, puede encontrar más información sobre la depuración de puerta de enlace y sidecar en solución de problemas del complemento general de malla de servicio istio.

Paso 4: Configuración del uso de recursos

El uso elevado de los recursos se produce cuando la configuración predeterminada de réplica mínima/máxima para Istiod y las puertas de enlace no son suficientes. En este caso, cambie las configuraciones de escalado automático horizontal de pods.

Paso 5: Solución de problemas de la puerta de enlace de entrada segura

Cuando se configura una puerta de enlace de entrada externa para exponer un servicio HTTPS seguro mediante TLS simple o mutua, siga estos pasos de solución de problemas:

  1. Compruebe que los valores de las INGRESS_HOST_EXTERNAL variables de entorno y SECURE_INGRESS_PORT_EXTERNAL son válidos en función de la salida del comando siguiente:

    kubectl -n aks-istio-ingress get service aks-istio-ingressgateway-external
    
  2. Compruebe si hay mensajes de error en los registros del controlador de puerta de enlace:

    kubectl logs -n aks-istio-ingress <gateway-service-pod>
    
  3. Compruebe que los secretos se crean en el aks-istio-ingress espacio de nombres:

    kubectl -n aks-istio-ingress get secrets
    

En el ejemplo de Puerta de enlace de entrada segura para el complemento de malla de servicio Istio para Azure Kubernetes Service, se debe enumerar el productpage-credential secreto.

Después de habilitar el complemento del proveedor de secretos de Azure Key Vault, debe conceder acceso a la identidad administrada asignada por el usuario del complemento a Azure Key Vault. La configuración incorrecta del acceso a Azure Key Vault impedirá que se cree el productpage-credential secreto.

Después de crear el SecretProviderClass recurso, para asegurarse de que los secretos se sincronicen desde Azure Key Vault al clúster, asegúrese de que el pod secrets-store-sync-productpage de ejemplo que hace referencia a este recurso se implementa correctamente.

Referencias

Aviso de declinación de responsabilidades sobre la información de terceros

Los productos de otros fabricantes que se mencionan en este artículo han sido creados por compañías independientes de Microsoft. Microsoft no ofrece ninguna garantía, ya sea implícita o de otro tipo, sobre la confiabilidad o el rendimiento de dichos productos.

Aviso de declinación de responsabilidades sobre la información de contacto de terceros

Microsoft proporciona información de contacto de otros proveedores para ayudarle a encontrar información adicional sobre este tema. Esta información de contacto puede cambiar sin previo aviso. Microsoft no garantiza la precisión de esta información de contacto de terceros.

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.