正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

チュートリアル: Google Kubernetes Engineを使用するようにGitLab Runnerを設定する

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

このチュートリアルでは、GitLab Runnerを設定して、Standard cluster modeでジョブを実行します。

GitLab RunnerをGKEで使用するように設定するには、次の手順に従います:

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

はじめる前

GitLab RunnerをGKEで使用するように設定する前に、以下を行う必要があります:

環境をセットアップ

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. cert-managerをインストールします。証明書マネージャーが既にインストールされている場合は、このステップをスキップしてください:

    kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.7.1/cert-manager.yaml
  2. Operator Lifecycle Manager(OLM)をインストールします。OLMは、クラスター上で実行されるKubernetes Operatorを管理するツールです:

    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をインストールします:

    kubectl create -f https://operatorhub.io/install/gitlab-runner-operator.yaml
  4. Operator Lifecycle Manager v0.25.0以降のみ。独自の証明書マネージャーを追加するか、cert-managerを使用します。

    • 独自の証明書プロバイダーを追加するには、次の手順に従います:

      1. gitlab-runner-operator.yamlで、env設定で証明書ネームスペースと証明書名を定義します:

        cat > gitlab-runner-operator.yaml << EOF
        apiVersion: operators.coreos.com/v1alpha1
        kind: Subscription
        metadata:
        name: gitlab-runner-operator
        namespace: gitlab-ns
        spec:
        channel: stable
        name: gitlab-runner-operator
        source: operatorhubio-catalog
        ca: webhook-server-cert
        sourceNamespace: olm
        config:
        env:
           - name: CERTIFICATE_NAMESPACE
           value: cert_namespace_desired_value
           - name: CERTIFICATE_NAME
           value: cert_name_desired_value
        EOF
      2. gitlab-runner-operator.yamlをKubernetesクラスターに適用します:

        kubectl apply -f gitlab-runner-operator.yaml
    • cert-managerを使用するには、次の手順に従います:

      1. certificate-issuer-install.yamlを使用して、Operatorのインストールに加えて、デフォルトネームスペースにCertificateIssuerをインストールします:

        cat > certificate-issuer-install.yaml << EOF
        apiVersion: v1
        kind: Namespace
        metadata:
        labels:
           app.kubernetes.io/component: controller-manager
           app.kubernetes.io/managed-by: olm
           app.kubernetes.io/name: gitlab-runner-operator
        name: gitlab-runner-system
        ---
        apiVersion: cert-manager.io/v1
        kind: Certificate
        metadata:
        name: gitlab-runner-serving-cert
        namespace: gitlab-runner-system
        spec:
        dnsNames:
        - gitlab-runner-webhook-service.gitlab-runner-system.svc
        - gitlab-runner-webhook-service.gitlab-runner-system.svc.cluster.local
        issuerRef:
          kind: Issuer
          name: gitlab-runner-selfsigned-issuer
        secretName: webhook-server-cert
        ---
        apiVersion: cert-manager.io/v1
        kind: Issuer
        metadata:
        name: gitlab-runner-selfsigned-issuer
        namespace: gitlab-runner-system
        spec:
        selfSigned: {}
        EOF
      2. certificate-issuer-install.yamlをKubernetesクラスターに適用します:

        kubectl create -f certificate-issuer-install.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-token: YOUR_RUNNER_AUTHENTICATION_TOKEN
     EOF
  6. シークレットを適用します:

    kubectl apply -f gitlab-runner-secret.yml
  7. カスタムリソース定義ファイルを作成し、次の情報を含めます:

     cat > gitlab-runner.yml << EOF
     apiVersion: apps.gitlab.com/v1beta2
     kind: Runner
     metadata:
       name: gitlab-runner
     spec:
       gitlabUrl: https://gitlab.example.com
       buildImage: alpine
       token: gitlab-runner-secret
     EOF
  8. カスタムリソース定義ファイルを適用します:

    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. 左側のサイドバーで、ビルド > ジョブを選択して、ジョブを見つけます。
    3. ジョブログを表示するには、ジョブステータスを選択します。