チュートリアルGoogle Kubernetes Engineを使うためのGitLab Runnerの設定
このチュートリアルでは、GitLab RunnerがGoogle Kubernetes Engine(GKE) を使ってジョブを実行するように設定する方法を説明します。
このチュートリアルでは、以下のGKE クラスターモードでジョブを実行するように GitLab Runner を設定します:
- オートパイロット
- 標準装備
GitLab Runner が GKE を使用するように設定するには:
- 環境を設定します。
- クラスターを作成して接続します。
- Kubernetes Operatorをインストールして設定します。
- オプション。設定が成功したことを確認します。
前提条件
GKE を使用するために GitLab Runner を設定する前に、次のことが必要です:
- メンテナーまたはオーナーのロールを持つプロジェクトを持っていること。プロジェクトがない場合は、作成することができます。
- プロジェクトRunner登録トークンを取得してください。
- GitLab Runnerをインストールします。
環境のセットアップ
GKEにGitLab Runnerを設定・使用するためのツールをインストールします。
- Google Cloud CLIをインストールして設定します。Google Cloud CLIを使ってクラスターに接続します。
- kubectl をインストールおよび設定します。kubectlを使用して、ローカル環境からリモートクラスターと通信します。
クラスターの作成と接続
このステップでは、クラスターを作成して接続する方法を説明します。クラスターに接続した後、kubectlを使用してクラスターと対話し、オートパイロットクラスターの場合は実行するジョブを指定する設定を追加します。
-
kubectl認証プラグインをインストールします:
gcloud components install gke-gcloud-auth-plugin
-
クラスターに接続します:
gcloud container clusters get-credentials CLUSTER_NAME --zone=CLUSTER_LOCATION
-
クラスターの設定を表示します:
kubectl config view
-
クラスターに接続されていることを確認します:
kubectl config current-context
Kubernetes Operatorのインストールと設定
クラスターができたので、Kubernetes Operatorをインストールして設定する準備ができました。
-
前提条件をインストールします:
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.7.1/cert-manager.yaml
-
クラスタ上で実行されるKubernetes Operatorsを管理するツールであるOperator Lifecycle Manager(OLM) をインストールします:
curl --silent --location "https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.24.0/install.sh" \ | bash -s v0.24.0
-
Kubernetes Operator Catalogをインストールします:
kubectl create -f https://raw.githubusercontent.com/operator-framework/operator-lifecycle-manager/master/deploy/upstream/quickstart/crds.yaml kubectl create -f https://raw.githubusercontent.com/operator-framework/operator-lifecycle-manager/master/deploy/upstream/quickstart/olm.yaml
-
Kubernetes Operatorをインストールします:
kubectl create -f https://operatorhub.io/install/gitlab-runner-operator.yaml
-
GitLabプロジェクトの
runner-registration-token
を含むシークレットを作成します:cat > gitlab-runner-secret.yml << EOF apiVersion: v1 kind: Secret metadata: name: gitlab-runner-secret type: Opaque stringData: runner-registration-token: YOUR_RUNNER_REGISTRATION_TOKEN EOF
-
シークレットを適用します:
kubectl apply -f gitlab-runner-secret.yml
-
オートパイロット・クラスタの場合は、追加の設定詳細を含むYAMLファイルを作成する必要があります。オートパイロット・クラスタはこのファイルを使用して、ポッドがジョブを実行するために必要なリソースをGKEに指示します。標準クラスターではこのファイルを作成する必要はありません。以下に設定例を示します:
cat > config.yml << EOF apiVersion: v1 kind: configMaps metadata: name: config.toml config: | [[runners]] [runners.kubernetes] image = "alpine" cpu_limit = "1" memory_limit = "128Mi" service_cpu_limit = "1" service_memory_limit = "128Mi" helper_cpu_limit = "500m" helper_memory_limit = "100Mi"
-
config.yml
を適用します:kubectl apply -f config.yml
-
カスタムリソース定義ファイルを作成し、以下の情報を含めます:
cat > gitlab-runner.yml << EOF apiVersion: apps.gitlab.com/v1beta2 kind: Runner metadata: name: gitlab-runner spec: gitlabUrl: https://gitlab.example.com buildImage: alpine config: "config.toml" # <---- Reference to the config.toml configMap token: gitlab-runner-secret EOF
-
カスタムリソース定義ファイルを適用します:
kubectl apply -f gitlab-runner.yml
これで完了です!これで GitLab Runner が GKE を使うように設定できました。次のステップでは、設定がうまくいっているかどうかをチェックします。
設定の確認
Runner が GKE クラスタ内で動作しているかどうかを確認するには、次のいずれかを実行します:
-
次のコマンドを使用します:
kubectl get pods
以下の出力が表示されるはずです。これは、RunnerがGKEクラスターで実行されていることを示しています:
NAME READY STATUS RESTARTS AGE gitlab-runner-hash-short_hash 1/1 Running 0 5m
-
GitLab のジョブログを確認しましょう:
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- Build > Jobsを選択し、ジョブを見つけます。
- ジョブログを表示するには、ジョブステータスを選択します。