TIL Deploy GitLab Runner to an Okteto Kubernetes Cluster

Can we deploy GitLab Runner with Okteto? Yes.

brew install okteto
okteto context use https://cloud.okteto.com
okteto context list
mkdir okteto &&  cd okteto/
helm repo add gitlab https://charts.gitlab.io
brew install helm
helm repo add gitlab https://charts.gitlab.io
helm repo update gitlab

Assemble runner-chart-values.yaml. I used something like what's shown below and in this snippet:

gitlabUrl: https://gitlab.com/
runnerRegistrationToken: "TOKEN_GOES_HERE"

# https://gitlab.com/gitlab-org/gitlab-runner/-/issues/3802#note_1137664476
preEntrypointScript: |
  sed -i '/\[runners.cache\]/d' /home/gitlab-runner/.gitlab-runner/config.toml
  sed -i '/\[runners.cache.s3\]/d' /home/gitlab-runner/.gitlab-runner/config.toml
  sed -i '/\[runners.cache.gcs\]/d' /home/gitlab-runner/.gitlab-runner/config.toml
  sed -i '/\[runners.cache.azure\]/d' /home/gitlab-runner/.gitlab-runner/config.toml

runners:
  # runner configuration, where the multi line strings is evaluated as
  # template so you can specify helm values inside of it.
  #
  # tpl: https://helm.sh/docs/howto/charts_tips_and_tricks/#using-the-tpl-function
  # runner configuration: https://docs.gitlab.com/runner/configuration/advanced-configuration.html
  config: |
    concurrent = 6
    log_level = "info"
    log_format = "json"
    sentry_dsn = "https://whatever@whatever.ingest.sentry.io/0123456789"
    listen_address = "localhost:9252"
    [[runners]]
      name = "okteto k8s"
      [runners.kubernetes]
        namespace = "{{.Release.Namespace}}"
        image = "debian:bookworm-slim"

See the docs for more.

I am going to use the notes here to generate the Runner manifest. I ran:

helm template --namespace runner-bbbbbrie  gitlab-runner -f runner-chart-values.yaml gitlab/gitlab-runner > runner-manifest.yaml

Check your work:

kubectl --dry-run=client apply -f runner-manifest.yaml
kubectl --dry-run=server apply -f runner-manifest.yaml

Deploy:

kubectl apply -f runner-manifest.yaml

I need to specify a namespace. Let's see how namespaces work in Okteto. This can be done in the Web UI or with okteto namespace create cutecats.

Let's get set up to use kubectl against our okteto cluster:

okteto context list
okteto kubeconfig

With that done kubectl config view shows my Okteto cluster: cool!

Let's apply our Runner manifest:

kubectl apply -f runner-manifest.yaml
secret/gitlab-runner created
configmap/gitlab-runner created
deployment.apps/gitlab-runner created

That's promising! Let's check the Runner section of the project: done!

Okteto's documentation on the RBAC rules in place is a 🔖 solid bookmark if you'll be using Okteto for testing and development.


Creating a namespace

I need to specify a namespace. Read how namespaces work in Okteto.

I created a namespace in the Web UI but you can also use okteto namespace create cutecats.

An example repo

git clone https://github.com/okteto/movies-with-compose
cd movies-with-compose
okteto up

ℹ️ About this TIL snippet: Created 2022-12-09T00:46:21-05:00 · View the source