Uso de AWS AppConfig Agent con Amazon ECS y Amazon EKS - AWS AppConfig

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.

Uso de AWS AppConfig Agent con Amazon ECS y Amazon EKS

Puede realizar la integración AWS AppConfig con Amazon Elastic Container Service (AmazonECS) y Amazon Elastic Kubernetes Service (EKSAmazon) mediante Agent. AWS AppConfig El agente funciona como un contenedor lateral que funciona junto con tus aplicaciones de Amazon ECS y Amazon EKS Container. El agente mejora el procesamiento y la administración de las aplicaciones en contenedores de las siguientes maneras:

  • El agente llama AWS AppConfig en tu nombre utilizando una función AWS Identity and Access Management (IAM) y gestionando una caché local de datos de configuración. Al extraer los datos de configuración de la memoria caché local, su aplicación necesita menos actualizaciones de código para gestionar los datos de configuración, recupera los datos de configuración en milisegundos y no se ve afectada por problemas de red que puedan interrumpir las llamadas a dichos datos.*

  • El agente ofrece una experiencia nativa para recuperar y resolver los indicadores de AWS AppConfig características.

  • En su estado original, el agente proporciona las prácticas recomendadas para las estrategias de almacenamiento en caché, los intervalos de sondeo y la disponibilidad de los datos de configuración local, al tiempo que rastrea los tokens de configuración necesarios para las siguientes llamadas de servicio.

  • Mientras se ejecuta en segundo plano, el agente sondea periódicamente el plano de AWS AppConfig datos en busca de actualizaciones de los datos de configuración. La aplicación contenerizada puede recuperar los datos conectándose a localhost en el puerto 2772 (un valor de puerto predeterminado personalizable) y realizando una llamada HTTP GET para recuperar los datos.

  • AWS AppConfig El agente actualiza los datos de configuración de sus contenedores sin tener que reiniciarlos ni reciclarlos.

* El AWS AppConfig agente almacena los datos en caché la primera vez que el servicio recupera los datos de configuración. Por este motivo, la primera llamada para recuperar datos es más lenta que las llamadas posteriores.

Antes de empezar

Para integrarlo AWS AppConfig con sus aplicaciones contenedoras, debe crear AWS AppConfig artefactos y datos de configuración, incluidos indicadores de características o datos de configuración de formato libre. Para obtener más información, consulte Creación de indicadores de características y datos de configuración de formato libre en AWS AppConfig.

Para recuperar los datos de configuración alojados por AWS AppConfig, las aplicaciones contenedoras deben configurarse con acceso al plano de AWS AppConfig datos. Para dar acceso a sus aplicaciones, actualice la política de IAM permisos que utiliza su IAM función de servicio de contenedores. En concreto, debe añadir las acciones appconfig:StartConfigurationSession y appconfig:GetLatestConfiguration a la política. Las IAM funciones de servicio de contenedores incluyen las siguientes:

  • La función de ECS tareas de Amazon

  • El rol del EKS nodo de Amazon

  • La función de ejecución del AWS Fargate pod (si tus EKS contenedores de Amazon utilizan Fargate para el procesamiento informático)

Para obtener más información sobre cómo añadir permisos a una política, consulta Cómo añadir y eliminar permisos de IAM identidad en la Guía del IAM usuario.

Iniciar el AWS AppConfig agente para la ECS integración de Amazon

El contenedor AWS AppConfig Agent sidecar está disponible automáticamente en tu ECS entorno de Amazon. Para usarlo, debe iniciarlo, tal y como se describe en el siguiente procedimiento.

Para iniciar Amazon ECS (consola)
  1. Abra la consola en la https://console.aws.amazon.com/ecs/versión 2.

  2. En el panel de navegación, elija Task Definitions (Definiciones de tareas).

  3. Elija la definición de tarea para su aplicación y, a continuación, seleccione la revisión más reciente.

  4. Elija Crear nueva revisión y Crear nueva revisión.

  5. Elija Agregar más contenedores.

  6. En Nombre, introduzca un nombre exclusivo para el contenedor de AWS AppConfig agentes.

  7. En Imagen URI, introduzca: public.ecr.aws/aws-appconfig/aws-appconfig-agent:2.x

  8. En Contenedor esencial, elija .

  9. En la sección Asignaciones de puertos, elija Agregar asignación de puertos.

  10. En Puerto del contenedor, ingrese 2772.

    nota

    AWS AppConfig El agente se ejecuta en el puerto 2772, de forma predeterminada. O puede especificar un puerto diferente.

  11. Seleccione Crear. Amazon ECS crea una nueva revisión del contenedor y muestra los detalles.

  12. En el panel de navegación, elija Clústers y, a continuación, elija el nombre del clúster de la aplicación en la lista.

  13. En la pestaña Servicios, seleccione el servicio para su aplicación.

  14. Elija Actualizar.

  15. En Configuración de implementación, en Revisión, elija la revisión más reciente.

  16. Elija Actualizar. Amazon ECS implementa la definición de tareas más reciente.

  17. Una vez finalizada la implementación, puede comprobar que el AWS AppConfig agente se está ejecutando en la pestaña Configuración y tareas. En la pestaña Tareas, elija la tarea que se está ejecutando.

  18. En la sección Contenedores, compruebe que el contenedor del AWS AppConfig agente esté en la lista.

  19. Para comprobar que el AWS AppConfig agente se inició, seleccione la pestaña Registros. Busque una declaración como la siguiente para el contenedor del AWS AppConfig agente: [appconfig agent] 1970/01/01 00:00:00 INFO serving on localhost:2772

nota

Puede ajustar el comportamiento predeterminado del AWS AppConfig agente introduciendo o cambiando variables de entorno. Para obtener más información sobre cómo configurar las variable de entorno, consulte (Opcional) Uso de variables de entorno para configurar AWS AppConfig Agent for Amazon ECS y Amazon EKS. Para obtener información sobre cómo cambiar las variables de entorno en AmazonECS, consulte Pasar variables de entorno a un contenedor en la Guía para desarrolladores de Amazon Elastic Container Service.

Iniciar el AWS AppConfig agente para la EKS integración de Amazon

El contenedor AWS AppConfig Agent sidecar está disponible automáticamente en tu EKS entorno de Amazon. Para usarlo, debes iniciarlo. El siguiente procedimiento describe cómo utilizar la herramienta de línea de EKS kubectl comandos de Amazon para iniciar el agente.

nota

Antes de continuar, asegúrate de que kubeconfig el archivo esté actualizado. Para obtener más información sobre cómo crear o editar un kubeconfig archivo, consulta Crear o actualizar un archivo kubeconfig para un EKS clúster de Amazon en la Guía del EKSusuario de Amazon.

Para iniciar AWS AppConfig Agent (herramienta de línea de comandos kubectl)
  1. Abre el manifiesto de tu aplicación y comprueba que tu EKS aplicación de Amazon se ejecuta como una implementación de contenedor único. El contenido del archivo debe tener un aspecto similar al siguiente.

    apiVersion: apps/v1 kind: Deployment metadata: name: my-app namespace: my-namespace labels: app: my-application-label spec: replicas: 1 selector: matchLabels: app: my-application-label template: metadata: labels: app: my-application-label spec: containers: - name: my-app image: my-repo/my-image imagePullPolicy: IfNotPresent
  2. Añada los detalles de la definición del contenedor del AWS AppConfig agente a su manifiesto de despliegue.

    - name: appconfig-agent image: public.ecr.aws/aws-appconfig/aws-appconfig-agent:2.x ports: - name: http containerPort: 2772 protocol: TCP env: - name: SERVICE_REGION value: region imagePullPolicy: IfNotPresent
    nota

    Observe la siguiente información.

    • AWS AppConfig El agente se ejecuta en el puerto 2772, de forma predeterminada. O puede especificar un puerto diferente.

    • Puede ajustar el comportamiento predeterminado del AWS AppConfig agente introduciendo variables de entorno. Para obtener más información, consulte (Opcional) Uso de variables de entorno para configurar AWS AppConfig Agent for Amazon ECS y Amazon EKS.

    • En SERVICE_REGION, especifique el Región de AWS código (por ejemplous-west-1) en el que el AWS AppConfig agente recupera los datos de configuración.

  3. Ejecute el siguiente kubectl comando para aplicar los cambios al clúster. Reemplazar my-deployment con el nombre del manifiesto de despliegue.

    kubectl apply -f my-deployment.yml
  4. Una vez finalizada la implementación, compruebe que el AWS AppConfig agente esté en ejecución. Utilice el comando siguiente para ver el archivo de registro del pod de la aplicación.

    kubectl logs -n my-namespace -c appconfig-agent my-pod

    Busque una declaración como la siguiente para el contenedor del AWS AppConfig agente: [appconfig agent] 1970/01/01 00:00:00 INFO serving on localhost:2772

nota

Puede ajustar el comportamiento predeterminado del AWS AppConfig agente introduciendo o cambiando variables de entorno. Para obtener más información sobre cómo configurar las variable de entorno, consulte (Opcional) Uso de variables de entorno para configurar AWS AppConfig Agent for Amazon ECS y Amazon EKS.

(Opcional) Uso de variables de entorno para configurar AWS AppConfig Agent for Amazon ECS y Amazon EKS

Puede configurar el AWS AppConfig agente cambiando las siguientes variables de entorno para su contenedor de agentes.

Variable de entorno Detalles Valor predeterminado

ACCESS_TOKEN

Esta variable de entorno define un token que se debe proporcionar al solicitar datos de configuración al HTTP servidor del agente. El valor del token debe estar establecido en el encabezado de autorización de la HTTP solicitud con un tipo de autorización deBearer. A continuación se muestra un ejemplo.

GET /applications/my_app/... Host: localhost:2772 Authorization: Bearer <token value>
Ninguna

BACKUP_DIRECTORY

Esta variable de entorno permite al AWS AppConfig agente guardar una copia de seguridad de cada configuración que recupera en el directorio especificado.

importante

Las configuraciones respaldadas en el disco no están cifradas. Si su configuración contiene datos confidenciales, le AWS AppConfig recomendamos que practique el principio de privilegios mínimos con los permisos del sistema de archivos. Para obtener más información, consulte Seguridad en AWS AppConfig.

Ninguna

HTTP_PORT

Esta variable de entorno especifica el puerto en el que se ejecuta el HTTP servidor del agente.

2772

LOG_LEVEL

Esta variable de entorno especifica el nivel de detalle que registra el agente. Cada nivel incluye el nivel actual y todos los niveles superiores. Los nombres de las variables distinguen entre mayúsculas y minúsculas. Del más detallado al menos detallado, los niveles de registro son: debug, info, warn, error y none. Debug incluye información detallada sobre el agente, incluida la información sobre el tiempo.

info

LOG_PATH

La ubicación del disco en la que se escriben los registros. Si no se especifica, los registros se escriben en stderr.

Ninguna

MANIFEST

Esta variable de entorno configura el AWS AppConfig Agente para que aproveche las funciones adicionales por configuración, como las recuperaciones de varias cuentas y el almacenamiento de la configuración en disco. Puede introducir uno de los siguientes valores:

  • "app:env:manifest-config"

  • "file:/fully/qualified/path/to/manifest.json"

Para obtener más información sobre el uso de estas características, consulte Usar un manifiesto para habilitar funciones de recuperación adicionales.

true

MAX_CONNECTIONS

Esta variable de entorno configura el número máximo de conexiones que el agente utiliza para recuperar las configuraciones de AWS AppConfig.

3

POLL_INTERVAL

Esta variable de entorno controla la frecuencia con la que el agente AWS AppConfig consulta los datos de configuración actualizados. Puede especificar un número de segundos para el intervalo. También puede especificar un número con una unidad de tiempo: s para segundos, m para minutos y h para horas. Si no se especifica una unidad, el agente ejecuta de forma predeterminada los segundos. Por ejemplo, 60, 60s y 1m dan como resultado el mismo intervalo de sondeo.

45 segundos

PREFETCH_LIST

Esta variable de entorno especifica los datos de configuración que el agente solicita en AWS AppConfig cuanto se inicia.

Ninguna

PRELOAD_BACKUPS

Si se establece entrue, el AWS AppConfig agente carga las copias de seguridad de la configuración que se encuentran BACKUP_DIRECTORY en la memoria y comprueba inmediatamente si existe una versión más reciente del servicio. Si se establece enfalse, el AWS AppConfig agente solo carga el contenido de una copia de seguridad de la configuración si no puede recuperar los datos de configuración del servicio, por ejemplo, si hay un problema con la red.

true
PROXY_HEADERS Esta variable de entorno especifica los encabezados que requiere el proxy al que se hace referencia en la variable de entorno PROXY_URL. El valor es una lista de encabezados separados por comas. Todos los encabezados utilizan el siguiente formulario.
"header: value"
Ninguna
PROXY_URL Esta variable de entorno especifica el proxy URL al que se va a utilizar para las conexiones desde el agente Servicios de AWS, incluso AWS AppConfig. HTTPSy HTTP URLs son compatibles. Ninguna

REQUEST_TIMEOUT

Esta variable de entorno controla el tiempo que el agente espera una respuesta. AWS AppConfig Si el servicio no responde, se produce un error en la solicitud.

Si la solicitud se emplea para la recuperación inicial de datos, el agente devuelve un error a su solicitud.

Si el tiempo de espera se agota cuando se está comprobando en segundo plano si hay datos actualizados, el agente registra el error y lo vuelve a intentar tras un breve retraso.

Puede especificar el número de milisegundos del tiempo de espera. También puede especificar un número con una unidad de tiempo: ms para milisegundos y s para segundos. Si no se especifica una unidad, el valor predeterminado del agente es milisegundos. Por ejemplo, 5000, 5000ms y 5s dan como resultado el mismo valor de tiempo de espera de la solicitud.

3000 milisegundos
ROLE_ARN Esta variable de entorno especifica el nombre de recurso de Amazon (ARN) de un IAM rol. AWS AppConfig El agente asume esta función para recuperar los datos de configuración. Ninguna
ROLE_EXTERNAL_ID Esta variable de entorno especifica el ID externo que se utilizará con el rol asumidoARN. Ninguna
ROLE_SESSION_NAME Esta variable de entorno especifica el nombre de la sesión que se va a asociar a las credenciales del IAM rol asumido. Ninguna
SERVICE_REGION Esta variable de entorno especifica una alternativa Región de AWS que el AWS AppConfig agente utiliza para llamar al AWS AppConfig servicio. Si no se define, el agente intenta determinar la región actual. Si no puede, el agente no podrá iniciarse. Ninguna

WAIT_ON_MANIFEST

Esta variable de entorno configura el AWS AppConfig agente para que espere hasta que se procese el manifiesto antes de completar el inicio.

true

Recuperación de los datos de configuración

Puede recuperar los datos de configuración del AWS AppConfig agente mediante una llamada a HTTP localhost. Los siguientes ejemplos se utilizan curl con un HTTP cliente. Puede llamar al agente mediante cualquier HTTP cliente disponible compatible con el idioma de su aplicación o con las bibliotecas disponibles.

nota

Para recuperar los datos de configuración si la aplicación utiliza una barra diagonal, por ejemplo, «test-backend/test-service», necesitará utilizar la codificación. URL

Para recuperar el contenido completo de cualquier configuración implementada

$ curl "http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name"

Para recuperar una única marca y sus atributos desde una configuración AWS AppConfig de tipo Feature Flag

$ curl "http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name?flag=flag_name"

Para acceder a varias marcas y sus atributos desde una configuración de AWS AppConfig de tipo Feature Flag

$ curl "http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name?flag=flag_name_one&flag=flag_name_two"