2021年4月8日木曜日

Gitlab Runner を helm を使って k8s 上にデプロイしてみた

Gitlab Runner を helm を使って k8s 上にデプロイしてみた

概要

過去に Gitlab を helm chart を使って k8s 上にインストールしました
今回は Gitlab Runner のみを k8s 上にデプロイしてみました

環境

  • Gitlab 13.10.2
  • k8s 1.20.4

リポジトリのインストール

  • helm repo add gitlab https://charts.gitlab.io/
  • helm repo search -l gitlab/gitlab

gitlab-runner の chart があることを確認します

Specific runner のデプロイ

プロジェクトの Settings -> CI/CD からトークンを取得します
それを使って helm を実行します

  • helm install --namespace gitlab gitlab-runner gitlab/gitlab-runner --set gitlabUrl=https://gitlab.example.com:32443/ --set privileged=true --set runnerRegistrationToken=xxxxxxxxxxxxxxx

指定するパラメータは

  • gitlabURL
  • privileged (dind を使う場合は必須)
  • runnerRegistrationToken

になります
無事 Pod が動作すると画面からも Runner が登録されているのが確認できます

Shared runner のデプロイ

Shared Runner 用のトークンは Admin Area から取得します
Overview -> Runners にあります

デプロイコマンドは先程と同じです
トークンを取得する場所が異なる点だけ注意しましょう
また helm デプロイ時のリリース名も先程とは別の名前にしましょう

  • helm install --namespace gitlab gitlab-shared-runner gitlab/gitlab-runner --set gitlabUrl=https://gitlab.example.com:32443/ --set privileged=true --set runnerRegistrationToken=xxxxxxxxxxxxxxx

デプロイが完了すると一覧にも表示されるようになります

rbac と runners.config を設定する場合は

Runner が Gitlab からリポジトリを clone する場合に URL がおかしいというエラーが出る場合があります
また serviceAccount が default だと権限がないと言われてエラーになります
その場合は rbac.createrunners.config を設定してあげましょう

helm upgrade --namespace gitlab gitlab-shared-runner gitlab/gitlab-runner --set gitlabUrl=https://gitlab.example.com:32443/ --set privileged=true --set runnerRegistrationToken=xxxxxxxxxxxxxxx --set rbac.create=true --set runners.config="  
[[runners]]  
  clone_url = \"https://gitlab.example.com:32443/\"  
  [runners.kubernetes]  
    image = \"ubuntu:16.04\"  
"

runners.config はヒアドキュメントなので複数行で記載する必要があります

最後に

Gitlab の helm chart をデプロイする際に一緒に Runner もデプロイできるのですが DNS の関係や ACL の関係で一緒にインストールするのが難しい場合は --set gitlab-runner.install=false にして後からインストールしましょう

おまけ: values の取得方法

  • helm inspect values gitlab/gitlab-runner

参考サイト

0 件のコメント:

コメントを投稿