Skip to content
This repository was archived by the owner on Apr 19, 2021. It is now read-only.

Commit 0279ad6

Browse files
committed
Inline the "Prerequisite" Chapter
This will make the documentation easier to understand, because topics such as db, oauth, domain, registry, certs., etc. can now be covered completely by their own chapter. This also allows to focus on the relevant prerequisites for the environment of choice. For example, on GCP the build-in docker registry is not relevant.
1 parent ac82528 commit 0279ad6

File tree

12 files changed

+87
-100
lines changed

12 files changed

+87
-100
lines changed

src/docs/menu.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -203,10 +203,6 @@ export const MENU: MenuEntry[] = [
203203
"Gitpod Self-Hosted",
204204
"self-hosted/latest/self-hosted",
205205
[
206-
M(
207-
"Prerequisites",
208-
"self-hosted/latest/install/prepare-installation/"
209-
),
210206
M(
211207
"Install on Vanilla Kubernetes",
212208
"self-hosted/latest/install/install-on-kubernetes/"
@@ -219,6 +215,10 @@ export const MENU: MenuEntry[] = [
219215
"OAuth",
220216
"self-hosted/latest/install/oauth/"
221217
),
218+
M(
219+
"Domain",
220+
"self-hosted/latest/install/domain/"
221+
),
222222
M(
223223
"HTTPS Certificates",
224224
"self-hosted/latest/install/https-certs/"

src/docs/self-hosted/0.4.0/install/database.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ url: /docs/self-hosted/0.4.0/install/database/
44

55

66
#### Database
7+
Gitpod uses a MySQL database to store user data. By default Gitpod ships with a MySQL database built-in. If you operate your own MySQL database (which we'd recommend in a production setting) you can use that one. You have the following options:
8+
9+
* Integrated database: If not disabled, this MySQL database is installed in a Kubernetes pod as a part of Gitpod’s Helm chart.
10+
The database uses a Kubernetes PersistentVolume. We do not recommend using this option fo a production setting.
11+
12+
* Own MySQL database: Gitpod requires MySQL in version 5.7 or newer.
13+
714
This chart installs a MySQL database which gets Gitpod up and running but is not suitable for production (the data is lost on each restart of the DB pod). To connect to a porper MySQL installation:
815
- initialize your MySQL database using the SQL files in `database/`. E.g. in a mysql session connected to your database server run:
916
```

src/docs/self-hosted/0.4.0/install/docker-registry.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,15 @@ url: /docs/self-hosted/0.4.0/install/docker-registry/
44

55
# Docker Registry
66

7-
Gitpod uses a Docker registry to push the workspace images it builds.
7+
Gitpod builds Docker images during workspace startup. This enables custom Dockerfiles as part of your workspace config, but is also required for Gitpod itself to function.
8+
To this end, Gitpod requires a container registry where it can push the images it builds.
9+
10+
By default Gitpod ships with a built-in Docker registry. If you operate your own Docker registry (which we'd recommend in a production setting) you can use that one. You have the following options:
11+
12+
* Integrated docker registry: If not disabled, this docker registry is installed in a Kubernetes Pod as a dependency of Gitpod’s Helm chart.
13+
The docker registry requires a Kubernetes PersistentVolume. This registry is not recommended to be used for production.
14+
* Own docker registry: Gitpod can connect to your own docker registry. Compared to its built-in counterpart this enables performance gains and access to otherwise private images.
15+
816
This helm chart can either deploy its own registry (default but requires [HTTPS certs](../https-certs/)) or use an existing one.
917
To connect to an existing Docker registry, do the following steps:
1018

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
url: /docs/self-hosted/0.4.0/install/domain/
3+
---
4+
5+
# Domain
6+
7+
Gitpod requires a domain resolvable by some nameserver (typically a public domain name, e.g. `your-domain.com`).
8+
As Gitpod launches services and workspaces on additional subdomains it also needs two wildcard domains.
9+
For example:
10+
11+
your-domain.com
12+
*.your-domain.com
13+
*.ws.your-domain.com
14+
15+
Installing Gitpod on a subdomain works as well. For example:
16+
17+
gitpod.your-domain.com
18+
*.gitpod.your-domain.com
19+
*.gitpod.ws.your-domain.com

src/docs/self-hosted/0.4.0/install/https-certs.md

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,13 @@
22
url: /docs/self-hosted/0.4.0/install/https-certs/
33
---
44

5+
56
### HTTPS certificates
67

7-
Gitpod needs HTTPS certificates, your own Docker registry, or both to function properly. If you don't have certificates, but a Docker registry available, jump to the [next step](../docker-registry/).
8+
9+
While we highly recommend operating Gitpod using HTTPS, Gitpod is able to run on insecure HTTP.
10+
If you use Gitpod's inernal docker registry, the downside of not using HTTPS is that Kubernetes won't be able to pull images from the registry because it considers the registry insecure.
11+
You can either resort to using an [external registry](#docker-registry-optional) or use HTTPS. For running Gitpod on insecure HTTP, no HTTPS certificates are needed and you can skip this section.
812

913
> Important: The HTTPS certificates for your domain must include `your-domain.com`, `*.your-domain.com` and `*.ws.your-domain.com`. Beware that wildcard certificates are valid for one level only (i.e. `*.a.com` is not valid for `c.b.a.com`).
1014
@@ -25,7 +29,12 @@ openssl dhparam -out secrets/https-certificates/dhparams.pem 2048
2529
```
2630

2731
#### Using Let's Encrypt
28-
If you do not have HTTPS certificates for your domain already, you can generate some using [Let's Encrypt](https://medium.com/@saurabh6790/generate-wildcard-ssl-certificate-using-lets-encrypt-certbot-273e432794d7).
32+
33+
The most accessible means of obtaining HTTPS certificates is using [Let's Encrypt](https://letsencrypt.org/) which provides free certificats to anybody who can prove ownership of a domain.
34+
Gitpod requires [wildcard certificates](https://en.wikipedia.org/wiki/Wildcard_certificate) (e.g. `*.ws.your-domain.com`) which [can be obtained via Let's Encrypt](https://community.letsencrypt.org/t/acme-v2-production-environment-wildcards/55578) but require [proof of ownership via DNS](https://letsencrypt.org/docs/challenge-types/#dns-01-challenge).
35+
There is a [plethora of tutorials](https://www.google.com/search?q=letsencrypt+wildcard) how to [generate wildcard certificates](https://medium.com/@saurabh6790/generate-wildcard-ssl-certificate-using-lets-encrypt-certbot-273e432794d7) using Let's Encrypt.
36+
Things get considerably easier when your domain is registered with a service for which a [Certbot DNS plugin exists](https://certbot.eff.org/docs/using.html#dns-plugins).
37+
2938
Asuming you have `certbot` installed, the following script will generate and configure the required certificates (notice the placeholders):
3039
```bash
3140
export DOMAIN=your-domain.cm

src/docs/self-hosted/0.4.0/install/install-on-gcp-script.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,12 @@ You can install Gitpod self-hosted in your GCP project from within Gitpod. This
2020
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/gitpod-io/self-hosted)
2121

2222
## Prerequisites
23-
- Ensure you have the [general installation prerequisites](../prepare-installation/) available.
23+
- A Google Cloud project
24+
- [Domain](../domain)
2425
- [Google Cloud SDK](https://cloud.google.com/sdk/install)
2526
- [Go (at least 1.12)](https://golang.org/doc/install)
26-
- mysql client
27+
- MySQL client
28+
- Optional: [HTTPS Certificates](../https-certs)
2729

2830
## Configuration
2931

src/docs/self-hosted/0.4.0/install/install-on-kubernetes.md

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,14 @@ Gitpod also provides more optimized installations offering better performance fo
1010

1111
## Prerequisites
1212

13-
- Ensure you have the [general installation prerequisites](../prepare-installation/) available.
13+
- A Kubernetes Cluster in Version 1.13 or newer.
14+
- [Domain](../domain)
15+
- [HTTPS Certificates](../https-certs): Optional, if you use an external docker registry.
1416
- `kubectl` with access to that cluster.
1517
- `helm`. We recommend version 3.x. Any version >= 2.11 will also work, but requires you to have [tiller configured](../helm-2x/).
18+
- Optional: A MySQL Database
19+
- Optional: A Docker Registry
20+
- Optional: Buckets Storage, e.g. Minio
1621

1722
## Configuration
1823

@@ -29,17 +34,16 @@ git remote rename origin upstream
2934
For the rest of this guide we will assume that you are located in the root of a working copy of this repository.
3035

3136
### Domain name and IP address
32-
Gitpod requires a domain name which resolves to the IP of your Kubernetes cluster. In this document we'll use `your-domain.com` as example. Set your real domain in the `values.yaml` under `gitpod.hostname`.
37+
Gitpod requires [domain names](../domain/) which resolve to the IP of your Kubernetes cluster.
38+
Set your domain in the `values.yaml` under `gitpod.hostname`.
39+
3340
By default Gitpod deploys a [`LoadBalancer` service](https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer) as means of ingress.
3441
If you have a fixed IP address that you want to use, set the `gitpod.components.proxy.loadBalancerIP` field to the external IP of your cluster/load balancer.
3542
If this field is not set, Kubernetes will assign you a load balancer IP during deployment.
36-
Once you know your IP address, configure your three domain names to resolve to that IP address:
37-
- `your-domain.com`
38-
- `*.your-domain.com`
39-
- `*.ws.your-domain.com`
43+
Once you know your IP address, configure your three domain names to resolve to that IP address.
4044

4145
### OAuth integration
42-
Gitpod delegates authentication to a configurable [OAuth provider](../prepare-installation/#user-authorization-and-git-integration).
46+
Gitpod delegates authentication to a configurable OAuth provider.
4347

4448
Follow [the steps](../oauth/) to set up GitHub or GitLab as OAuth provider.
4549

src/docs/self-hosted/0.4.0/install/oauth.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,18 @@ url: /docs/self-hosted/0.4.0/install/oauth/
44

55
# How To integrate Gitpod with OAuth providers
66

7-
Currently Gitpod supports GitHub, GitHub Enterprise and GitLab.
7+
Gitpod does not implement user authentication itself, but integrates with other auth provider using [OAuth2](https://oauth.net/2/).
8+
Usually your Git hosting solution (e.g. GitHub or GitLab) acts as the OAuth auth provider. This way we control access to Gitpod while at
9+
the same time making sure every user has proper access to their Git repository.
10+
11+
Gitpod supports the following authentication providers:
12+
* github.com
13+
* GitHub Enterprise in version 2.16.x and higher
14+
* gitlab.com
15+
* GitLab Community Edition in version 11.7.x and higher
16+
* GitLab Enterprise Edition in version 11.7.x and higher
17+
* Bitbucket — coming soon
18+
* Custom Auth Provider – Inquiry TypeFox for a quote
819

920
## GitHub
1021
To authenticate your users with GitHub you need to create a [GitHub OAuth App](https://developer.github.com/apps/building-oauth-apps/creating-an-oauth-app/).

src/docs/self-hosted/0.4.0/install/prepare-installation.md

Lines changed: 0 additions & 80 deletions
This file was deleted.

src/docs/self-hosted/0.4.0/install/storage.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,15 @@ url: /docs/self-hosted/0.4.0/install/storage/
44

55
# Workspace Storage
66

7-
Gitpod creates a backup of workspaces when they're shut down.
7+
Gitpod uses bucket storage to persist the contents of workspaces. Each workspace is tarballed into a single archive file which is then uploaded to the bucket.
8+
9+
By default Gitpod ships with [MinIO](https://min.io/) as built-in bucket storage. If you operate your own MinIO instance, or have access to Google Cloud Bucket storage you can use that one. You have the following options:
10+
11+
* Integrated MinIO: If not disabled, Gitpod installs MinIO in Kubernetes as a dependency of Gitpod’s helm charts.
12+
MinIO itself can serve as a [gateway](https://github.com/minio/minio/tree/master/docs/gateway) to other storage providers.
13+
When storing the data itself, MinIO relies on a [persistent volume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) which in turn supports a [wide range of storage backends](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#types-of-persistent-volumes).
14+
* Bring your own storage bucket: Gitpod can be configured to connect to your own installation of MinIO or Google Cloud Storage compatible storage solution.
15+
816
This helm chart ships with a [MinIO](https://min.io/) installation for this purpose.
917
Alternatively, you can connect to your own [MinIO](https://min.io/) installation using
1018
- `echo values/minio.yaml >> configuration.txt`

0 commit comments

Comments
 (0)