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

Toolbox

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed

Toolboxポッドは、GitLabアプリケーション内で定期的なハウスキーピングタスクを実行するために使用されます。これらのタスクには、バックアップ、Sidekiqのメンテナンス、Rakeタスクが含まれます。

設定

以下の設定は、Toolboxチャートによって提供されるデフォルトの設定です:

gitlab:
  ## doc/charts/gitlab/toolbox
  toolbox:
    enabled: true
    replicas: 1
    backups:
      cron:
        enabled: false
        concurrencyPolicy: Replace
        failedJobsHistoryLimit: 1
        schedule: "0 1 * * *"
        successfulJobsHistoryLimit: 3
        suspend: false
        backoffLimit: 6
        safeToEvict: false
        restartPolicy: "OnFailure"
        resources:
          requests:
            cpu: 50m
            memory: 350M
        persistence:
          enabled: false
          accessMode: ReadWriteOnce
          useGenericEphemeralVolume: false
          size: 10Gi
      objectStorage:
        backend: s3
        config: {}
    persistence:
      enabled: false
      accessMode: 'ReadWriteOnce'
      size: '10Gi'
    resources:
      requests:
        cpu: '50m'
        memory: '350M'
    securityContext:
      fsGroup: '1000'
      runAsUser: '1000'
      runAsGroup: '1000'
    containerSecurityContext:
      runAsUser: '1000'
    affinity: {}
パラメータデフォルト説明
affinity{}アフィニティルール(ポッドの割り当て用)
annotations{}Toolboxポッドおよびジョブに追加する注釈
common.labels{}このチャートによって作成されたすべてのオブジェクトに適用される補助ラベル。
antiAffinityLabels.matchLabelsアンチアフィニティオプションを設定するためのラベル
backups.cron.activeDeadlineSecondsnullバックアップCronジョブのアクティブなデッドライン秒数(nullの場合、アクティブなデッドラインは適用されません)
backups.cron.ttlSecondsAfterFinishednullバックアップCronジョブのジョブ実行完了後の有効期間(nullの場合、有効期間は適用されません)
backups.cron.safeToEvictfalseオートスケールのsafe-to-evictアノテーション
backups.cron.backoffLimit6バックアップCronジョブのバックオフ制限
backups.cron.concurrencyPolicyReplaceKubernetesジョブの並行処理ポリシー
backups.cron.enabledfalseバックアップCronジョブの有効フラグ
backups.cron.extraArgsバックアップユーティリティに渡す引数の文字列
backups.cron.failedJobsHistoryLimit1履歴内の失敗したバックアップジョブの数
backups.cron.persistence.accessModeReadWriteOnceバックアップcronの永続アクセスモード
backups.cron.persistence.enabledfalseバックアップcronの永続化を有効にするフラグ
backups.cron.persistence.matchExpressionsバインドするラベル式の一致
backups.cron.persistence.matchLabelsバインドするラベル値の一致
backups.cron.persistence.useGenericEphemeralVolumefalse一時的な汎用ボリュームを使用する
backups.cron.persistence.size10Giバックアップcronの永続ボリュームサイズ
backups.cron.persistence.storageClassプロビジョニング用のStorageClass名
backups.cron.persistence.subPathバックアップcronの永続ボリュームのマウントパス
backups.cron.persistence.volumeName既存の永続ボリューム名
backups.cron.resources.requests.cpu50mバックアップcronに必要な最小CPU
backups.cron.resources.requests.memory350Mバックアップcronに必要な最小メモリ
backups.cron.restartPolicyOnFailureバックアップcronの再起動ポリシー(NeverまたはOnFailure
backups.cron.schedule0 1 * * *Cron形式のスケジュール文字列
backups.cron.startingDeadlineSecondsnullバックアップcronジョブの開始デッドライン(秒単位)(nullの場合、開始デッドラインは適用されません)
backups.cron.successfulJobsHistoryLimit3履歴内の成功したバックアップジョブの数
backups.cron.suspendfalseバックアップcronジョブは一時停止されます
backups.cron.timeZone""バックアップスケジュールのタイムゾーン。詳細については、Kubernetesのドキュメントを参照してください。指定しない場合、クラスタのタイムゾーンを使用します。
backups.cron.tolerations""バックアップcronジョブに追加するToleration
backups.cron.nodeSelector""バックアップcronジョブのノード選択
backups.objectStorage.backends3使用するオブジェクトストレージプロバイダー(s3gcs、またはazure
backups.objectStorage.config.gcpProject""バックエンドがgcsの場合に使用するGCPプロジェクト
backups.objectStorage.config.key""シークレットに認証情報を含むキー
backups.objectStorage.config.secret""オブジェクトストレージの認証情報シークレット
common.labels{}このチャートによって作成されたすべてのオブジェクトに適用される補助ラベル。
deployment.strategy{ `type`: `Recreate` }デプロイメントで使用される更新ストラテジを設定できます
enabledtrueToolboxの有効化フラグ
extra{}追加のgitlab.yml設定用の YAMLブロック
image.pullPolicyIfNotPresentToolboxイメージのプルポリシー
image.pullSecretsToolboxイメージのイメージプルシークレット
image.repositoryregistry.gitlab.com/gitlab-org/build/cng/gitlab-toolbox-eeToolboxイメージリポジトリ
image.tagmasterToolboxイメージタグ
init.image.repositoryToolbox initイメージリポジトリ
init.image.tagToolbox initイメージタグ
init.resources{ `requests`: { `cpu`: `50m` }}Toolbox initコンテナのリソース要件
init.containerSecurityContextinitコンテナ固有のsecurityContext
init.containerSecurityContext.allowPrivilegeEscalationfalseinitコンテナ固有: プロセスが親プロセスよりも多くの権限を取得できるかどうかを制御します
init.containerSecurityContext.runAsUser1000initコンテナ固有: コンテナの起動に使用するユーザーID
init.containerSecurityContext.allowPrivilegeEscalationfalseinitコンテナ固有: プロセスが親プロセスよりも多くの権限を取得できるかどうかを制御します
init.containerSecurityContext.runAsNonRoottrueinitコンテナ固有: コンテナを非rootユーザーで実行するかどうかを制御します
init.containerSecurityContext.capabilities.drop[ "ALL" ]initコンテナ固有: コンテナのLinuxケイパビリティを削除します
nodeSelectorToolboxおよびバックアップジョブのノード選択
persistence.accessModeReadWriteOnceToolboxの永続アクセスモード
persistence.enabledfalseToolboxの永続化を有効にするフラグ
persistence.matchExpressionsバインドするラベル式の一致
persistence.matchLabelsバインドするラベル値の一致
persistence.size10GiToolboxの永続ボリュームサイズ
persistence.storageClassプロビジョニング用のStorageClass名
persistence.subPathToolboxの永続ボリュームのマウントパス
persistence.volumeName既存のPersistentVolume名
podLabels{}Toolboxポッドを実行するためのラベル
priorityClassNameポッドに割り当てられる優先クラス。
replicas1実行するToolboxポッドの数
resources.requests{ `cpu`: `50m`, `memory`: `350M` }Toolboxの最小リクエストリソース
securityContext.fsGroup1000ポッドの起動に使用するファイルシステムグループID
securityContext.runAsUser1000ポッドの起動に使用するユーザーID
securityContext.runAsGroup1000ポッドの起動に使用するグループID
securityContext.fsGroupChangePolicyボリュームの所有権と許可を変更するためのポリシー(Kubernetes 1.23が必要です)
securityContext.seccompProfile.typeRuntimeDefault使用するSeccompプロファイル
containerSecurityContextコンテナの起動に使用するsecurityContextをオーバーライドします
containerSecurityContext.runAsUser1000コンテナの起動に使用する特定のセキュリティコンテキストを上書きできるようにします
containerSecurityContext.allowPrivilegeEscalationfalseコンテナのプロセスが親プロセスよりも多くの権限を取得できるかどうかを制御します
containerSecurityContext.runAsNonRoottrueコンテナを非rootユーザーで実行するかどうかを制御します
containerSecurityContext.capabilities.drop[ "ALL" ]GitalyコンテナのLinuxケイパビリティを削除します
serviceAccount.annotations{}ServiceAccountの注釈
serviceAccount.automountServiceAccountTokenfalseデフォルトのServiceAccountアクセストークンをポッドにマウントするかどうかを示します
serviceAccount.enabledfalseServiceAccountを使用するかどうかを示します
serviceAccount.createfalseServiceAccountを作成するかどうかを示します
serviceAccount.nameServiceAccountの名前。設定しない場合、チャートのフルネームが使用されます
tolerationsToolboxに追加するToleration
extraEnvFrom公開する他のデータソースからの追加環境変数のリスト

バックアップの設定

バックアップと復元のドキュメントでのバックアップの設定に関する情報。バックアップの実行方法の技術的な実装に関する追加情報は、バックアップと復元のアーキテクチャドキュメントにあります。

永続設定

バックアップと復元用の永続ストアは個別に設定されます。GitLabをバックアップおよび復元操作用に設定する場合は、次の考慮事項を確認してください。

バックアップはbackups.cron.persistence.*プロパティを使用し、復元はpersistence.*プロパティを使用します。永続ストアの設定に関する詳細な説明では、最後のプロパティキー(例: .enabledまたは.size)のみを使用し、適切なプレフィックスを追加する必要があります。

永続ストアはデフォルトで無効になっているため、適切なサイズのバックアップまたは復元を行うには、.enabledtrueに設定する必要があります。さらに、KubernetesによってPersistentVolumeを作成するには.storageClassを指定するか、PersistentVolumeを手動で作成する必要があります。.storageClassが「-」として指定されている場合、PersistentVolumeは、Kubernetesクラスタで指定されているデフォルトのStorageClassを使用して作成されます。

PersistentVolumeを手動で作成する場合、ボリュームは.volumeNameプロパティを使用するか、セレクター.matchLables / .matchExpressionsプロパティを使用して指定できます。

ほとんどの場合、.accessModeのデフォルト値は、ToolboxのみがPersistentVolumeにアクセスするための適切な制御を提供します。設定が正しいことを確認するには、KubernetesクラスタにインストールされているCSIドライバーのドキュメントを参照してください。

バックアップの考慮事項

バックアップ操作では、バックアップオブジェクトストアに書き込まれる前に、バックアップされる個々のコンポーネントを保持するためのディスク容量が必要です。ディスク容量は、次の要因によって異なります:

  • プロジェクトの数と各プロジェクトに保存されているデータの量
  • PostgresSQLデータベースのサイズ(イシュー、MRなど)
  • 各オブジェクトストアバックエンドのサイズ

おおよそのサイズが決定されると、backups.cron.persistence.sizeプロパティを設定して、バックアップを開始できます。

リストアの考慮事項

バックアップの復元中、実行中のインスタンスでファイルを置き換える前に、バックアップをディスクに抽出する必要があります。この復元ディスク領域のサイズは、persistence.sizeプロパティによって制御されます。GitLabインストールのサイズが大きくなるにつれて、復元ディスク領域のサイズもそれに応じて大きくする必要があることに注意してください。ほとんどの場合、復元ディスク領域のサイズは、バックアップディスク領域と同じサイズである必要があります。

Toolboxに含まれるツール

Toolboxコンテナには、Railsコンソール、Rakeタスクなど、役立つGitLabツールが含まれています。これらのコマンドを使用すると、データベース移行のステータスを確認したり、管理タスクのRakeタスクを実行したり、Railsコンソールと対話したりできます:

# locate the Toolbox pod
kubectl get pods -lapp=toolbox

# Launch a shell inside the pod
kubectl exec -it <Toolbox pod name> -- bash

# open Rails console
gitlab-rails console -e production

# execute a Rake task
gitlab-rake gitlab:env:info

affinity

詳細については、affinityを参照してください。