diff options
Diffstat (limited to 'doc/ci/cloud_deployment/index.md')
-rw-r--r-- | doc/ci/cloud_deployment/index.md | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/doc/ci/cloud_deployment/index.md b/doc/ci/cloud_deployment/index.md index ccb6b60ecc9..ccff302750c 100644 --- a/doc/ci/cloud_deployment/index.md +++ b/doc/ci/cloud_deployment/index.md @@ -61,3 +61,61 @@ To do so, please make sure to [push your image into your ECR repository](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html) before referencing it in your `.gitlab-ci.yml` file and replace the `image` path to point to your ECR. + +### Deploy your application to AWS Elastic Container Service (ECS) + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/207962) in GitLab 12.9. + +GitLab provides a series of [CI templates that you can include in your project](../yaml/README.md#include). +To automate deployments of your application to your [Amazon Elastic Container Service](https://aws.amazon.com/ecs/) (AWS ECS) +cluster, you can `include` the `Deploy-ECS.gitlab-ci.yml` template in your `.gitlab-ci.yml` file. + +Before getting started with this process, you need a cluster on AWS ECS, as well as related +components, like an ECS service, ECS task definition, a database on AWS RDS, etc. +[Read more about AWS ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html). + +After you're all set up on AWS ECS, follow these steps: + +1. Make sure your AWS credentials are set up as environment variables for your + project. You can follow [the steps above](#aws) to complete this setup. +1. Add these variables to your project's `.gitlab-ci.yml` file: + + ```yaml + variables: + CI_AWS_ECS_CLUSTER: my-cluster + CI_AWS_ECS_SERVICE: my-service + CI_AWS_ECS_TASK_DEFINITION: my-task-definition + ``` + + Three variables are defined in this snippet: + + - `CI_AWS_ECS_CLUSTER`: The name of your AWS ECS cluster that you're + targeting for your deployments. + - `CI_AWS_ECS_SERVICE`: The name of the targeted service tied to + your AWS ECS cluster. + - `CI_AWS_ECS_TASK_DEFINITION`: The name of the task definition tied + to the service mentioned above. + + You can find these names after selecting the targeted cluster on your [AWS ECS dashboard](https://console.aws.amazon.com/ecs/home): + + ![AWS ECS dashboard](../img/ecs_dashboard_v12_9.png) + +1. Include this template in `.gitlab-ci.yml`: + + ```yaml + include: + - template: Deploy-ECS.gitlab-ci.yml + ``` + + The `Deploy-ECS` template ships with GitLab and is available [on + GitLab.com](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Deploy-ECS.gitlab-ci.yml). + +1. Commit and push your updated `.gitlab-ci.yml` to your project's repository, and you're done! + + Your application Docker image will be rebuilt and pushed to the GitLab registry. + Then the targeted task definition will be updated with the location of the new + Docker image, and a new revision will be created in ECS as result. + + Finally, your AWS ECS service will be updated with the new revision of the + task definition, making the cluster pull the newest version of your + application. |