AWS: Desplegando con Elastic Beanstalk - labcabrera/lab-insurance GitHub Wiki
La forma más rápida de desplegar microservicios en AWS que he encontrado es utilizando AWS Elastic Beanstalk (siempre y cuando estos no requieran demasiada infraestructura). No es la mejor, aunque para determinados casos puede ser la opcion más sencilla ya que no requiere la configuración de un cluster de ECS, crear nuestra VPC, etc.
Actualmente lo estoy utilizando para el servidor de configuración y el registro de eureka.
Una vez creado la aplicación en Beanstalk iremos a Actions » Create environment
Seleccionaremos el tipo Web server:
-
Predefined configuration: java
-
Environment type: load balancing
Después en la elección del source subiremos manualmente el jar generado localmente (de momento en local no tengo montado nada de integración contínua)
La configuración de deployment la dejamos como viene por defecto:
-
Policy: rolling
-
Healthy threshold: ok
-
Ignore health check: false
-
Batch size: 30%
En la informacion de entorno seleccionaremos el nombre. En este caso estoy utilizando lab-insurance-${moduleName}
Utilizo el mismo valor tanto para el nombre, la URL y la descripción.
No selecciono VPC (la configuración que tengo creada actualmente está mal y estos servicios carecen de infraestructura, de modo que con la configuración por defecto es suficiente).
En Configuration details seleccionamos el tipo de instancia (t1.micro dado que es free tier y en desarrollo no queremos pagar demasiado).
Como tenemos Spring Actuator en todos los proyectos utilizaremos la opción Application health check url con el valor application/health (este es el valor de Spring Boot 2, antes carecía del prefijo application)
Seleccionamos el tamaño mínimo de disco (8Gb actualmente)
Dejamos el resto de opciones por defecto y avanzamos hasta la ventana de selección de variables de entorno.
En este punto mapearemos el puerto de nuestra aplicación al 80 para no tener que estar tocando la configuración de la VPC.
Para ello en nuestra configuración definimos:
server:
port: ${PORT:12345}
De tal modo que utiliza la variable $PORT si no está definida o el valor por defecto cuando no lo está.
Finalmente seleccionamos el instance profile y el service role que ya tenemos creados previamente, revisamos si nuestra configuración es correcta y voila, si no nos hemos equivocado en ningún paso tendremos nuestra aplicación creándose y lista para ser invocada.
En la ventana principal encontraremos al lado del Environment ID la URL de nuestra aplicación con el formato:
${name}.${region}.elasticbeanstalk.com
Desde la página de EC2 de AWS podremos parar y arrancar las instancias cuando deseemos.