Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request] AWS Containerisation #6773

Closed
ggotti opened this issue Nov 30, 2017 · 2 comments
Closed

[Feature Request] AWS Containerisation #6773

ggotti opened this issue Nov 30, 2017 · 2 comments

Comments

@ggotti
Copy link
Contributor

ggotti commented Nov 30, 2017

Overview of the issue

The existing JHipster AWS Deployment option uses Elastic Beanstalk, which is no longer being encouraged as the way of deploying applications to AWS. It's also still in Beta, and there are some reliability issues with the sub-generator in its current state.

Based on the recent announcements at AWS re:Invent, we’d like to modify the generator to support the following deployment options (instead of Elastic Beanstalk):

  • AWS Fargate : Initially for Monolithic applications only, with the option to run databases as either containers, or as Amazon RDS.
  • AWS EKS) (when it becomes available): Initially for Microservices only. We’ll potentially want to extend the existing Kubernetes deployment option to make it more AWS-centric.

Our current thinking is to re-use the existing plugin interface and structure, but modify the deployment to leverage CloudFormation more extensively (similar to how the Serverless Framework does it)

I believe supporting a Docker-first paradigm will help standardise the JHipster deployment options, and make it easier to deploy moving forward. carvallegro and myself (ggotti) and will be working on this throughout December. We’ll update this ticket with more details as we progress. Any assistance would be appreciated :)

Motivation for or Use Case
  • AWS is fairly dominant in the Australia market, and the lack of modern AWS integration is a serious issue.
  • Move the AWS plugin out of Beta. We've discovered some reliability issues with the current implementation.
@deepu105
Copy link
Member

You are welcome to do it :)

@ggotti
Copy link
Contributor Author

ggotti commented Jan 3, 2018

Just a status update for those that are interested. Our branch is located in this repository, and our development branch is feature/aws-generator, if you'd like to run it. The generator itself is currently called "more-aws"; we'll rename is later on, probably to something like aws-containers as a way to maintain compatibility with the existing aws generator. We're currently only focusing on the monolith version (using Fargate).

Status
We've got the majority of prompts working, and talking back to AWS for valid value entry.

  • SpringCloud integration with Amazon SSM
  • We have the Cloud Formation scripts being uploaded into new s3 buckets, passwords being stored in SSM, and docker client login.
  • Streaming of Cloud Formation log to terminal.
  • At a high level, the Cloud Formation is able to create the following:
    • Execution Role
    • ECR Registry
    • DBCluster (for Aurora)
    • DBInstances
    • ECS Task Definiton
    • ECS Cluster
    • ECS Service
    • ALB for Target Application

To Do (when we come back to work in the new year):

  • Build/Tag/Upload new Image to Amazon ECS Registry
  • Update Cloud Formation stack to register and start the service.
  • Tidy up the project scan functionality to behave more like the docker-compose generator.

Current Issues

  • Only works with Maria/Mysql with Aurora
  • Generator currently does not work with Node 6.9.0.
  • The execution role for the ECS Task is currently way too open (it has the logical name jhipsterRunRole in the Cloud Formation yaml file). We need to lock it down but I haven't gone through the required permissions as yet.

ggotti pushed a commit to carvallegro/generator-jhipster that referenced this issue Jan 22, 2018
New AWS sub-generator which uses Amazon ECS to run JHipster monolithic applications.

Closes jhipster#6773
@ggotti ggotti mentioned this issue Jan 22, 2018
4 tasks
@deepu105 deepu105 added the v5 label Jan 25, 2018
carvallegro pushed a commit to carvallegro/generator-jhipster that referenced this issue Feb 27, 2018
* new aws-containers sub-generator

New AWS sub-generator which uses Amazon ECS to run JHipster monolithic applications.

Closes jhipster#6773

* external constants to localised file

Moved constants from index.js into a separate aws-containers generator specific file

* testing and linting errors

* add back missing constants from aws-containers

* address issue where the base.template is not being read correctly

* Pull Requests review fixs

* wording

* Wording

* Use the Spring Cloud Context version from jhipster-dependencies

* Use the version from jhipster-dependencies

* Wording

* Corrected issues with Postgresql database not deploying correctly

* Switched out NLB for ALB

* Split scaling out from performance question

* Added nesting supporting into repo name

* Added stack name checking

* Corrected issues with the path lookup

* Code review feedback

* Fixed linting errors

* Swapped out bootRepackage for bootWar
BenEdridge pushed a commit to carvallegro/generator-jhipster that referenced this issue Feb 27, 2018
New AWS sub-generator which uses Amazon ECS to run JHipster monolithic applications.

Closes jhipster#6773
BenEdridge pushed a commit to carvallegro/generator-jhipster that referenced this issue Feb 27, 2018
* new aws-containers sub-generator

New AWS sub-generator which uses Amazon ECS to run JHipster monolithic applications.

Closes jhipster#6773

* external constants to localised file

Moved constants from index.js into a separate aws-containers generator specific file

* testing and linting errors

* add back missing constants from aws-containers

* address issue where the base.template is not being read correctly

* Pull Requests review fixs

* wording

* Wording

* Use the Spring Cloud Context version from jhipster-dependencies

* Use the version from jhipster-dependencies

* Wording

* Corrected issues with Postgresql database not deploying correctly

* Switched out NLB for ALB

* Split scaling out from performance question

* Added nesting supporting into repo name

* Added stack name checking

* Corrected issues with the path lookup

* Code review feedback

* Fixed linting errors

* Swapped out bootRepackage for bootWar
ggotti pushed a commit to carvallegro/generator-jhipster that referenced this issue Mar 5, 2018
New AWS sub-generator which uses Amazon ECS to run JHipster monolithic applications.

Closes jhipster#6773
ggotti added a commit to carvallegro/generator-jhipster that referenced this issue Mar 5, 2018
* new aws-containers sub-generator

New AWS sub-generator which uses Amazon ECS to run JHipster monolithic applications.

Closes jhipster#6773

* external constants to localised file

Moved constants from index.js into a separate aws-containers generator specific file

* testing and linting errors

* add back missing constants from aws-containers

* address issue where the base.template is not being read correctly

* Pull Requests review fixs

* wording

* Wording

* Use the Spring Cloud Context version from jhipster-dependencies

* Use the version from jhipster-dependencies

* Wording

* Corrected issues with Postgresql database not deploying correctly

* Switched out NLB for ALB

* Split scaling out from performance question

* Added nesting supporting into repo name

* Added stack name checking

* Corrected issues with the path lookup

* Code review feedback

* Fixed linting errors

* Swapped out bootRepackage for bootWar
ggotti pushed a commit to carvallegro/generator-jhipster that referenced this issue Mar 5, 2018
New AWS sub-generator which uses Amazon ECS to run JHipster monolithic applications.

Closes jhipster#6773
@jdubois jdubois closed this as completed in cb74a0b Mar 9, 2018
@jdubois jdubois added this to the 5.0.0-beta.0 milestone Apr 3, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants