新しいランナー登録ワークフローへのマイグレーション

免責事項:このページには、今後の製品、機能、特徴に関する情報が含まれています。掲載されている情報は、情報提供のみを目的としていることにご注意ください。購入や計画の目的でこの情報を鵜呑みにしないでください。すべてのプロジェクトと同様に、このページに記載されている項目は変更または遅れる可能性があります。製品、特徴、または機能の開発者、リリース者、およびリリース時期は、GitLab Inc.の独自の裁量に委ねられます。

GitLab 16.0では、ランナーの登録にランナー認証トークンを使用する新しいランナー作成ワークフローを導入しました。登録トークンを使用する従来のワークフローは非推奨となり、GitLab 17.0で削除される予定です。

新しいワークフローの現在の開発状況については、エピック 7663 をご覧ください。

新しいアーキテクチャの技術的な設計と理由については、Next GitLab Runner Token Architecture をご覧ください。

新しいランナー登録ワークフローについて問題が発生したり懸念がある場合、または以下の情報が十分でない場合は、フィードバックイシューでお知らせください。

新しいランナー登録ワークフロー

新しいランナー登録ワークフローでは、以下のことを行います:

  1. GitLab UI で直接ランナーを作成します。
  2. ランナー認証トークンを受け取ります。
  3. この設定でランナーを登録するときは、登録トークンの代わりにランナー認証トークンを使用してください。複数のホストに登録されたランナーマネージャーは、GitLab UIで同じランナーの下に表示されますが、識別システムIDが表示されます。

新しいランナー登録ワークフローには以下の利点があります:

  • ランナーの所有権記録の保持、ユーザーへの影響の最小化。
  • 一意のシステムIDを追加することで、複数のRunnerで同じ認証トークンを再利用できるようになります。詳しくは、GitLab Runnerの設定の再利用をご覧ください。

予定されている変更の期間

  • GitLab 15.10以降では、新しいRunner登録ワークフローを使うことができます。
  • GitLab 16.6では、登録トークンを無効にする予定です。
  • GitLab 17.0では、ランナー登録トークンのサポートを完全に削除する予定です。

ランナー登録のワークフローが壊れないようにするには

GitLab 16.6 までは、従来のランナー登録ワークフローを使用することができます。

GitLab 16.6では、レガシーランナー登録ワークフローは自動的に無効になります。期間限定で手動でレガシーランナー登録ワークフローを再度有効にすることができます。詳しくは、GitLab 16.6以降の登録トークンの使用をご覧ください。

GitLabインスタンスがGitLab 16.6にアップグレードされる前に何もアクションを起こさなかった場合、ランナー登録ワークフローは壊れてしまいます。

壊れたワークフローを避けるためには、以下のことが必要です:

  1. 共有ランナーを作成し、認証トークンを取得します。
  2. ランナー登録ワークフローの登録トークンを認証トークンに置き換えます。

GitLab 16.6 以降での登録トークンの使用

GitLab 16.6以降も登録トークンを使い続けるには:

  • GitLab.comでは、GitLab 16.8までトップレベルのグループ設定でレガシーランナーの登録プロセスを手動で再有効化することができます。
  • GitLabセルフマネージドでは、GitLab 17.0まで管理エリアの設定で手動でレガシーランナー登録プロセスを再有効化できます。

登録トークンを再有効化するUI設定を実装する計画がイシュー411923で提案されています。

gitlab-runner register コマンド構文の変更

gitlab-runner register コマンドは登録トークンを受け付けなくなり、代わりに GitLab runners 管理ページで生成された新しいランナー認証トークンを受け付けるようになります。ランナー認証トークンはglrt- というプレフィックスで識別できます。

GitLab UI で Runner を作成するとき、以前はgitlab-runner register コマンドでプロンプトが表示されるコマンドラインオプションだった設定値を指定します。これらのコマンドラインオプションは廃止されました。

でランナー認証トークンを指定した場合:

  • コマンドラインオプション--token で指定した場合、gitlab-runner register コマンドは設定値を受け付けません。
  • --registration-token コマンド行オプションを指定すると、gitlab-runner register コマンドは設定値を無視します。

認証トークンには、glrt- という接頭辞が付きます。

自動化ワークフローの中断を最小限に抑えるため、レガシーパラメーター --registration-tokenに Runner 認証トークンが指定されている場合、レガシー互換登録処理がトリガーされます。

GitLab 15.9 のコマンド例:

gitlab-runner register \
    --non-interactive \
    --executor "shell" \
    --url "https://gitlab.com/" \
    --tag-list "shell,mac,gdk,test" \
    --run-untagged "false" \
    --locked "false" \
    --access-level "not_protected" \
    --registration-token "GR1348941C6YcZVddc8kjtdU-yWYD"

GitLab 15.10以降では、タグリスト、ロックされた状態、アクセスレベルのようなUIでランナーや属性の一部を作成します。GitLab 15.11 以降では、これらの属性はregister の引数として受け付けられなくなりました。

次の例は、新しいコマンドを示しています:

gitlab-runner register \
    --non-interactive \
    --executor "shell" \
    --url "https://gitlab.com/" \
    --token "glrt-2CR8_eVxiioB1QmzPZwa"

オートスケーリングへの影響

GitLab Runner OperatorやGitLab Runner Helm Chartのようなオートスケーリングシナリオでは、登録トークンはUIから生成されたランナー認証トークンに置き換えられます。これは、ジョブごとにRunnerを作成する代わりに、ジョブ間で同じRunner設定が再利用されることを意味します。特定のランナーは、ランナープロセスの開始時に生成される一意のシステムIDによって識別できます。

既存のランナーへの影響

既存のランナーは通常通り活動できます。この変更は新規ランナーの登録にのみ影響します。

プログラムによるランナーの作成

GitLab 15.11 以降では、POST /user/runners REST APIを使って認証ユーザーとしてランナーを作成することができます。これは、Runner の設定が動的な場合や再利用できない場合にのみ使用します。ランナー設定が静的な場合は、既存のランナーのランナー認証トークンを再利用してください。詳細については、GitLab Runner の作成を自動化する方法をご覧ください。

次のスニペットでは、新規作成フローを使ってグループランナーを作成し、グループアクセストークンを登録する方法を示しています。プロジェクト・アクセストークンや パーソナル・アクセストークンを使う場合も、プロセスはよく似ています:

# `GROUP_ID` contains the numerical ID of the group where the runner will be created
# `GITLAB_TOKEN` can be a Personal Access Token for a group owner, or a Group Access Token on the respective group
#   created with `owner` access and `api` scope.
#
# The output will be parsed by `jq` to extract the token of the newly created runner
RUNNER_TOKEN=$(curl --silent --request POST "https://gitlab.com/api/v4/user/runners" \
    --header "private-token: $GITLAB_TOKEN" \
    --data runner_type=group_type --data group_id=$GROUP_ID --data 'description=My runner' --data 'tag_list=java,linux' \
  | jq -r '.token')

gitlab-runner register \
    --non-interactive \
    --executor "shell" \
    --url "https://gitlab.com/" \
    --token "$RUNNER_TOKEN"

GitLab Runner の Helm チャートによるインストール

ランナー登録時に設定できないランナー設定オプションがいくつかあります。これらのオプションは設定のみ可能です:

  • UIでランナーを作成する場合。
  • user/runners REST APIエンドポイントを使用します。

values.yamlでは、以下の設定オプションはサポートされなくなりました:

## All these fields are DEPRECATED and the runner WILL FAIL TO START if you specify them
runnerRegistrationToken: ""
locked: true
tags: ""
maximumTimeout: ""
runUntagged: true
protected: true

ランナー認証トークンをsecrets に保存する場合は、それらも変更する必要があります。

レガシーのランナー登録ワークフローでは、フィールドは

apiVersion: v1
kind: Secret
metadata:
  name: gitlab-runner-secret
type: Opaque
data:
  runner-registration-token: "REDACTED" # DEPRECATED, set to ""
  runner-token: ""

新しいランナー登録ワークフローでは、代わりにrunner-token を使用する必要があります:

apiVersion: v1
kind: Secret
metadata:
  name: gitlab-runner-secret
type: Opaque
data:
  runner-registration-token: "" # need to leave as an empty string for compatibility reasons
  runner-token: "REDACTED"
note
秘密管理ソリューションでrunner-registration-tokenに空の文字列を設定できない場合、任意の文字列を設定することができます。runner-token が存在する場合は無視されます。