|
1 |
| -# Running Gitpod in [Azure AKS](https://azure.microsoft.com/en-gb/services/kubernetes-service/) |
| 1 | +# Running Gitpod in [Azure AKS](https://azure.microsoft.com/en-gb/services/kubernetes-service/) |
| 2 | + |
| 3 | +Before starting the installation process, you need: |
| 4 | + |
| 5 | +- An Azure account |
| 6 | + - [Create one now by clicking here](https://azure.microsoft.com/en-gb/free/) |
| 7 | +- Azure [service principal](https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal). This needs to have "Owner" IAM rights on the subscription and set up with "Group Administrator" ActiveDirectory role |
| 8 | + - Log into [portal.azure.com](https://portal.azure.com/) and navigate to [Azure Active Directory](https://portal.azure.com/?quickstart=True#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/Overview). |
| 9 | + - Select the [Roles and Administrators](https://portal.azure.com/?quickstart=True#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RolesAndAdministrators) |
| 10 | + - Select the role Groups Administrator |
| 11 | + - Select "Add assignments" and add your service principal |
| 12 | +- A `.env` file with basic details about the environment. |
| 13 | + - We provide an example of such file [here](.env.example). |
| 14 | +- [Docker](https://docs.docker.com/engine/install/) installed on your machine, or better, a Gitpod workspace :) |
| 15 | + |
| 16 | +**To start the installation, execute:** |
| 17 | + |
| 18 | +```shell |
| 19 | +make install |
| 20 | +``` |
| 21 | + |
| 22 | +The whole process takes around twenty minutes. In the end, the following resources are created: |
| 23 | + |
| 24 | +- an AKS cluster running Kubernetes v1.20. |
| 25 | +- Azure load balancer. |
| 26 | +- ~~Azure MySQL database.~~ MySQL will be provided by Helm under [#5508](https://github.com/gitpod-io/gitpod/issues/5508) solved |
| 27 | +- ~~Azure Blob Storage.~~ Minio will be used until [Azure storage gateway](https://github.com/gitpod-io/gitpod-azure-aks-guide/issues/1) is configured |
| 28 | +- Azure DNS zone. |
| 29 | +- Azure container registry. |
| 30 | +- [calico](https://docs.projectcalico.org) as CNI and NetworkPolicy implementation. |
| 31 | +- [cert-manager](https://cert-manager.io/) for self-signed SSL certificates. |
| 32 | +- [Jaeger operator](https://github.com/jaegertracing/helm-charts/tree/main/charts/jaeger-operator) - and Jaeger deployment for gitpod distributed tracing. |
| 33 | +- [gitpod.io](https://github.com/gitpod-io/gitpod) deployment. |
| 34 | + |
| 35 | +### Common errors running make install |
| 36 | + |
| 37 | +- Insufficient regional quota to satisfy request |
| 38 | + |
| 39 | + Depending on the size of the configured `disks size` and `machine-type`, |
| 40 | + it may be necessary to request an [increase in the service quota](https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/azure-subscription-service-limits) |
| 41 | + |
| 42 | + *After increasing the quota, retry the installation running `make install`* |
| 43 | + |
| 44 | +## Verify the installation |
| 45 | + |
| 46 | +First, check that Gitpod components are running. |
| 47 | + |
| 48 | +```shell |
| 49 | +kubectl get pods |
| 50 | +NAME READY STATUS RESTARTS AGE |
| 51 | +blobserve-5584456c68-t2vf6 2/2 Running 0 7m40s |
| 52 | +content-service-69fbcdf9fc-ngq9n 1/1 Running 0 7m39s |
| 53 | +dashboard-86877b7779-8rtdj 1/1 Running 0 7m40s |
| 54 | +image-builder-6557d4b5cf-xl9xf 3/3 Running 0 7m39s |
| 55 | +jaeger-5dfd44f668-8tj9x 1/1 Running 0 7m46s |
| 56 | +messagebus-0 1/1 Running 0 7m40s |
| 57 | +minio-76f8b45fb7-brr96 1/1 Running 0 7m40s |
| 58 | +mysql-0 1/1 Running 0 7m40s |
| 59 | +proxy-69d87469f9-fdx9l 1/1 Running 0 7m40s |
| 60 | +proxy-69d87469f9-qsmwg 1/1 Running 0 7m40s |
| 61 | +registry-facade-5xlhh 2/2 Running 0 7m39s |
| 62 | +registry-facade-qzmft 2/2 Running 0 7m39s |
| 63 | +registry-facade-vk9q4 2/2 Running 0 7m39s |
| 64 | +server-6bfdcbfd5b-2kwbt 2/2 Running 0 7m39s |
| 65 | +ws-daemon-7fqd5 2/2 Running 0 7m39s |
| 66 | +ws-daemon-jl46t 2/2 Running 0 7m39s |
| 67 | +ws-daemon-q9k9l 2/2 Running 0 7m39s |
| 68 | +ws-manager-66f6b48c8-ts286 2/2 Running 0 7m40s |
| 69 | +ws-manager-bridge-5dfb558c96-kcxvr 1/1 Running 0 7m40s |
| 70 | +ws-proxy-979dd587b-ghjf4 1/1 Running 0 7m39s |
| 71 | +ws-proxy-979dd587b-mtkxt 1/1 Running 0 7m39s |
| 72 | +``` |
| 73 | + |
| 74 | +### Test Gitpod workspaces |
| 75 | + |
| 76 | +When the provisioning and configuration of the cluster is done, the script shows the URL of the load balancer, |
| 77 | +like: |
| 78 | + |
| 79 | +Please open the URL `https://<domain>/workspaces`. |
| 80 | +It should display the Gitpod login page similar to the next image. |
| 81 | + |
| 82 | +*DNS propagation* can take several minutes. |
| 83 | + |
| 84 | + |
| 85 | + |
| 86 | +---- |
| 87 | + |
| 88 | +## Update Gitpod auth providers |
| 89 | + |
| 90 | +Please check the [OAuth providers integration documentation](https://www.gitpod.io/docs/self-hosted/0.5.0/install/oauth) expected format. |
| 91 | + |
| 92 | +We provide an [example here](./auth-providers-patch.yaml). Fill it with your OAuth providers data. |
| 93 | + |
| 94 | +```console |
| 95 | +make auth |
| 96 | +``` |
| 97 | + |
| 98 | +> We are aware of the limitation of this approach, and we are working to improve the Helm chart to avoid this step. |
| 99 | +
|
| 100 | +## Destroy the cluster and Azure resources |
| 101 | + |
| 102 | +Remove the Azure cluster running: |
| 103 | + |
| 104 | +```shell |
| 105 | +make uninstall |
| 106 | +``` |
| 107 | + |
| 108 | +> The command asks for a confirmation: |
| 109 | +> `Are you sure you want to delete: Gitpod (y/n)?` |
| 110 | +
|
| 111 | +This will destroy the Kubernetes cluster and allow you to manually delete the cloud storage. |
0 commit comments