Installing Tsuru on Google Kubernetes Engine cluster with Helm

This post will show how to install and configure Tsuru on GKE with Helm. All steps in this guide were done in Kubernetes v1.22.0. While it might work for almost all Kubernetes versions, some versions may break something. Feel free to report us in that case. You need to have both gcloud and kubectl previously installed on your machine, if you don’t have it yet, you can install it here, with gcloud and kubectl properly installed, let’s get started. To create a Kubernetes cluster using gcloud, run the command:

$ gcloud beta container clusters create tsuru-cluster --image-type=COS --machine-type=e2-standard-4 --num-nodes "2" --zone=$YOUR_PREEFERED_ZONE

Download a release of the Helm client. With helm installed, let’s start

Installing Tsuru

To install Tsuru and its dependencies we will use a helm chart

$ helm repo add tsuru https://tsuru.github.io/charts

Now let’s install the chart!

$ helm install tsuru tsuru/tsuru-stack --create-namespace --namespace tsuru-system

Now you have tsuru installed!!

Configuring Tsuru

Create the admin user on tsuru:

$ kubectl exec -it -n tsuru-system deploy/tsuru-api -- tsurud root user create admin@admin.com# CHANGE IT TO YOUR ADMIN USER #

Add the tsuru target and log in:

$ export TSURU_HOST=$(kubectl get svc -n tsuru-system tsuru-api -o 'jsonpath={.status.loadBalancer.ingress[].ip}')
$ tsuru target-add gke http://$TSURU_HOST -s
$ tsuru login

Let’s assign the correct IP to default router:

$ export NGINX_HOST=$(kubectl get svc -n tsuru-system tsuru-ingress-nginx-controller -o 'jsonpath={.status.loadBalancer.ingress[].ip}')
$ helm upgrade tsuru tsuru/tsuru-stack --namespace tsuru-system -f values.yaml --set kubernetes-router.ingressExpose.domain=cloud.$NGINX_HOST.nip.io --set kubernetes-router.ingressExpose.port=80

Create one team:

$ tsuru team create admin

Build Platforms:

$ tsuru platform add python
$ tsuru platform add go

Create and Deploy tsuru-dashboard app:

$ tsuru app create dashboard
$ tsuru app deploy -a dashboard --image tsuru/dashboard

Create an app to test:

$ mkdir example-go
$ cd example-go
$ git clone https://github.com/tsuru/platforms.git
$ cd platforms/examples/go
$ tsuru app create example-go go
$ tsuru app deploy -a example-go .

Check the app info and get the url:

$ tsuru app info -a example-go