LoginSignup
1
0

More than 1 year has passed since last update.

GitLab RunnerをEKSで実行

Last updated at Posted at 2021-05-24

はじめに

CI/CDのパイプラインをGitLabRunnerのKubernetes Executor(EKS)を使って実行する方法になります。
GitLab RunnerをEKSにインストールをします。
※EKSクラスターは構築済みの前提です。

これを利用する背景や課題だったこと、メリットなど

以前はec2上にkopsを構築、スケールアウトにはSpotinstを利用して、Runnerを利用していましたが、メンテナンスのコスト高、安定感に欠けていました。

今回はAWSの完全マネージド(EKS+Autoscale+Spotinstance)にすることによりメンテナンスの容易さ+安定化することが目的となります。

また、スポットインスタンスのワークロードでEC2 Auto Scalingを利用することにより、入札不要モデル(上限価格は設定不要、デフォルト値はオンデマンド価格)で、スポットインスタンスでも中断回数を大きく減らすことが可能で、パイプラインの中断を防ぎます。

作業の流れ

  1. k8s上にrunnerのnamespaceを作成
  2. GitLab runnerのchartが利用できるhelm repositoryを追加する
  3. Runnerの設定ファイルの取得と反映
  4. Runnerのinstall

1. k8s上にRunnerのnamespaceを作成

kubectlでEKSのクラスターに接続できる状態で、以下を実行します。

$ kubectl create namespace gitlab
namespace/gitlab created

2. GitLab Runnerのchartが利用できるhelm repositoryを追加する

gitlabのhelmリポジトリ追加します。

$ helm repo add gitlab https://charts.gitlab.io

追加されたか確認します。

$ helm repo list
NAME    URL
gitlab  https://charts.gitlab.io

3.Runnerの設定ファイルの取得と反映

以下を実行してvalues.yamlを作成します。
適宜values.yamlを修正します。

$ helm inspect values gitlab/gitlab-runner > values.yaml
$ vim values.yaml

以下、修正する必要がありそうな部分です。
Runnerが使うCPUやメモリもこのファイルで設定できます。

#GitLabのURL(Runnerを動かしているサーバのURL)
gitlabUrl:

#Gitlabから取得したトークン
runnerRegistrationToken:

#Runnerを動かす最大コンテナ数
concurrent:

#RBACの作成を有効
rbac:
  create: true

4.Runnerのinstall

上記で作成した設定パラメータのyaml(values.yaml)を使ってhelmでinstallできます。
更新や削除する場合は以下の※を実行します。

$ helm install -n gitlab gitlab-runner -f values.yaml gitlab/gitlab-runner

※パラメータを書き換えで更新する場合(既に上記の手順でインストールしている場合は以下で上書き)

$ helm upgrade -n gitlab gitlab-runner -f values.yaml gitlab/gitlab-runner

※runnerの削除する場合
既にインストールされている場合は以下で削除

$ helm delete -n gitlab gitlab-runner

installされているか確認します。

$ helm list -n gitlab
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
gitlab-runner   gitlab          1               2020-07-21 08:22:00.642993 +0900 JST    deployed        gitlab-runner-0.18.1    13.1.1     

EKS上に展開されているか確認します。

$ kubectl get all -n gitlab
NAME                                               READY   STATUS    RESTARTS   AGE
pod/gitlab-runner-gitlab-runner-7bdc85b647-tggk9   1/1     Running   0          159m

NAME                                          READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/gitlab-runner-gitlab-runner   1/1     1            1           159m

NAME                                                     DESIRED   CURRENT   READY   AGE
replicaset.apps/gitlab-runner-gitlab-runner-7bdc85b647   1         1         1       159m

参考

https://docs.gitlab.com/runner/install/kubernetes.html
https://www.creationline.com/lab/gitlab/33461

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0