CannotPullContainerError al intentar implementar un contenedor múltiple de AWS usando elasticbeanstalk con eb cli

CannotPullContainerError al intentar implementar un contenedor múltiple de AWS usando elasticbeanstalk con eb cli

He estado intentando implementar una imagen acoplable simple en AWS ElasticBeanstalk usando ebcli, pero no puedo iniciar el servicio acoplable en ECS debido al siguiente error:

formato de referencia no válido: el nombre del repositorio debe estar en minúsculas

Mi Dockerrun.aws.jsonarchivo:

{
  "AWSEBDockerrunVersion": 2,
  "containerDefinitions": [
    {
      "name": "ipsec-vpn-server",
      "image": "hwdsl2/ipsec-vpn-server:latest",
      "essential": true,
      "memory": 128,
      "portMappings": [
        {
          "hostPort": 500,
          "containerPort": 500
        },
        {
          "hostPort": 4500,
          "containerPort": 4500
        }
      ]
    }
  ]
}

Mi.ebignore

# Only keep Dockerrun.aws.json
*
!Dockerrun.aws.json

Adjunté el AWSElasticBeanstalkMulticontainerDockerpapel a aws-elasticbeanstalk-service-role:

aws --profile my-profile-name \
iam attach-role-policy \
policy-arn arn:aws:iam::aws:policy/AWSElasticBeanstalkMulticontainerDocker \
--role-name aws-elasticbeanstalk-service-role

Política AWSElasticBeanstalkMulticontainerDocker en aws-elasticbeanstalk-service-role

Creé el entorno de AWS EB de esta manera:

export VPN_USER="some_secret_user"
export VPN_PASSWORD="some_secret_password"    
export VPN_IPSEC_PSK="some_secret_ipsec_psk"

eb create vpn-example \
--profile my-profile-name \
--region us-east-1 \
--platform multi-container-docker-17.09.1-ce-\(generic\) \
--envvars VPN_USER=${VPN_USER} \
--envvars VPN_PASSWORD=${VPN_PASSWORD} \
--envvars VPN_IPSEC_PSK=${VPN_IPSEC_PSK} \
--cname some-vpn-example-domain

El entorno se creó correctamente, pero como puedes ver, no es saludable;)

ambiente eb

La creación del entorno se ejecuta por un tiempo, crea balanceadores de carga, etc. Pero falla después de un tiempo después de intentar iniciar la tarea muchas veces aquí en el panel de ECS:

grupo ecs

Al hacer clic en una sola tarea, veo esto: formato de referencia no válido: el nombre del repositorio debe estar en minúsculas

Estado:

DETENIDO (CannotPullContainerError: error de API (400): no válido)

Detalles Estado Motivo:

CannotPullContainerError: error de API (400): formato de referencia no válido: el nombre del repositorio debe estar en minúsculas

El último evento muestra la siguiente advertencia en el entorno de elastic beanstalk:

La salud del medio ambiente ha pasado de Degradada a Severa. El comando falló en todos los casos. El estado del ELB falla o no está disponible para todas las instancias.

eb logsno tiene ninguna salida.

No uso ninguna letra mayúscula en containerDefinitions's image. Lo único extraño que encontré es la Imagecolumna de la tarea que dice Dockerrun.aws.jsondónde esperaría que estuviera hwdsl2/ipsec-vpn-server(creo).

También pensé que esto habría sido un servicio y no una tarea. Cualquier ayuda sería muy apreciada.

Parece que no puedo encontrar una manera de leer los registros. Lo intenté nuevamente desde cero y los registros del eb createcomando son los siguientes:

WARNING: The Multi-container Docker platform requires additional ECS permissions. Add the permissions to the aws-elasticbeanstalk-ec2-role or use your own instance profile by typing "-ip {profile-name}".
For more information see: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_ecs.html#create_deploy_docker_ecs_role
Creating application version archive "app-xxxx-xxxxxx_xxxxxx".
Uploading example-vpn/app-xxxx-xxxxxx_xxxxxx.zip to S3. This may take a while.
Upload Complete.
Environment details for: vpn-dev-01
  Application name: example-vpn
  Region: us-east-1
  Deployed Version: app-xxxx-xxxxxx_xxxxxx
  Environment ID: e-mtwbaums2n
  Platform: arn:aws:elasticbeanstalk:us-east-1::platform/Multi-container Docker running on 64bit Amazon Linux/2.9.0
  Tier: WebServer-Standard-1.0
  CNAME: example-vpn-SNIP.us-east-1.elasticbeanstalk.com
  Updated: 2018-03-22 18:55:03.173000+00:00
Printing Status:
INFO: createEnvironment is starting.
INFO: Using elasticbeanstalk-us-east-1-xxxxxxxxxxxx as Amazon S3 storage bucket for environment data.
INFO: Created security group named: sg-SNIP
INFO: Created security group named: awseb-e-SNIP
INFO: Created load balancer named: awseb-e-SNIP
INFO: Created Auto Scaling launch configuration named: awseb-e-SNIP
INFO: Created Auto Scaling group named: awseb-SNIP
INFO: Waiting for EC2 instances to launch. This may take a few minutes.
INFO: Created Auto Scaling group policy named: arn:aws:autoscaling:us-east-1:SNIP
INFO: Created Auto Scaling group policy named: arn:aws:autoscaling:us-east-1:SNIP
INFO: Created CloudWatch alarm named: awseb-e-SNIP
INFO: Created CloudWatch alarm named: awseb-e-SNIP
ERROR: Failed to start ECS task: arn:aws:ecs:us-east-1:xxxxxxxxxxxx:task/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx is STOPPED.
ERROR: ECS task stopped due to: Essential container in task exited. (ipsec-vpn-server: )
ERROR: Failed to start ECS task: arn:aws:ecs:us-east-1:xxxxxxxxxxxx:task/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx is STOPPED.
ERROR: Failed to start ECS task after retrying 2 times.
ERROR: [Instance: i-xxxxxxxxxxxxxxxxx] Command failed on instance. Return code: 1 Output: trying 2 times.' --severity ERROR
+ exit 1.
Hook /opt/elasticbeanstalk/hooks/appdeploy/enact/03start-task.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.
INFO: Command execution completed on all instances. Summary: [Successful: 0, Failed: 1].
ERROR: Create environment operation is complete, but with errors. For more information, see troubleshooting documentation.

Intenté nuevamente con una imagen de Docker diferente nginx:latesty el servicio se inició, por lo que el problema que tuve fue conhwdsl2/ipsec-vpn-server:latestdirectamente. Lo intenté de nuevo pero localmente:

docker pull hwdsl2/ipsec-vpn-server:latest
eb local run --debug

Y me mostró el error:

ipsecvpnserver_1 | Error: This Docker image must be run in privileged mode.
ipsecvpnserver_1 |
ipsecvpnserver_1 | For detailed instructions, please visit:
ipsecvpnserver_1 | https://github.com/hwdsl2/docker-ipsec-vpn-server
ipsecvpnserver_1 |
elasticbeanstalk_ipsecvpnserver_1 exited with code 1

Los registros en elasticbeanstalk no siempre son fáciles de leer. Agregué esto a Dockerrun.aws.json:

"privileged": true,

Ahora se inicia localmente con éxito cuando se ejecuta eb local run, pero sigue fallando en la nube.

he creadoun problema en hwdsl2/docker-ipsec-vpn-server

información relacionada