

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
<a name="configuring-cluster-networking"></a>

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
<a name="configuring-cluster-networking-subnets"></a>

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](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-shorthand.html)

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](beanstalk-cluster-concepts.md#beanstalk-cluster-clusters-sharing)

## Cómo llega el tráfico a su aplicación
<a name="configuring-cluster-networking-lb-type"></a>

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
<a name="configuring-cluster-networking-alb"></a>

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
<a name="configuring-cluster-networking-listeners"></a>

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 configuras`listen-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. `DescribeEnvironments`devuelve 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-redirect`selecciona 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
<a name="configuring-cluster-networking-byo-alb"></a>

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
<a name="configuring-cluster-networking-no-lb"></a>

Cuando se establece `load-balancer-type` en`None`, 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](monitoring-cluster-environments.md).
+ 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
<a name="configuring-cluster-networking-service-discovery"></a>

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](beanstalk-cluster-multi-tenancy.md#beanstalk-cluster-multi-tenancy-groups).

**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
<a name="configuring-cluster-networking-immutable"></a>

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](using-features.CNAMESwap.md).