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.activeDeadlineSeconds | null | バックアップCronジョブのアクティブなデッドライン秒数(nullの場合、アクティブなデッドラインは適用されません) |
backups.cron.ttlSecondsAfterFinished | null | バックアップCronジョブのジョブ実行完了後の有効期間(nullの場合、有効期間は適用されません) |
backups.cron.safeToEvict | false | オートスケールのsafe-to-evictアノテーション |
backups.cron.backoffLimit | 6 | バックアップCronジョブのバックオフ制限 |
backups.cron.concurrencyPolicy | Replace | Kubernetesジョブの並行処理ポリシー |
backups.cron.enabled | false | バックアップCronジョブの有効フラグ |
backups.cron.extraArgs | バックアップユーティリティに渡す引数の文字列 | |
backups.cron.failedJobsHistoryLimit | 1 | 履歴内の失敗したバックアップジョブの数 |
backups.cron.persistence.accessMode | ReadWriteOnce | バックアップcronの永続アクセスモード |
backups.cron.persistence.enabled | false | バックアップcronの永続化を有効にするフラグ |
backups.cron.persistence.matchExpressions | バインドするラベル式の一致 | |
backups.cron.persistence.matchLabels | バインドするラベル値の一致 | |
backups.cron.persistence.useGenericEphemeralVolume | false | 一時的な汎用ボリュームを使用する |
backups.cron.persistence.size | 10Gi | バックアップcronの永続ボリュームサイズ |
backups.cron.persistence.storageClass | プロビジョニング用のStorageClass名 | |
backups.cron.persistence.subPath | バックアップcronの永続ボリュームのマウントパス | |
backups.cron.persistence.volumeName | 既存の永続ボリューム名 | |
backups.cron.resources.requests.cpu | 50m | バックアップcronに必要な最小CPU |
backups.cron.resources.requests.memory | 350M | バックアップcronに必要な最小メモリ |
backups.cron.restartPolicy | OnFailure | バックアップcronの再起動ポリシー(NeverまたはOnFailure) |
backups.cron.schedule | 0 1 * * * | Cron形式のスケジュール文字列 |
backups.cron.startingDeadlineSeconds | null | バックアップcronジョブの開始デッドライン(秒単位)(nullの場合、開始デッドラインは適用されません) |
backups.cron.successfulJobsHistoryLimit | 3 | 履歴内の成功したバックアップジョブの数 |
backups.cron.suspend | false | バックアップcronジョブは一時停止されます |
backups.cron.timeZone | "" | バックアップスケジュールのタイムゾーン。詳細については、Kubernetesのドキュメントを参照してください。指定しない場合、クラスタのタイムゾーンを使用します。 |
backups.cron.tolerations | "" | バックアップcronジョブに追加するToleration |
backups.cron.nodeSelector | "" | バックアップcronジョブのノード選択 |
backups.objectStorage.backend | s3 | 使用するオブジェクトストレージプロバイダー(s3、gcs、またはazure) |
backups.objectStorage.config.gcpProject | "" | バックエンドがgcsの場合に使用するGCPプロジェクト |
backups.objectStorage.config.key | "" | シークレットに認証情報を含むキー |
backups.objectStorage.config.secret | "" | オブジェクトストレージの認証情報シークレット |
common.labels | {} | このチャートによって作成されたすべてのオブジェクトに適用される補助ラベル。 |
deployment.strategy | { `type`: `Recreate` } | デプロイメントで使用される更新ストラテジを設定できます |
enabled | true | Toolboxの有効化フラグ |
extra | {} | 追加のgitlab.yml設定用の YAMLブロック |
image.pullPolicy | IfNotPresent | Toolboxイメージのプルポリシー |
image.pullSecrets | Toolboxイメージのイメージプルシークレット | |
image.repository | registry.gitlab.com/gitlab-org/build/cng/gitlab-toolbox-ee | Toolboxイメージリポジトリ |
image.tag | master | Toolboxイメージタグ |
init.image.repository | Toolbox initイメージリポジトリ | |
init.image.tag | Toolbox initイメージタグ | |
init.resources | { `requests`: { `cpu`: `50m` }} | Toolbox initコンテナのリソース要件 |
init.containerSecurityContext | initコンテナ固有のsecurityContext | |
init.containerSecurityContext.allowPrivilegeEscalation | false | initコンテナ固有: プロセスが親プロセスよりも多くの権限を取得できるかどうかを制御します |
init.containerSecurityContext.runAsUser | 1000 | initコンテナ固有: コンテナの起動に使用するユーザーID |
init.containerSecurityContext.allowPrivilegeEscalation | false | initコンテナ固有: プロセスが親プロセスよりも多くの権限を取得できるかどうかを制御します |
init.containerSecurityContext.runAsNonRoot | true | initコンテナ固有: コンテナを非rootユーザーで実行するかどうかを制御します |
init.containerSecurityContext.capabilities.drop | [ "ALL" ] | initコンテナ固有: コンテナのLinuxケイパビリティを削除します |
nodeSelector | Toolboxおよびバックアップジョブのノード選択 | |
persistence.accessMode | ReadWriteOnce | Toolboxの永続アクセスモード |
persistence.enabled | false | Toolboxの永続化を有効にするフラグ |
persistence.matchExpressions | バインドするラベル式の一致 | |
persistence.matchLabels | バインドするラベル値の一致 | |
persistence.size | 10Gi | Toolboxの永続ボリュームサイズ |
persistence.storageClass | プロビジョニング用のStorageClass名 | |
persistence.subPath | Toolboxの永続ボリュームのマウントパス | |
persistence.volumeName | 既存のPersistentVolume名 | |
podLabels | {} | Toolboxポッドを実行するためのラベル |
priorityClassName | ポッドに割り当てられる優先クラス。 | |
replicas | 1 | 実行するToolboxポッドの数 |
resources.requests | { `cpu`: `50m`, `memory`: `350M` } | Toolboxの最小リクエストリソース |
securityContext.fsGroup | 1000 | ポッドの起動に使用するファイルシステムグループID |
securityContext.runAsUser | 1000 | ポッドの起動に使用するユーザーID |
securityContext.runAsGroup | 1000 | ポッドの起動に使用するグループID |
securityContext.fsGroupChangePolicy | ボリュームの所有権と許可を変更するためのポリシー(Kubernetes 1.23が必要です) | |
securityContext.seccompProfile.type | RuntimeDefault | 使用するSeccompプロファイル |
containerSecurityContext | コンテナの起動に使用するsecurityContextをオーバーライドします | |
containerSecurityContext.runAsUser | 1000 | コンテナの起動に使用する特定のセキュリティコンテキストを上書きできるようにします |
containerSecurityContext.allowPrivilegeEscalation | false | コンテナのプロセスが親プロセスよりも多くの権限を取得できるかどうかを制御します |
containerSecurityContext.runAsNonRoot | true | コンテナを非rootユーザーで実行するかどうかを制御します |
containerSecurityContext.capabilities.drop | [ "ALL" ] | GitalyコンテナのLinuxケイパビリティを削除します |
serviceAccount.annotations | {} | ServiceAccountの注釈 |
serviceAccount.automountServiceAccountToken | false | デフォルトのServiceAccountアクセストークンをポッドにマウントするかどうかを示します |
serviceAccount.enabled | false | ServiceAccountを使用するかどうかを示します |
serviceAccount.create | false | ServiceAccountを作成するかどうかを示します |
serviceAccount.name | ServiceAccountの名前。設定しない場合、チャートのフルネームが使用されます | |
tolerations | Toolboxに追加するToleration | |
extraEnvFrom | 公開する他のデータソースからの追加環境変数のリスト |
バックアップの設定
バックアップと復元のドキュメントでのバックアップの設定に関する情報。バックアップの実行方法の技術的な実装に関する追加情報は、バックアップと復元のアーキテクチャドキュメントにあります。
永続設定
バックアップと復元用の永続ストアは個別に設定されます。GitLabをバックアップおよび復元操作用に設定する場合は、次の考慮事項を確認してください。
バックアップはbackups.cron.persistence.*プロパティを使用し、復元はpersistence.*プロパティを使用します。永続ストアの設定に関する詳細な説明では、最後のプロパティキー(例: .enabledまたは.size)のみを使用し、適切なプレフィックスを追加する必要があります。
永続ストアはデフォルトで無効になっているため、適切なサイズのバックアップまたは復元を行うには、.enabledをtrueに設定する必要があります。さらに、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:infoaffinity
詳細については、affinityを参照してください。