View a markdown version of this page

Configuración de redes para entornos de Beanstalk Cluster - AWS Elastic Beanstalk

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.

Configuración de redes para entornos de Beanstalk Cluster

Beanstalk Cluster ejecuta su entorno en un clúster de Amazon EKS. Las subredes que seleccione cumplen dos funciones: determinan dónde se ejecutan los nodos del clúster y qué clúster ejecuta el entorno. Si no selecciona ninguna subred, Elastic Beanstalk usa las subredes públicas de la VPC predeterminada.

En este tema se abordan las subredes del entorno, la forma en que el tráfico llega a la aplicación desde fuera del clúster y la forma en que los entornos se dirigen entre sí dentro del clúster.

Subredes de entorno

Establezca la subnets opción del espacio de aws:elasticbeanstalk:eks:environment nombres en una lista de identificadores de subred separados por comas.

Como las subredes seleccionan el clúster, las configuras al crear el entorno:

$ aws elasticbeanstalk create-environment \ --application-name my-app \ --environment-name my-cluster-env \ --option-settings '[{"Namespace":"aws:elasticbeanstalk:eks:environment","OptionName":"subnets","Value":"subnet-abc123,subnet-def456"}]'

La configuración se escribe como JSON porque la lista de subredes contiene una coma, que de forma AWS CLI abreviada trata como un separador entre los campos. Para ver los formularios que AWS CLI acepta, consulte Uso de la sintaxis abreviada en. AWS CLI

Elastic Beanstalk agrupa los entornos en clústeres según este conjunto de subredes, de modo que los entornos de la misma cuenta que usan las mismas subredes se ejecutan en el mismo clúster y un entorno que usa un conjunto diferente se ejecuta en un clúster diferente. El orden de las subredes no importa. Para ver las reglas de agrupamiento y los eventos que indican la asignación de clústeres, consulte. Agrupación de entornos

Cómo llega el tráfico a su aplicación

La load-balancer-type opción del espacio de aws:elasticbeanstalk:eks:environment nombres elige cómo llega el tráfico a la aplicación. Acepta dos valores:

  • ALB, el valor predeterminado. Elastic Beanstalk crea y opera un balanceador de carga de aplicaciones para el entorno. Puede configurarlo a través del espacio de aws:elasticbeanstalk:eks:alb nombres o proporcionar un balanceador de carga de aplicaciones que ya posea.

  • None. Elastic Beanstalk no crea un balanceador de cargas y no se puede acceder al entorno desde fuera del clúster a través de Elastic Beanstalk. Otros entornos del mismo clúster aún pueden acceder a él mediante su dirección en el clúster.

Configuración de red del balanceador de carga

El balanceador de carga de aplicaciones del entorno tiene su propia configuración de red en el aws:elasticbeanstalk:eks:alb espacio de nombres.

Opción Predeterminado Description (Descripción)
subnets Ninguno Una lista de subredes separadas por comas para el balanceador de cargas.
scheme Derivado de tus subredes Si se puede acceder al balanceador de cargas desde Internet, ya sea o. internet-facing internal Si no lo configuras, Elastic Beanstalk lo deriva de las subredes que selecciones: las subredes públicas proporcionan un balanceador de cargas orientado a Internet y las subredes privadas proporcionan uno interno.
security-groups Ninguno Una lista de grupos de seguridad separados por comas para el balanceador de cargas.
manage-backend-security-group-rules true Si Elastic Beanstalk administra las reglas del grupo de seguridad entre el balanceador de cargas y su aplicación.

Los oyentes y el HTTPS

La listen-ports opción del espacio de aws:elasticbeanstalk:eks:alb nombres muestra los oyentes del balanceador de cargas en forma de matriz JSON que asigna cada protocolo a un puerto, por ejemplo. [{"HTTPS":443},{"HTTP":80}]

Elastic Beanstalk se asegura de que el balanceador de cargas termine HTTPS en algún lugar:

  • Si no lo configuraslisten-ports, Elastic Beanstalk configura un oyente HTTPS en el puerto 443.

  • Si configuras un listener HTTPS en cualquier puerto listen-ports y este ya lo incluye, Elastic Beanstalk usará tu configuración sin cambios.

  • Si lo configura listen-ports sin un oyente HTTPS, Elastic Beanstalk agrega uno en el puerto 443. Si un oyente que usa otro protocolo ya ocupa el puerto 443, la solicitud falla y el error le indica que libere el puerto 443 o añada un oyente HTTPS explícito en otro puerto.

El balanceador de cargas abre solo los oyentes con los que está configurado. Con la configuración predeterminada, es HTTPS en el puerto 443 y nada en el puerto 80, por lo que una solicitud http:// no se conecta y espera a que se agote el tiempo de espera. La URL de su entorno va https:// seguida del CNAME del entorno. DescribeEnvironmentsdevuelve el CNAME sin ningún esquema, así que agréguelo https:// cuando lo abra.

No proporciona un certificado para que esto funcione. Elastic Beanstalk crea un certificado AWS Gestor de certificados (ACM) para el propio dominio del entorno, lo adjunta al agente de escucha HTTPS y lo renueva, de modo que el navegador confía en el CNAME del entorno sin ninguna configuración. Elastic Beanstalk crea un certificado para cada entorno y lo elimina cuando se termina el entorno.

Para atender el entorno desde un dominio propio, coloque el ARN del certificado en la opción. certificate-arn A continuación, el balanceador de cargas almacena su certificado además del que creó Elastic Beanstalk, y usted sigue siendo responsable de renovar y eliminar el suyo.

Para aceptar también las solicitudes HTTP, agrega un listener HTTP listen-ports y configúralo en el puerto de un listener ssl-redirect HTTPS. Elastic Beanstalk redirige las solicitudes de los oyentes HTTP a tu oyente HTTPS. Un oyente HTTP nunca atiende el tráfico de la aplicación directamente. ssl-redirectselecciona el puerto HTTPS al que se dirige el redireccionamiento y, si no lo configuras, Elastic Beanstalk usa el puerto de tu oyente HTTPS. Un listen-ports valor es en sí mismo un documento JSON, así que introduce la configuración en un archivo en lugar de escribirla en la línea de comandos:

$ cat listeners.json [ { "Namespace": "aws:elasticbeanstalk:eks:alb", "OptionName": "listen-ports", "Value": "[{\"HTTPS\":443},{\"HTTP\":80}]" }, { "Namespace": "aws:elasticbeanstalk:eks:alb", "OptionName": "ssl-redirect", "Value": "443" } ] $ aws elasticbeanstalk update-environment \ --environment-name my-cluster-env \ --option-settings file://listeners.json

Elastic Beanstalk no agrega el oyente HTTPS cuando lo load-balancer-type configuras o cuando suministras tu propio balanceador de cargas. None arn With None the environment no tiene ningún balanceador de cargas, por lo que no tiene oyentes. Cuando suministras tu propio balanceador de cargas, tú puedes administrar la configuración del oyente.

Usa un balanceador de cargas de tu propiedad

Para colocar un balanceador de cargas existente delante del entorno, establece el ARN de la arn opción en el espacio de aws:elasticbeanstalk:eks:alb nombres. El valor debe ser un balanceador de carga de aplicaciones. Elastic Beanstalk rechaza el ARN de un balanceador de cargas de red.

Cuando suministras un balanceador de cargas, eres el propietario de su configuración: sus oyentes, su certificado TLS y su esquema. Elastic Beanstalk registra su aplicación como destino e informa que su balanceador de cargas es el balanceador de cargas del entorno, por lo que DescribeEnvironmentResources devuelve el balanceador de cargas que usted suministró en lugar de uno creado por Elastic Beanstalk.

Entornos sin un balanceador de cargas

Cuando se establece load-balancer-type enNone, Elastic Beanstalk no crea un balanceador de carga para el entorno y DescribeEnvironmentResources no informa de ningún balanceador de carga. Utilízalo para un entorno que solo sirva a otros entornos del mismo clúster, como una API interna o un programa de trabajo al que las personas que llaman contacten directamente.

Hay dos consecuencias que hay que tener en cuenta:

  • Las señales de estado del balanceador de cargas no se aplican porque no hay ningún balanceador de cargas que informe sobre la tasa de solicitudes, la tasa de errores o la latencia. Usa las sondas de contenedores y tus backends de observabilidad para determinar si la aplicación funciona. Consulte Supervisión de los entornos de Beanstalk Cluster.

  • Las personas que llaman llegan al entorno mediante su dirección en el clúster, que se describe en la siguiente sección.

Abordar un entorno desde otro

Se puede acceder a cada entorno de Beanstalk Cluster dentro de su clúster en una dirección predecible que se crea a partir del nombre del entorno:

service-environment-name.eb-environment-name.svc.cluster.local:service-port

El puerto es del entorno. service-port Elastic Beanstalk ejecuta cada entorno en un espacio de nombres de Kubernetes denominado eb- seguido del nombre del entorno, que es la segunda etiqueta de la dirección. Pase las direcciones que su aplicación necesita como variables de entorno mediante la opción del espacio de nombres: env-variables aws:elasticbeanstalk:eks:environment

El valor de env-variables es en sí mismo un documento JSON, así que coloca la configuración de las opciones en un archivo en lugar de en la línea de comandos. Guarde lo siguiente como options.json:

[ { "Namespace": "aws:elasticbeanstalk:eks:environment", "OptionName": "env-variables", "Value": "{\"NOTIFIER_URL\":\"http://service-my-notifier.eb-my-notifier.svc.cluster.local:8080\"}" } ]

A continuación, aplícalo:

$ aws elasticbeanstalk update-environment \ --environment-name my-frontend \ --option-settings file://options.json

Este direccionamiento solo funciona entre entornos que se ejecutan en el mismo clúster, es decir, entornos que utilizan las mismas subredes. Resolver la dirección no es lo mismo que tener permiso para conectarse. Beanstalk Cluster bloquea el tráfico entre los entornos de un clúster compartido de forma predeterminada, por lo que el nombre se resuelve y la conexión sigue fallando hasta que usted lo permita. Consulte Permitir que los entornos se comuniquen.

nota

Como la dirección contiene el nombre del entorno, necesita saber el nombre de un entorno antes de que otro entorno pueda abordarlo. Planifique los nombres de un conjunto de entornos que se llamen entre sí antes de crearlos.

Ajustes que eliges en el momento de la creación

No puedes cambiar las subredes de un entorno después de crearlo, porque ellas seleccionan su clúster. Lo mismo se aplica a las funciones de clúster, nodo y observabilidad. Para ejecutar la aplicación en diferentes subredes, cree un entorno nuevo con las subredes que desee y, a continuación, intercambie los dos CNAME del entorno. Consulte Blue/Green implementaciones con Elastic Beanstalk.