From e148dd3d16223edcd4020455d6789be1445a5a56 Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis Date: Tue, 6 Nov 2018 19:50:56 +0100 Subject: [PATCH] Incorporate review changes --- doc/install/aws/img/create_iam_role.png | Bin 33094 -> 0 bytes .../aws/img/create_iam_role_review.png | Bin 17129 -> 0 bytes doc/install/aws/index.md | 122 ++++++++++-------- 3 files changed, 69 insertions(+), 53 deletions(-) delete mode 100644 doc/install/aws/img/create_iam_role.png delete mode 100644 doc/install/aws/img/create_iam_role_review.png diff --git a/doc/install/aws/img/create_iam_role.png b/doc/install/aws/img/create_iam_role.png deleted file mode 100644 index e557945a0a55e2edc8946a260503000c55a46193..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33094 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 diff --git a/doc/install/aws/index.md b/doc/install/aws/index.md index 00c55e98484..53fe1a6b25b 100644 --- a/doc/install/aws/index.md +++ b/doc/install/aws/index.md @@ -1,7 +1,10 @@ -# Installing GitLab on AWS +# Installing GitLab on Amazon Web Services (AWS) -GitLab can be installed on Amazon Web Services (AWS) by using the official -AMIs provided with each release. +To install GitLab on AWS, you can use the Amazon Machine Images (AMIs) that GitLab +provides with [each release](https://about.gitlab.com/releases/). + +This page offers a walkthrough of a common HA (Highly Available) configuration +for GitLab on AWS. You should customize it to accommodate your needs. ## Introduction @@ -27,13 +30,13 @@ In addition to having a basic familiarity with [AWS](https://docs.aws.amazon.com ## Architecture -Below is the diagram of the architecture. +Below is a diagram of the recommended architecture. -AWS architecture diagram +![AWS architecture diagram](img/aws_diagram.png) -## Costs +## AWS costs -Here's a list of the services we will use, with links to pricing information: +Here's a list of the AWS services we will use, with links to pricing information: - **EC2**: GitLab will deployed on shared hardware which means [on-demand pricing](https://aws.amazon.com/ec2/pricing/on-demand) @@ -47,28 +50,23 @@ Here's a list of the services we will use, with links to pricing information: - **ALB**: An Application Load Balancer will be used to route requests to the GitLab instance. See the [Amazon ELB pricing](https://aws.amazon.com/elasticloadbalancing/pricing/). - **RDS**: An Amazon Relational Database Service using PostgreSQL will be used - to provide database High Availability. See the + to provide a High Availability database configuration. See the [Amazon RDS pricing](https://aws.amazon.com/rds/postgresql/pricing/). -- **ElastiCache**: An in-memory cache environment will be used to provide Redis - High Availability. See the [Amazon ElastiCache pricing](https://aws.amazon.com/elasticache/pricing/). +- **ElastiCache**: An in-memory cache environment will be used to provide a + High Availability Redis configuration. See the + [Amazon ElastiCache pricing](https://aws.amazon.com/elasticache/pricing/). ## Creating an IAM EC2 instance role and profile - To minimize the permissions of the user, we'll create a new [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) role with limited access: 1. Navigate to the IAM dashboard https://console.aws.amazon.com/iam/home and click **Create role**. -1. Create a new role by choosing to **AWS service > EC2**. Once done, click +1. Create a new role by selecting **AWS service > EC2**, then click **Next: Permissions**. - - ![Create role](img/create_iam_role.png) - 1. Choose **AmazonEC2FullAccess** and **AmazonS3FullAccess**, then click **Next: Review**. 1. Give the role the name `GitLabAdmin` and click **Create role**. - ![Create role](img/create_iam_role_review.png) - ## Configuring the network We'll start by creating a VPC for our GitLab cloud infrastructure, then @@ -82,9 +80,9 @@ We'll now create a VPC, a virtual networking environment that you'll control: 1. Navigate to https://console.aws.amazon.com/vpc/home. 1. Select **Your VPCs** from the left menu and then click **Create VPC**. - At the name tag enter `gitlab-vpc` and at the IPv4 CIDR block enter `10.0.0.0/16`. - If you don't require dedicated hardware, you can leave tenancy as default. - Click **Yes, Create** when ready. + At the "Name tag" enter `gitlab-vpc` and at the "IPv4 CIDR block" enter + `10.0.0.0/16`. If you don't require dedicated hardware, you can leave + "Tenancy" as default. Click **Yes, Create** when ready. ![Create VPC](img/create_vpc.png) @@ -329,7 +327,7 @@ On the EC2 dashboard, look for Load Balancer on the left column: and create the ELB. After the Load Balancer is up and running, you can revisit your Security -Groups to improve access only through the ELB and any other requirement +Groups to refine the access only through the ELB and any other requirement you might have. ## Deploying GitLab inside an auto scaling group @@ -355,11 +353,12 @@ Choose the AMI: ### Choose an instance type -Based on [GitLab's requirements](../requirements.md#hardware-requirements), the -instance type should be at least `c4.xlarge`, which is enough to accommodate 100 users. +You should choose an instance type based on your workload. Consult +[the hardware requirements](../requirements.md#hardware-requirements) to choose +one that fits your needs (at least `c4.xlarge`, which is enough to accommodate 100 users): -1. Choose the `c4.xlarge` instance. -1. Click **Next: Configure Instance Details** +1. Choose the your instance type. +1. Click **Next: Configure Instance Details**. ### Configure details @@ -375,9 +374,10 @@ In this step we'll configure some details: ### Add storage The root volume is 8GB by default and should be enough given that we won't store -any data there. Let's add a new EBS volume that will host the Git data. Its -size depends on your needs and you can always migrate to a bigger volume. -You will be able to [set up that volume later](#setting-up-the-ebs-volume). +any data there. Let's create a new EBS volume that will host the Git data. Its +size depends on your needs and you can always migrate to a bigger volume later. +You will be able to [set up that volume](#setting-up-the-ebs-volume) +after the instance is created. ### Configure security group @@ -389,7 +389,8 @@ As a last step, configure the security group: ### Review and launch Now is a good time to review all the previous settings. When ready, click -**Create launch configuration** and select the SSH key pair you have created previously. +**Create launch configuration** and select the SSH key pair with which you will +connect to the instance. ### Create Auto Scaling Group @@ -421,7 +422,7 @@ we intended. ## After deployment After a few minutes, the instances should be up and accessible via the internet. -Let's connect to it and configure some things before logging in. +Let's connect to the primary and configure some things before logging in. ### Configuring GitLab to connect with postgres and Redis @@ -456,7 +457,7 @@ gitlab_rails['db_password'] = "mypassword" gitlab_rails['db_host'] = "" ``` -Next we only need to configure the Redis section by adding the host and +Next, we need to configure the Redis section by adding the host and uncommenting the port: ```ruby @@ -468,20 +469,22 @@ gitlab_rails['redis_host'] = "" gitlab_rails['redis_port'] = 6379 ``` -The last configuration step is to [change the default file locations ](http://docs.gitlab.com/ee/administration/high_availability/nfs.html) -to make the EFS integration easier to manage. +Finally, reconfigure GitLab for the change to take effect: -Finally run reconfigure, you might find it useful to run a check and -a service status to make sure everything has been setup correctly. ```sh sudo gitlab-ctl reconfigure +``` + +You might also find it useful to run a check and a service status to make sure +everything has been setup correctly: + +```sh sudo gitlab-rake gitlab:check sudo gitlab-ctl status ``` -If everything looks good, copy the Elastic IP over to your browser and -test the instance manually. +If everything looks good, you should be able to reach GitLab in your browser. ### Setting up the EBS volume @@ -498,15 +501,17 @@ The EBS volume will host the Git repositories data: }) ``` + where `/mnt/gitlab-data` the location where you will store the Git data. + 1. Save the file and reconfigure GitLab: ```sh sudo gitlab-ctl reconfigure ``` -To add more than one data volume, follow the same steps. - -You can read more about [storing Git data in an alternative directory](../../administration/repository_storage_paths.md). +TIP: **Tip:** +If you wish to add more than one data volumes to store the Git repositories, +read the [repository storage paths docs](../../administration/repository_storage_paths.md). ### Setting up Gitaly @@ -514,15 +519,19 @@ Gitaly is a service that provides high-level RPC access to Git repositories. It should be enabled and configured in a separate EC2 instance on the [private VPC](#subnets) we configured previously. -Follow the [documentation to set it up](../../administration/gitaly/index.md). +Follow the [documentation to set up Gitaly](../../administration/gitaly/index.md). ### Using Amazon S3 object storage -The S3 object storage can be used for various GitLab objects: +GitLab stores many objects outside the Git repository, many of which can be +uploaded to S3. That way, you can offload the root disk volume of these objects +which would otherwise take much space. -- [How to store the LFS objects in S3](../../workflow/lfs/lfs_administration.md#s3-for-omnibus-installations) ((Omnibus GitLab installations)) -- [How to store Container Registry images to S3](../../administration/container_registry.md#container-registry-storage-driver) (Omnibus GitLab installations) -- [How to store GitLab CI job artifacts to S3](../../administration/job_artifacts.md#using-object-storage) (Omnibus GitLab installations) +In particular, you can store in S3: + +- [The Git LFS objects](../../workflow/lfs/lfs_administration.md#s3-for-omnibus-installations) ((Omnibus GitLab installations)) +- [The Container Registry images](../../administration/container_registry.md#container-registry-storage-driver) (Omnibus GitLab installations) +- [The GitLab CI/CD job artifacts](../../administration/job_artifacts.md#using-object-storage) (Omnibus GitLab installations) ### Setting up a domain name @@ -564,8 +573,8 @@ that you can ping and get reports. ## GitLab Runners -If you want to take advantage of GitLab CI/CD, you have to set up at least one -GitLab Runner. +If you want to take advantage of [GitLab CI/CD](../../ci/README.md), you have to +set up at least one [GitLab Runner](https://docs.gitlab.com/runner/). Read more on configuring an [autoscaling GitLab Runner on AWS](https://docs.gitlab.com/runner/configuration/runner_autoscale_aws/). @@ -577,8 +586,8 @@ and restore its Git data, database, attachments, LFS objects, etc. Some important things to know: -- The backup/restore tool does not store some configuration files, like secrets; you'll - need to [handle this yourself](../../raketasks/backup_restore.md#storing-configuration-files). +- The backup/restore tool **does not** store some configuration files, like secrets; you'll + need to [configure this yourself](../../raketasks/backup_restore.md#storing-configuration-files). - By default, the backup files are stored locally, but you can [backup GitLab using S3](../../raketasks/backup_restore.md#using-amazon-s3). - You can [exclude specific directories form the backup](../../raketasks/backup_restore.md#excluding-specific-directories-from-the-backup). @@ -623,10 +632,17 @@ After a few minutes, the new version should be up and running. ## Conclusion -High Availability is a very big area, we went mostly through scaling and some -redundancy options but it might also imply Geographic replication. There is a -lot of ground yet to cover so have a read through these other resources and feel -free to open an issue to request additional material: +In this guide, we went mostly through scaling and some redundancy options, +your mileage may vary. + +Keep in mind that all Highly Available solutions come with a trade-off between +cost/complexity and uptime. The more uptime you want, the more complex the solution. +And the more complex the solution, the more work is involved in setting up and +maintaining it. + +Have a read through these other resources and feel free to +[open an issue](https://gitlab.com/gitlab-org/gitlab-ce/issues/new) +to request additional material: - [GitLab High Availability](https://docs.gitlab.com/ee/administration/high_availability/): GitLab supports several different types of clustering and high-availability.