Puertas de enlace virtuales - AWS App Mesh

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Puertas de enlace virtuales

Una puerta de enlace virtual permite que los recursos que están fuera de la malla se comuniquen con los recursos que están dentro de la malla. La puerta de enlace virtual representa un proxy de Envoy que se ejecuta en un servicio de Amazon ECS, en un servicio de Kubernetes o en una instancia de Amazon EC2. A diferencia de un nodo virtual, que representa un Envoy que se ejecuta con una aplicación, una puerta de enlace virtual representa un Envoy implementado por sí mismo.

Los recursos externos deben poder resolver un nombre DNS en una dirección IP asignada al servicio o la instancia que ejecuta Envoy. Luego, Envoy puede obtener acceso a toda la configuración de App Mesh para los recursos que se encuentran dentro de la malla. La configuración para gestionar las solicitudes entrantes en la puerta de enlace virtual se especifica mediante Rutas de puerta de enlace.

importante

Una puerta de enlace virtual con un oyente HTTP o HTTP2 reescribe el nombre de host de la solicitud entrante con el nombre del servicio virtual de destino de la ruta de puerta de enlace y, de forma predeterminada, reescribe como / el prefijo coincidente de la ruta de puerta de enlace. Por ejemplo, si ha configurado la ruta de la puerta de enlace, haga coincidir el prefijo con /chapter y, si la solicitud entrante es /chapter/1, la solicitud se reescribiría como /1. Para configurar las reescrituras, consulte la sección Creación de una ruta de puerta de enlace de Rutas de puerta de enlace.

Al crear una puerta de enlace virtual, proxyConfiguration y user no deben configurarse.

Para completar un tutorial integral, consulte Configuración de la puerta de enlace entrante.

Creación de una puerta de enlace virtual

nota

Al crear una puerta de enlace virtual, debe agregar un selector de espacios de nombres con una etiqueta para identificar la lista de espacios de nombres con los que asociar las rutas de puerta de enlace a la puerta de enlace virtual creada.

AWS Management Console
Para crear una puerta de enlace virtual mediante la AWS Management Console
  1. Abra la consola de App Mesh en https://console.aws.amazon.com/appmesh/.

  2. Elija la malla en la que desee crear la puerta de enlace virtual. Se muestran todas las mallas que son de su propiedad y que se han compartido con usted.

  3. Elija Enrutadores virtuales en el panel de navegación izquierdo.

  4. Seleccione Crear puerta de enlace virtual.

  5. En Nombre de puerta de enlace virtual, escriba un nombre para la puerta de enlace.

  6. (Opcional, pero recomendado) Configure los Valores predeterminados de la política del cliente.

    1. (Opcional) Seleccione Aplicar TLS si desea que la puerta de enlace solo se comunique con los servicios virtuales que utilizan la seguridad de la capa de transporte (TLS).

    2. (Opcional) Para Puertos, especifique uno o más puertos en los que desee aplicar la comunicación TLS con los servicios virtuales.

    3. Para Método de validación, seleccione una de las siguientes opciones. El certificado que especifique debe existir previamente y cumplir unos requisitos específicos. Para obtener más información, consulte Requisitos del certificado.

      • Alojamiento de AWS Private Certificate Authority: seleccione uno o más certificados existentes.

      • Alojamiento de Envoy Secret Discovery Service (SDS): escriba el nombre del secreto que Envoy obtiene mediante Secret Discovery Service.

      • Alojamiento de archivos local: especifique la ruta al archivo de la cadena de certificados en el sistema de archivos en el que esté implementado Envoy.

    4. (Opcional) Escriba un Nombre alternativo del asunto. Para agregar SAN adicionales, seleccione Agregar SAN. Los SAN deben tener el formato FQDN o URI.

    5. (Opcional) Seleccione Proporcionar un certificado de cliente y una de las siguientes opciones para proporcionar un certificado de cliente cuando un servidor lo solicite y habilitar la autenticación TLS mutua. Para obtener más información sobre la TLS mutua, consulte los documentos de Autenticación TLS mutua de App Mesh.

      • Alojamiento de Envoy Secret Discovery Service (SDS): escriba el nombre del secreto que Envoy obtiene mediante Secret Discovery Service.

      • Alojamiento de archivos local: especifique la ruta al archivo en cadena del certificado, así como la clave privada, en el sistema de archivos en el que esté implementado Envoy. Para obtener un tutorial completo e integral sobre la implementación de una malla mediante una aplicación de ejemplo que utiliza el cifrado con archivos locales, consulte Configuración de TLS con certificados TLS proporcionados por archivos en GitHub.

  7. (Opcional) Para configurar el registro, seleccione Registro. Escriba la ruta de los registros de acceso HTTP que desea que utilice Envoy. Recomendamos la ruta /dev/stdout para que pueda utilizar controladores de registro de Docker para exportar los registros de Envoy a un servicio como Registros de Amazon CloudWatch.

    nota

    Los registros deben ser recibidos por un agente en su aplicación y enviados a un destino. Esta ruta de archivo solo indica a Envoy donde enviar los registros.

  8. Configure el oyente.

    1. Seleccione un protocolo y especifique el puerto en el que Envoy escucha el tráfico. El oyente http permite la transición de la conexión a websockets. Puede hacer clic en Agregar agente de escucha para añadir varios oyentes. El botón Eliminar eliminará ese oyente.

    2. (Opcional) Habilitar grupo de conexiones

      La agrupación de conexiones limita el número de conexiones que el Envoy de puerta de enlace virtual puede establecer simultáneamente. Su objetivo es evitar que su instancia de Envoy se sobrecargue de conexiones y le permite ajustar la configuración del tráfico a las necesidades de sus aplicaciones.

      Puede configurar los ajustes del grupo de conexiones del lado de destino para un oyente de puerta de enlace virtual. App Mesh establece la configuración del conjunto de conexiones del lado del cliente en infinita de forma predeterminada, lo que simplifica la configuración de la malla.

      nota

      Los protocolos portMapping connectionPool y connectionPool deben ser iguales. Si su protocolo de oyente es grpc o http2, especifique maxRequests únicamente. Si su protocolo de oyente es http, puede especificar tanto maxConnections como maxPendingRequests.

      • En Número máximo de conexiones, especifique el número máximo de conexiones salientes.

      • En Número máximo de solicitudes, especifique el número máximo de solicitudes paralelas que se pueden establecer con el Envoy de puerta de enlace virtual.

      • (Opcional) En Número máximo de solicitudes pendientes, especifique el número de solicitudes de desbordamiento después del Número máximo de conexiones que un Envoy pone en espera. El valor predeterminado es 2147483647.

    3. (Opcional) Si desea configurar una comprobación de estado para su oyente, seleccione Habilitar la comprobación de estado.

      Una política de comprobación de estado es opcional, pero si especifica algún valor para una política de comprobación de estado, debe especificar valores para el Umbral de buen estado, Intervalo de comprobación de estado, Protocolo de comprobación de estado, Tiempo de espera de comprobación de estado y Umbral de mal estado.

      • En Protocolo de comprobación de estado, elija un protocolo. Si especifica grpc, el servicio debe ajustarse al Protocolo de comprobación de estado de GRPC.

      • En Health check port (Puerto de comprobación de estado), especifique el puerto en el que se debe ejecutar la comprobación de estado.

      • En Umbral de estado correcto, especifique el número de comprobaciones de estado correctas consecutivas que deben producirse antes de declarar que el agente de escucha está en buen estado.

      • En Health check interval (Intervalo de comprobación de estado), especifique el período de tiempo en milisegundos entre cada ejecución de comprobación de estado.

      • En Path (Ruta), especifique la ruta de destino de cada solicitud de comprobación de estado. Este valor solo se usa si el Protocolo de comprobación de estado es http o http2. El valor se ignora en el caso de los demás protocolos.

      • En Periodo de espera, especifique, en milisegundos, el plazo de tiempo que se va a esperar cuando se reciba una respuesta de comprobación de estado.

      • En Umbral de estado incorrecto, especifique el número de comprobaciones de estado incorrectas consecutivas que deben producirse antes de declarar que el agente de escucha está en mal estado.

    4. (Opcional) Si desea especificar si los clientes se comunican con esta puerta de enlace virtual mediante TLS, seleccione Habilitar la terminación de TLS.

      • En Modo, seleccione el modo para el que desea que se configure TLS en el oyente.

      • En Método del certificado, seleccione una de las siguientes opciones. El certificado debe cumplir unos requisitos específicos. Para obtener más información, consulte Requisitos del certificado.

        • Alojamiento de AWS Certificate Manager: seleccione un certificado existente.

        • Alojamiento de Envoy Secret Discovery Service (SDS): escriba el nombre del secreto que Envoy obtiene mediante el Secret Discovery Service.

        • Alojamiento local de archivos: especifique la ruta a la Cadena de certificados y a los archivos de Clave privada del sistema de archivos en el que está implementado Envoy.

      • (Opcional) Seleccione Exigir certificado de cliente y una de las siguientes opciones para habilitar la autenticación TLS mutua si el cliente proporciona un certificado. Para obtener más información sobre la TLS mutua, consulte los documentos de Autenticación TLS mutua de App Mesh.

        • Alojamiento de Envoy Secret Discovery Service (SDS): escriba el nombre del secreto que Envoy obtiene mediante el Secret Discovery Service.

        • Alojamiento de archivos local: especifique la ruta al archivo de la cadena de certificados en el sistema de archivos en el que esté implementado Envoy.

      • (Opcional) Escriba un Nombre alternativo del asunto. Para agregar SAN adicionales, seleccione Agregar SAN. Los SAN deben tener el formato FQDN o URI.

  9. Elija Crear puerta de enlace virtual para finalizar.

AWS CLI

Para crear una puerta de enlace virtual mediante la AWS CLI.

Cree una puerta de enlace virtual mediante el siguiente comando y JSON de entrada (sustituya los valores rojos por los suyos):

  1. aws appmesh create-virtual-gateway \ --mesh-name meshName \ --virtual-gateway-name virtualGatewayName \ --cli-input-json file://create-virtual-gateway.json
  2. Contenido del ejemplo create-virtual-gateway.json:

    { "spec": { "listeners": [ { "portMapping": { "port": 9080, "protocol": "http" } } ] } }
  3. Ejemplo de resultados:

    { "virtualGateway": { "meshName": "meshName", "metadata": { "arn": "arn:aws:appmesh:us-west-2:123456789012:mesh/meshName/virtualGateway/virtualGatewayName", "createdAt": "2022-04-06T10:42:42.015000-05:00", "lastUpdatedAt": "2022-04-06T10:42:42.015000-05:00", "meshOwner": "123456789012", "resourceOwner": "123456789012", "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "version": 1 }, "spec": { "listeners": [ { "portMapping": { "port": 9080, "protocol": "http" } } ] }, "status": { "status": "ACTIVE" }, "virtualGatewayName": "virtualGatewayName" } }

Para obtener más información sobre cómo crear una puerta de enlace virtual con la AWS CLI de App Mesh, consulte el comando create-virtual-gateway en la referencia de AWS CLI.

Implementar una puerta de enlace virtual

Implemente un servicio de Amazon ECS o Kubernetes que contenga solo el contenedor de Envoy. También puede implementar el contenedor de Envoy en una instancia de Amazon EC2. Para obtener más información, consulte Introducción a App Mesh y Amazon ECS. Para obtener más información sobre cómo implementar en Amazon ECS, consulte Introducción a App Mesh y Amazon ECS o Introducción a AWS App Mesh y Kubernetes para implementar en Kubernetes. Debe establecer la variable de entorno APPMESH_RESOURCE_ARN en mesh/mesh-name/virtualGateway/virtual-gateway-name y no debe especificar la configuración del proxy para que el tráfico del proxy no se redirija hacia sí mismo. De forma predeterminada, App Mesh utiliza el nombre del recurso que se especificó en APPMESH_RESOURCE_ARN cuando Envoy hace referencia a sí mismo en métricas y registros de seguimiento. Puede anular este comportamiento estableciendo la variable de entorno APPMESH_RESOURCE_CLUSTER con su propio nombre.

Recomendamos implementar varias instancias del contenedor y configurar un Equilibrador de carga de red para equilibrar la carga del tráfico a las instancias. El nombre de detección de servicios del equilibrador de carga es el nombre que desea que usen los servicios externos para obtener acceso a los recursos que están en la malla, por ejemplo, myapp.example.com. Para obtener más información, consulte Creación de un equilibrador de carga de red (Amazon ECS), Creación de un equilibrador de carga externo (Kubernetes) o Tutorial: Aumentar la disponibilidad de su aplicación en Amazon EC2. También puede encontrar más ejemplos y tutoriales en nuestros ejemplos de App Mesh.

Habilite la autorización de proxy para Envoy. Para obtener más información, consulte Autorización de proxy de Envoy.

Eliminación de una puerta de enlace virtual

AWS Management Console
Para eliminar una puerta de enlace virtual mediante la AWS Management Console
  1. Abra la consola App Mesh en https://console.aws.amazon.com/appmesh/.

  2. Elija la malla desde la que desea eliminar una puerta de enlace virtual. Se muestran todas las mallas que son de su propiedad y que se han compartido con usted.

  3. Elija Puertas de enlace virtuales en el panel de navegación izquierdo.

  4. Seleccione la puerta de enlace virtual que desee eliminar y elija Eliminar. No puede eliminar una puerta de enlace virtual si tiene alguna ruta de puerta de enlace asociada. Primero debe eliminar todas las rutas de puerta de enlace asociadas. Solo puede eliminar una puerta de enlace virtual en la que su cuenta aparezca como propietaria del recurso.

  5. En el cuadro de confirmación, escriba delete y, a continuación, elija Eliminar.

AWS CLI
Para eliminar una puerta de enlace virtual mediante la AWS CLI
  1. Use el siguiente comando para eliminar su puerta de enlace virtual (reemplace los valores rojos por los suyos):

    aws appmesh delete-virtual-gateway \ --mesh-name meshName \ --virtual-gateway-name virtualGatewayName
  2. Ejemplo de resultados:

    { "virtualGateway": { "meshName": "meshName", "metadata": { "arn": "arn:aws:appmesh:us-west-2:123456789012:mesh/meshName/virtualGateway/virtualGatewayName", "createdAt": "2022-04-06T10:42:42.015000-05:00", "lastUpdatedAt": "2022-04-07T10:57:22.638000-05:00", "meshOwner": "123456789012", "resourceOwner": "123456789012", "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "version": 2 }, "spec": { "listeners": [ { "portMapping": { "port": 9080, "protocol": "http" } } ] }, "status": { "status": "DELETED" }, "virtualGatewayName": "virtualGatewayName" } }

Para obtener más información sobre cómo eliminar una puerta de enlace virtual con la AWS CLI para App Mesh, consulte el comando delete-virtual-gateway en la referencia de la AWS CLI.