- Vmware Workstation with Ubuntu Server 20.04.3 LTS (tested) installed
I used one virtual machine. You can use as many workers as you want.
You need to replace $DOMAIN with your own domain name.
Let's make the necessary settings on the server.
sudo sed -i "s/ubuntu/master.$DOMAIN/" /etc/hostname
sudo hostname -F /etc/hostname
sudo sed -i "s/127.0.1.1 ubuntu/127.0.1.1 master.$DOMAIN master/" /etc/hosts
sudo dpkg-reconfigure tzdata
# Europe -> Istanbul (Write according to your own location.)
sudo apt -y update && sudo apt -y upgrade
sudo sed -i.bak '/swap/ s/^\(.*\)$/#\1/g' /etc/fstab
sudo swapoff -a
Need to reboot. Installing k3s, helm, docker and required packages
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release -y
curl https://baltocdn.com/helm/signing.asc | sudo apt-key add -
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Installing k3s
curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644 --disable traefik --disable servicelb
mkdir ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $USER:$USER /home/$USER/.kube/config
sed -i "s/127.0.0.1/master.$DOMAIN/" ~/.kube/config
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io helm
sudo usermod -aG docker $USER
chmod go-r ~/.kube/config
Install cert-manager
helm upgrade \
--atomic \
--cleanup-on-fail \
--create-namespace \
--install \
--namespace cert-manager \
--repo https://charts.jetstack.io \
--reset-values \
--set installCRDs=true \
--wait \
cert-manager \
cert-manager
You need to create a api-token in Cloudflare
First, let’s create a token to use the CloudFlare API:
1. Profile → API Tokens → Create Token.
2. Set access rights as follows:
Permissions:
Zone — DNS — Edit
Zone — Zone — Read
Zone Resources:
Include — All Zones
Done
You need to write the api token in the following line of code.
kubectl create secret generic cloudflare-api-token -n cert-manager --from-literal=api-token="$CLOUDFLARE_API_TOKEN" --dry-run=client -o yaml | kubectl replace --force -f -
Make the necessary edits in certificate.yaml with cloudflare.yaml.Then run the following codes sequentially.
kubectl create namespace gitpod
kubectl apply -f cloudflare.yaml
kubectl apply -f certificate.yaml
Let's get started with Gitpod Installation.
docker create -ti --name installer eu.gcr.io/gitpod-core-dev/build/installer:main.2090
docker cp installer:/app/installer ./installer
docker rm -f installer
kubectl label node master.$DOMAIN gitpod.io/workload_meta=true gitpod.io/workload_ide=true gitpod.io/workload_workspace_services=true gitpod.io/workload_workspace_regular=true gitpod.io/workload_workspace_headless=true
./installer init > gitpod.config.yaml
You need to make changes to domain, containerdRuntimeDir and containerdSocket in gitpod.config.yaml file.
containerdRuntimeDir="/run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io"
containerdSocket="/run/k3s/containerd/containerd.sock"
./installer validate config --config gitpod.config.yaml
./installer validate cluster --kubeconfig ~/.kube/config --config gitpod.config.yaml
./installer render --config gitpod.config.yaml --namespace gitpod > gitpod.yaml
kubectl apply -f gitpod.yaml
watch -n1 kubectl get pods -n gitpod
kubectl patch svc proxy -p '{"spec":{"externalIPs":["192.168.1.100"]}}' -n gitpod
Don't forget to replace it with your own ip address.
Finish :)