Commit 80ea0e5d authored by Achilleas Pipinellis's avatar Achilleas Pipinellis

Refactor the GitLab k8s installation method

parent 57ca2340
...@@ -5,69 +5,82 @@ description: Read through the GitLab installation methods. ...@@ -5,69 +5,82 @@ description: Read through the GitLab installation methods.
# Installation # Installation
GitLab can be installed in most GNU/Linux distributions and in a number
of cloud providers.
## Requirements ## Requirements
Before installing GitLab, make sure to check the [requirements documentation](install/requirements.md) Before installing GitLab, make sure to check the [requirements documentation](requirements.md)
which includes useful information on the supported Operating Systems as well as which includes useful information on the supported Operating Systems as well as
the hardware requirements. the hardware requirements.
## Installation methods ## Installation methods
### Choose the best installation method for your needs
To get the best experience from GitLab you need to balance: To get the best experience from GitLab you need to balance:
1. performance 1. Performance
1. reliability 1. Reliability
1. ease of administration (backups, upgrades and troubleshooting) 1. Ease of administration (backups, upgrades and troubleshooting)
1. cost of hosting 1. Cost of hosting
TIP: **If in doubt, choose Omnibus:** TIP: **If in doubt, choose Omnibus:**
For nearly all GitLab installations we recommend using an Omnibus package **GitLab can support up to 40,000 users on a single box Omnibus installation** with enough CPU and RAM. (See [requirements documentation](install/requirements.md)) Our Omnibus GitLab packages are mature, scalable, support
[high availability](../administration/high_availability/README.md) and are used
today on GitLab.com. Our Helm charts are recommended for those who are familiar
with Kubernetes.
### Omnibus (recommended) ### Install GitLab using the Omnibus GitLab package (recommended)
- [Installation using the Omnibus packages](https://about.gitlab.com/downloads/) - This installation method [uses the Omnibus GitLab package](https://about.gitlab.com/install/),
Install GitLab using our official deb/rpm repositories. This is the using our official deb/rpm repositories. This is the recommended way.
recommended way.
If you need additional flexibility and resilience you can scale GitLab Omnibus as described in our [Scaling and High Availability docs](administration/high_availability/README.md). If you need additional flexibility and resilience, we recommend deploying
GitLab as described in our [High Availability documentation](../administration/high_availability/README.md).
### Alternative Omnibus ### Alternative to Omnibus GitLab
- [Installation from source](installation.md) - Install GitLab from source. If the GitLab Omnibus package is not available in your distribution, you can
choose between:
- [Installation from source](installation.md): Install GitLab from source.
Useful for unsupported systems like *BSD. For an overview of the directory Useful for unsupported systems like *BSD. For an overview of the directory
structure, read the [structure documentation](structure.md). structure, read the [structure documentation](structure.md).
- [Docker](docker.md) - Install GitLab Omnibus using Docker. While the recommended database is PostgreSQL, we provide information to install
GitLab [using MySQL](database_mysql.md).
### Kubernetes via GitLab Helm charts - [Docker](docker.md): Install Omnibus GitLab using Docker.
CAUTION: **If in doubt, choose Omnibus:** ### Install GitLab on Kubernetes via the GitLab Helm charts
Installing GitLab in Kubernetes is not currently recommended unless you're experienced with Kubernetes and you know why you need GitLab to be installed in Kubernetes.
GitLab is committed to Kubernetes as a foundational technology. There are three areas where Kubernetes intersects with GitLab: NOTE: **If in doubt, choose Omnibus:**
We recommend being familiar with Kubernetes before using it to deploy GitLab in
production. The methods for management, observability, and some concepts are
different than traditional deployments.
1. Deploying your applications from GitLab projects to Kubernetes (e.g. see [Auto DevOps](autodevops/index.md)) GitLab is committed to Kubernetes as a foundational technology. There are three
1. [Running GitLab CI Runners in a Kubernetes Cluster](runner/install/kubernetes.md) areas where Kubernetes intersects with GitLab:
1. Installing GitLab in Kubernetes
While we recommend using GitLab for the first two points above, for most scenarios we do not currently recommend installing GitLab in Kubernetes. There are a number of trade-offs that you need to be aware of that may not be immediately obvious and could prevent you getting the best experience from GitLab: 1. Deploying your applications from GitLab projects to Kubernetes (e.g., see [Auto DevOps](../topics/autodevops/index.md)).
1. [Running GitLab CI/CD Runners in a Kubernetes Cluster](https://docs.gitlab.com/runner/install/kubernetes.html).
1. Installing GitLab in Kubernetes.
1. Configuration of features such as object storage, backups and certificates can be more challenging While we recommend using GitLab for the first two points above, for most scenarios
1. Administration and troubleshooting requires Kubernetes knowledge we do not currently recommend installing GitLab in Kubernetes. There are a number
1. It can be more expensive for smaller installations. You need multiple nodes for a basic installation when a single box Omnibus installation would work well of trade-offs that you need to be aware of that may not be immediately obvious
1. There are some feature [limitations to be aware of](install/kubernetes/gitlab_chart.md#limitations) and could prevent you getting the best experience from GitLab:
Unless you are experienced with Kubernetes and have a very large user-base (thousands of users) we recommend an Omnibus installation at this time. - Configuration of features such as object storage and backups can be more challenging.
- Administration and troubleshooting requires Kubernetes knowledge.
- It can be more expensive for smaller installations. The default installation
requires more resources than a single node Omnibus deployment, as most services
are deployed in a redundant fashion.
- There are some feature [limitations to be aware of](kubernetes/gitlab_chart.md#limitations).
Over time Kubernetes will mature, hosting options will improve, and GitLab Helm charts and documentation will be refined in production environments. We'll update our recommendations as conditions change. If you're happy with the trade-offs, you can use our official Helm charts to get
started and [install GitLab in Kubernetes](kubernetes/index.md).
If you're happy with the trade-offs, you can use our official Helm charts to get started with GitLab on Kubernetes: ### Install GitLab on cloud providers
- [Install in Kubernetes](kubernetes/index.md): Install GitLab into a Kubernetes GitLab can be installed on a variety of cloud providers:
Cluster using our official Helm Chart Repository.
### Guides to install GitLab on cloud providers
- [Install on AWS](aws/index.md): Install GitLab on AWS using the community AMIs that GitLab provides. - [Install on AWS](aws/index.md): Install GitLab on AWS using the community AMIs that GitLab provides.
- [Install GitLab on Google Cloud Platform](google_cloud_platform/index.md) - [Install GitLab on Google Cloud Platform](google_cloud_platform/index.md)
...@@ -78,13 +91,5 @@ If you're happy with the trade-offs, you can use our official Helm charts to get ...@@ -78,13 +91,5 @@ If you're happy with the trade-offs, you can use our official Helm charts to get
the full process of installing GitLab on Google Kubernetes Engine (GKE), pushing an application to GitLab, building the app with GitLab CI/CD, and deploying to production. the full process of installing GitLab on Google Kubernetes Engine (GKE), pushing an application to GitLab, building the app with GitLab CI/CD, and deploying to production.
- [Getting started with GitLab and DigitalOcean](https://about.gitlab.com/2016/04/27/getting-started-with-gitlab-and-digitalocean/): requirements, installation process, updates. - [Getting started with GitLab and DigitalOcean](https://about.gitlab.com/2016/04/27/getting-started-with-gitlab-and-digitalocean/): requirements, installation process, updates.
- [Demo: Cloud Native Development with GitLab](https://about.gitlab.com/2017/04/18/cloud-native-demo/): video demonstration on how to install GitLab on Kubernetes, build a project, create Review Apps, store Docker images in Container Registry, deploy to production on Kubernetes, and monitor with Prometheus. - [Demo: Cloud Native Development with GitLab](https://about.gitlab.com/2017/04/18/cloud-native-demo/): video demonstration on how to install GitLab on Kubernetes, build a project, create Review Apps, store Docker images in Container Registry, deploy to production on Kubernetes, and monitor with Prometheus.
- _Testing only!_ [DigitalOcean and Docker Machine](digitaloceandocker.md) - - _Testing only!_ [DigitalOcean and Docker Machine](digitaloceandocker.md):
Quickly test any version of GitLab on DigitalOcean using Docker Machine. Quickly test any version of GitLab on DigitalOcean using Docker Machine.
## Database
While the recommended database is PostgreSQL, we provide information to install
GitLab using MySQL. Check the [MySQL documentation](database_mysql.md) for more
information.
[methods]: https://about.gitlab.com/installation/
...@@ -3,8 +3,11 @@ ...@@ -3,8 +3,11 @@
This is the official way to install GitLab on a cloud native environment. This is the official way to install GitLab on a cloud native environment.
For more information on other available GitLab Helm Charts, see the [charts overview](index.md#chart-overview). For more information on other available GitLab Helm Charts, see the [charts overview](index.md#chart-overview).
TIP: **If in doubt, choose Omnibus:** TIP: **If in doubt, choose Omnibus GitLab:**
For nearly all GitLab installations we recommend using an Omnibus package. **GitLab can support up to 40,000 users on a single box Omnibus installation** with enough CPU and RAM. (See [requirements documentation](install/requirements.md)). Before starting to install GitLab in Kubernetes, please read [Choose the best installation method for your needs](install/README.md) Our [Omnibus GitLab packages](../README.md#install-gitlab-using-the-omnibus-gitlab-package-recommended)
are mature, scalable, support [high availability](../../administration/high_availability/README.md)
and are used today on GitLab.com. Our Helm charts are recommended for those who
are familiar with Kubernetes.
## Introduction ## Introduction
......
...@@ -4,14 +4,17 @@ description: 'Read through the different methods to deploy GitLab on Kubernetes. ...@@ -4,14 +4,17 @@ description: 'Read through the different methods to deploy GitLab on Kubernetes.
# Installing GitLab on Kubernetes # Installing GitLab on Kubernetes
TIP: **If in doubt, choose Omnibus:** TIP: **If in doubt, choose Omnibus GitLab:**
For nearly all GitLab installations we recommend using an Omnibus package. **GitLab can support up to 40,000 users on a single box Omnibus installation** with enough CPU and RAM. (See [requirements documentation](install/requirements.md)). Before starting to install GitLab in Kubernetes, please read [Choose the best installation method for your needs](install/README.md) Our [Omnibus GitLab packages](../README.md#install-gitlab-using-the-omnibus-gitlab-package-recommended)
are mature, scalable, support [high availability](../../administration/high_availability/README.md)
and are used today on GitLab.com. Our Helm charts are recommended for those who
are familiar with Kubernetes.
The easiest method to deploy GitLab on [Kubernetes](https://kubernetes.io/) is The easiest method to deploy GitLab on [Kubernetes](https://kubernetes.io/) is
to take advantage of GitLab's Helm charts. [Helm] is a package to take advantage of GitLab's Helm charts. [Helm](https://github.com/kubernetes/helm/blob/master/README.md)
management tool for Kubernetes, allowing apps to be easily managed via their is a package management tool for Kubernetes, allowing apps to be easily managed via their
Charts. A [Chart] is a detailed description of the application including how it Charts. A [Chart](https://github.com/kubernetes/charts) is a detailed description
should be deployed, upgraded, and configured. of the application including how it should be deployed, upgraded, and configured.
## GitLab Chart ## GitLab Chart
...@@ -40,24 +43,21 @@ Learn more about [gitlab-runner chart](gitlab_runner_chart.md). ...@@ -40,24 +43,21 @@ Learn more about [gitlab-runner chart](gitlab_runner_chart.md).
CAUTION: **Deprecated:** CAUTION: **Deprecated:**
These charts are **deprecated**. We recommend using the [GitLab Chart](gitlab_chart.md) These charts are **deprecated**. We recommend using the [GitLab Chart](gitlab_chart.md)
instead. (**Note:** Omnibus is still the recommended installation for most use cases - only the Omnibus Helm chart is deprecated.) instead.
### GitLab-Omnibus Chart ### GitLab-Omnibus Chart
This chart is based on the [GitLab Omnibus Docker images](https://docs.gitlab.com/omnibus/docker/). This chart is based on the [GitLab Omnibus Docker images](https://docs.gitlab.com/omnibus/docker/).
It deploys and configures nearly all features of GitLab, including: It deploys and configures nearly all features of GitLab, including:
- a [GitLab Runner](https://docs.gitlab.com/runner/) - [A GitLab Runner](https://docs.gitlab.com/runner/)
- [Container Registry](../../user/project/container_registry.html#gitlab-container-registry) - [Container Registry](../../user/project/container_registry.html#gitlab-container-registry)
- [Mattermost](https://docs.gitlab.com/omnibus/gitlab-mattermost/) - [Mattermost](https://docs.gitlab.com/omnibus/gitlab-mattermost/)
- [automatic SSL](https://github.com/kubernetes/charts/tree/master/stable/kube-lego) - [Automatic SSL](https://github.com/kubernetes/charts/tree/master/stable/kube-lego)
- and an [NGINX load balancer](https://github.com/kubernetes/ingress/tree/master/controllers/nginx). - [An NGINX load balancer](https://github.com/kubernetes/ingress/tree/master/controllers/nginx)
Learn more about the [gitlab-omnibus chart](gitlab_omnibus.md). Learn more about the [gitlab-omnibus chart](gitlab_omnibus.md).
### Community Contributed Charts ### Community Contributed Charts
The community has also contributed GitLab [CE](https://github.com/kubernetes/charts/tree/master/stable/gitlab-ce) and [EE](https://github.com/kubernetes/charts/tree/master/stable/gitlab-ee) charts to the [Helm Stable Repository](https://github.com/kubernetes/charts#repository-structure). These charts are [deprecated](https://github.com/kubernetes/charts/issues/1138) in favor of the [official Chart](gitlab_chart.md). The community has also contributed GitLab [CE](https://github.com/kubernetes/charts/tree/master/stable/gitlab-ce) and [EE](https://github.com/kubernetes/charts/tree/master/stable/gitlab-ee) charts to the [Helm Stable Repository](https://github.com/kubernetes/charts#repository-structure). These charts are [deprecated](https://github.com/kubernetes/charts/issues/1138) in favor of the [official Chart](gitlab_chart.md).
[chart]: https://github.com/kubernetes/charts
[helm]: https://github.com/kubernetes/helm/blob/master/README.md
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment