Gitpod

Always ready-to-code.

# Installer The best way to get started with Gitpod is by using our recommended & default installation method [described in our documentation](https://www.gitpod.io/docs/self-hosted/latest/getting-started). In fact, our default installation method actually wraps this installer into a UI that helps you manage, update and configure Gitpod in a streamlined way. This document describes how to use the installer directly. > The installer is an internal tool and as such not expected to be used by those external to Gitpod. # Requirements - A machine running Linux - MacOS and Windows are not currently supported, but may be in future - [Kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) installed - A [Kubernetes cluster configured](https://www.gitpod.io/docs/self-hosted/latest) - A [TLS certificate](#tls-certificates) Or, [open a Gitpod workspace](https://gitpod.io/from-referrer/) The process to install Gitpod is: 1. generate a base config 2. amend the config for your own use-case 3. validate 4. render the Kubernetes YAML 5. `kubectl apply` # Quickstart ## Download the Installer on Linux Releases can be downloaded from [GitHub Releases](https://github.com/gitpod-io/gitpod/releases/) Select your desired binary, download and install 1. Download the latest release with the command: ```shell curl -fsSLO https://github.com/gitpod-io/gitpod/releases/latest/download/gitpod-installer-linux-amd64 ``` 2. Validate the binary (optional) Download the checksum file: ```shell curl -fsSLO https://github.com/gitpod-io/gitpod/releases/latest/download/gitpod-installer-linux-amd64.sha256 ``` Validate the binary against the checksum file: ```shell echo "$( gitpod.yaml ``` ## Deploy ```shell kubectl apply -f gitpod.yaml ``` After a few minutes, your Gitpod installation will be available on the specified `domain`. ## Uninstallation The Installer generates a ConfigMap with the metadata of every Kubernetes object generated by the Installer. This can be retrieved to remove Gitpod from your cluster. ```shell kubectl get configmaps gitpod-app -o jsonpath='{.data.app\.yaml}' \ | kubectl delete -f - # Piping to this will delete automatically ``` **Important**. This may leave certain objects still in your Kubernetes cluster. This will include `Secrets` generated from internal `Certificates` and `PersistentVolumeClaims`. These will need to be manually deleted. [Batch jobs](https://kubernetes.io/docs/concepts/workloads/controllers/job/) are not included in this ConfigMap by design. These have `ttlSecondsAfterFinished` defined in the spec and so will be deleted shortly after the jobs have run. # Advanced topics ## Post-processing the YAML > Here be dragons. > > Whilst you are welcome to post-process your YAML should the need arise, it is not > recommended and is entirely unsupported. Do so at your own risk. The Gitpod Installer is designed as a way of providing you a robust and well-tested framework for installing Gitpod to your own infrastructure. There may be times when this framework doesn't meet your individual requirements. In these situations, you should post-process the generated YAML. As an example, this will allow you to change the `proxy` service to a `ClusterIP` type instead of `LoadBalancer` using [yq](https://mikefarah.gitbook.io/yq). ```shell yq eval-all --inplace \ '(select(.kind == "Service" and .metadata.name == "proxy") | .spec.type) |= "ClusterIP"' \ gitpod.yaml ``` Similarly, if you are doing a `Workspace` only install (specifying `Workspace` as the kind in config) you might want to change the service type of `ws-proxy` to `ClusterIP` instead of the default `LoadBalancer`. You can post-process the YAML to change that. ```shell yq eval-all --inplace \ '(select(.kind == "Service" and .metadata.name == "ws-proxy") | .spec.type) |= "ClusterIP"' \ gitpod.yaml ``` ## Error validating `StatefulSet.status` ```shell error: error validating "gitpod.yaml": error validating data: ValidationError(StatefulSet.status): missing required field "availableReplicas" in io.k8s.api.apps.v1.StatefulSetStatus; if you choose to ignore these errors, turn validation off with --validate=false ``` Depending upon your Kubernetes implementation, you may receive this error. This is due to a bug in the underlying StatefulSet dependency, which is used to generate the OpenVSX proxy (see [#8529](https://github.com/gitpod-io/gitpod/issues/8529)). To fix this, you will need to post-process the rendered YAML to remove the `status` field. ```shell yq eval-all --inplace \ 'del(select(.kind == "StatefulSet" and .metadata.name == "openvsx-proxy").status)' \ gitpod.yaml ``` --- # What is installed - All Gitpod components - Container registry* - MySQL database* - Minio object storage* \* By default, these dependencies are installed if the `inCluster` setting is `true`. External dependencies can be used in their place # Config > Not every parameter is discussed in this table, just ones that are likely > to need changing. The full config structure is available in [config.go](/install/installer/pkg/config/v1/config.go). | Property | Required | Description | Notes | | --- | --- | --- | --- | | `domain` | Y | The domain to deploy to | This will need to be changed on every deployment | | `kind` | Y | Installation type to run - for most users, this will be `Full` | Available options are: