Tallo de habichuelas elástico
Limitaciones actuales (a partir del 03-10-2016)
- Las etiquetas de entorno no se pueden cambiar una vez que se crea el Entorno, así que elija sabiamente.
- El ajuste de escala automático en Elastic Beanstalk está limitado a Simple y Programado, por lo que si desea utilizar Escalado por pasos, reconsidere si Elastic Beanstalk es una buena opción.
Automatización con Jenkins
Existe un excelente complemento de implementación de AWSEB para Jenkins que se conectará y usará para la implementación en Elastic Beanstalk (las implementaciones azul/verde con terminación automática inactiva están a solo una casilla de verificación).
Introducción a Elastic Beanstalk
Elastic Beanstalk (EB) es esencialmente un híbrido entre Golden AMI y CloudFormation, al tiempo que simplifica enormemente la curva de aprendizaje de Puppet o Chef.
Una implementación de Elastic Beanstalk se divide en dos componentes: aplicación y entorno.
Solicitud
Considere esta su agrupación de nivel superior, su propia aplicación. Por ejemplo, una sola aplicación (“MyWebApp”) puede tener varios Entornos (“Producción” y “Puesta en escena”).
Ambiente
Cada entorno constará de una implementación de arquitectura completa (EC2 Instances, Elastic Load Balancer, Autoscaling Group y Cloudwatch Alarms). Toda la configuración del entorno se configura y mantiene automáticamente.
Implementación de una aplicación
La implementación de su aplicación es tan simple como cargar un archivo zip que contiene su código. Cada archivo zip (llamado Versión de la aplicación) que carga está asociado a una Aplicación, por lo que puede cargarlo una vez e implementarlo en varios Entornos.
Personalizar el entorno
De forma predeterminada, Elastic Beanstalk implementará AMI mantenidas por Amazon “de stock”. Para la mayoría de las aplicaciones, esto es suficiente, pero puede haber ajustes ambientales que desee realizar (por ejemplo, cambiar la zona horaria, agregar paquetes/dependencias que no están presentes en el código, etc.).
Hay dos formas de personalizar la AMI de EB que se utiliza: ebextensions o una AMI personalizada.
ebextensions - Una carpeta, literalmente llamada ‘.ebextensions’, que opcionalmente se puede colocar en la raíz de su Versión de la aplicación (el zip que cargó que contiene su código). Dentro de la carpeta ebextensions, puede colocar archivos YAML que definan cualquier secuencia de comandos personalizada, dependencias, etc. que desee ejecutar en el lado del servidor durante el proceso de implementación. Hay varios puntos de enganche disponibles; para obtener la información más reciente, consulte la documentación pertinente: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html
Errores / Cosas a tener en cuenta
Casilla de verificación de VPC: al crear un entorno, la opción está disponible de forma discreta en cuanto a si el entorno debe crearse/colocarse dentro de una VPC o no. Si necesita que su aplicación se comunique con los recursos existentes que ha creado, MARQUE ESTA CASILLA. De lo contrario, Elastic Beanstalk creará un nuevo grupo de seguridad aislado del resto de su VPC. Si bien podrá ajustar manualmente la configuración del grupo de seguridad después de la creación, tratar de ‘agregarlo’ esencialmente a una VPC causará una variedad de problemas más adelante.
RDS: al crear un entorno, tiene la opción de crear una instancia de RDS como parte del entorno. No se recomienda usar esto, ya que cada vez que necesite “reconstruir” el entorno (p. ej., implementaciones azules/verdes, solución de problemas), destruirá y volverá a crear la instancia de RDS (junto con todos los datos).
Implementaciones azules/verdes en Elastic Beanstalk
La implementación azul/verde es una técnica de lanzamiento que reduce el tiempo de inactividad y el riesgo mediante la ejecución de dos entornos de producción idénticos (uno llamado “azul” y el otro “verde”). En cualquier momento, solo uno de los entornos atiende tráfico en vivo, mientras que el otro está inactivo.
Al implementar una nueva versión, el código se implementa en el entorno inactivo (p. ej., Green) y, después de confirmar una implementación exitosa, se cambia el tráfico en vivo (p. ej., Green tiene un código nuevo, el tráfico de Blue ahora se enruta a Green). La próxima implementación de código ocurrirá en el nuevo entorno inactivo (siguiendo el ejemplo, ahora sería azul).
Ejemplo/Ayuda Visual:
fuente de la imagen: https://cloudnative.io/statics/blog/aws-blue-green-deployment.png
Cuando usa Elastic Beanstalk (EB), puede crear fácilmente varios entornos que son clones exactos entre sí para la implementación de código. Después de confirmar que el nuevo entorno está listo para funcionar, es tan simple como usar la función “Intercambiar URL” en EB para intercambiar entornos.
Instrucciones paso a paso: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html