ツールボックス

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

設定

以下の設定項目は、Toolbox Chartが提供するデフォルト設定です:

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'
パラメータ説明デフォルト
annotationsツールボックスのポッドとジョブに追加する注釈{}
common.labelsこのChartで作成されたすべてのオブジェクトに適用される補助ラベル。{}
antiAffinityLabels.matchLabelsアンチ・アフィニティ・オプション設定用ラベル 
backups.cron.activeDeadlineSecondsバックアップCronJobアクティブ期限秒数(NULLの場合、アクティブ期限は適用されません。)null
backups.cron.safeToEvict自動スケーリングセーフツービクトアノテーションfalse
backups.cron.backoffLimitバックアップCronJobバックオフ制限6
backups.cron.concurrencyPolicyKubernetesジョブ同時実行ポリシーReplace
backups.cron.enabledバックアップCronJob有効フラグfalse
backups.cron.extraArgsバックアップ・ユーティリティに渡す引数の文字列 
backups.cron.failedJobsHistoryLimit履歴の失敗したバックアップ・ジョブ数リスト1
backups.cron.persistence.accessModeバックアップcron永続アクセスモードReadWriteOnce
backups.cron.persistence.enabledバックアップクロン有効持続フラグfalse
backups.cron.persistence.matchExpressions結合するラベル表現 
backups.cron.persistence.matchLabelsラベルの値にマッチしてバインド 
backups.cron.persistence.useGenericEphemeralVolume 汎用エフェメラルボリュームを使用false
backups.cron.persistence.sizeバックアップcronの永続性ボリュームサイズ10Gi
backups.cron.persistence.storageClassプロビジョニング用StorageClass名 
backups.cron.persistence.subPathバックアップcron永続性ボリュームのマウントパス 
backups.cron.persistence.volumeName既存の永続ボリューム名 
backups.cron.resources.requests.cpuバックアップcronの最小必要CPU50m
backups.cron.resources.requests.memoryバックアップクーロンに最低限必要なメモリ350M
backups.cron.restartPolicycron再起動ポリシーのバックアップ (Never またはOnFailure)OnFailure
backups.cron.schedulecronスタイルのスケジュール文字列0 1 * * *
backups.cron.startingDeadlineSecondsバックアップcronジョブの開始期限(秒単位)(NULLの場合、開始期限は適用されません。null
backups.cron.successfulJobsHistoryLimit成功したバックアップジョブの履歴数3
backups.cron.suspendバックアップcronジョブの中断false
backups.objectStorage.backend使用するオブジェクトストレージプロバイダー (s3,gcs orazure)s3
backups.objectStorage.config.gcpProjectバックエンドが以下の場合に使用するGCPプロジェクト。gcs ””
backups.objectStorage.config.key秘密のコンテナを含むキー””
backups.objectStorage.config.secretオブジェクトストレージのクレデンシャルシークレット””
common.labelsこのChartで作成されたすべてのオブジェクトに適用される補助ラベル。{}
deployment.strategyデプロイによって使用されるアップデート戦略を設定できます。{typeRecreate }
enabledツールボックス有効フラグtrue
extra追加設定用 YAML ブロックgitlab.yml{}
image.pullPolicyツールボックス画像プルポリシーIfNotPresent
image.pullSecretsToolboxイメージプルのシークレット 
image.repositoryToolboxイメージリポジトリregistry.gitlab.com/gitlab-org/build/cng/gitlab-toolbox-ee
image.tagToolbox画像タグmaster
init.image.repositoryToolbox init 画像リポジトリ 
init.image.tagToolbox init イメージタグ 
init.resourcesToolbox initコンテナリソース要件{requests: {cpu50m }}
init.containerSecurityContextinitContainer コンテナ固有のsecurityContext {}
nodeSelectorツールボックスとバックアップジョブノードの選択 
persistence.accessModeツールボックスの永続アクセスモードReadWriteOnce
persistence.enabledツールボックスのパーシステンス有効フラグfalse
persistence.matchExpressions結合するラベル表現 
persistence.matchLabelsラベルの値にマッチしてバインド 
persistence.sizeツールボックスの永続ボリュームサイズ10Gi
persistence.storageClassプロビジョニング用StorageClass名 
persistence.subPathツールボックスの永続ボリューム マウント パス 
persistence.volumeName既存のPersistentVolume名 
podLabels実行中のToolboxポッドのラベル{}
priorityClassNameポッドに割り当てられる優先度クラス 
replicas実行するToolboxポッドの数1
resources.requestsToolboxの最小要求リソース{cpu:50m,memory350M
securityContext.fsGroupポッドを起動するグループID1000
securityContext.runAsUserポッドを起動するユーザーID1000
securityContext.fsGroupChangePolicyボリュームの所有権と権限を変更するためのポリシー (Kubernetes 1.23 が必要) 
containerSecurityContextコンテナが起動するコンテナsecurityContext をオーバーライドします。 
containerSecurityContext.runAsUserコンテナが起動される特定のセキュリティコンテキストを上書きできるようにします。1000
serviceAccount.annotationsServiceAccount のアノテーション{}
serviceAccount.enabledServiceAccountの使用フラグfalse
serviceAccount.createServiceAccountを作成するフラグfalse
serviceAccount.name使用するServiceAccountの名前 
tolerationsツールボックスに追加する許容範囲 
extraEnvFrom公開する他のデータソースの追加環境変数のリスト 

バックアップの設定

バックアップの設定に関する情報は、バックアップと復元のドキュメントを参照してください。バックアップの実行方法の技術的な実装に関する追加情報は、バックアップと復元のアーキテクチャのドキュメントに記載されています]。

永続性の設定

バックアップとリストア用の永続ストアは別々に設定します。バックアップとリストアオペレーションのためにGitLabを設定する際には、以下の考慮事項をレビューしてください。

バックアップはbackups.cron.persistence.* プロパティを使用し、リストアはpersistence.* プロパティを使用します。永続ストアの設定に関するこれ以降の説明では、最後のプロパティ・キー(例えば、.enabled.size)だけを使用し、適切な接頭辞を追加する必要があります。

永続性ストアはデフォルトで無効になっているため、ある程度の大きさのバックアップやリストアを行うには、.enabledtrue に設定する必要があります。さらに、.storageClass Kubernetesによって作成されるPersistentVolumeを指定するか、手動でPersistentVolumeを .storageClass作成する必要があります。を指定した.storageClass 場合 .storageClass、Kubernetesクラスターで指定されているデフォルトのStorageClassを使用してPersistentVolumeが作成されます。

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

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

バックアップに関する考慮事項

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

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

大まかなサイズが決まったら、backups.cron.persistence.size プロパティを設定してバックアップを開始できます。

リストアに関する考慮事項

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

ツールボックスに含まれるツール

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