チュートリアルGoogle Kubernetes Engineを使うためのGitLab Runnerの設定

このチュートリアルでは、GitLab RunnerがGoogle Kubernetes Engine(GKE) を使ってジョブを実行するように設定する方法を説明します。

このチュートリアルでは、以下のGKE クラスターモードでジョブを実行するように GitLab Runner を設定します:

  • オートパイロット
  • 標準装備

GitLab Runner が GKE を使用するように設定するには:

  1. 環境を設定します。
  2. クラスターを作成して接続します。
  3. Kubernetes Operatorをインストールして設定します。
  4. オプション。設定が成功したことを確認します。

前提条件

GKE を使用するために GitLab Runner を設定する前に、次のことが必要です:

環境のセットアップ

GKEにGitLab Runnerを設定・使用するためのツールをインストールします。

  1. Google Cloud CLIをインストールして設定します。Google Cloud CLIを使ってクラスターに接続します。
  2. kubectl をインストールおよび設定します。kubectlを使用して、ローカル環境からリモートクラスターと通信します。

クラスターの作成と接続

このステップでは、クラスターを作成して接続する方法を説明します。クラスターに接続した後、kubectlを使用してクラスターと対話し、オートパイロットクラスターの場合は実行するジョブを指定する設定を追加します。

  1. Google Cloud Platformで、オートパイロットまたは標準クラスターを作成します。

  2. kubectl認証プラグインをインストールします:

    gcloud components install gke-gcloud-auth-plugin
    
  3. クラスターに接続します:

    gcloud container clusters get-credentials CLUSTER_NAME --zone=CLUSTER_LOCATION
    
  4. クラスターの設定を表示します:

    kubectl config view
    
  5. クラスターに接続されていることを確認します:

    kubectl config current-context
    

Kubernetes Operatorのインストールと設定

クラスターができたので、Kubernetes Operatorをインストールして設定する準備ができました。

  1. 前提条件をインストールします:

    kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.7.1/cert-manager.yaml
    
  2. クラスタ上で実行される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
    
  3. 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
    
  4. Kubernetes Operatorをインストールします:

    kubectl create -f https://operatorhub.io/install/gitlab-runner-operator.yaml
    
  5. 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
    
  6. シークレットを適用します:

    kubectl apply -f gitlab-runner-secret.yml
    
  7. オートパイロット・クラスタの場合は、追加の設定詳細を含む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"
    
  8. config.yml を適用します:

    kubectl apply -f config.yml
    
  9. カスタムリソース定義ファイルを作成し、以下の情報を含めます:

    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
    
  10. カスタムリソース定義ファイルを適用します:

    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 のジョブログを確認しましょう:

    1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
    2. Build > Jobsを選択し、ジョブを見つけます。
    3. ジョブログを表示するには、ジョブステータスを選択します。