ツールボックス
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.concurrencyPolicy | Kubernetesジョブ同時実行ポリシー | 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の最小必要CPU | 50m |
backups.cron.resources.requests.memory | バックアップクーロンに最低限必要なメモリ | 350M |
backups.cron.restartPolicy | cron再起動ポリシーのバックアップ (Never またはOnFailure ) | OnFailure |
backups.cron.schedule | cronスタイルのスケジュール文字列 | 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 | デプロイによって使用されるアップデート戦略を設定できます。 | {type : Recreate } |
enabled | ツールボックス有効フラグ | true |
extra | 追加設定用 YAML ブロックgitlab.yml | {} |
image.pullPolicy | ツールボックス画像プルポリシー | IfNotPresent |
image.pullSecrets | Toolboxイメージプルのシークレット | |
image.repository | Toolboxイメージリポジトリ | registry.gitlab.com/gitlab-org/build/cng/gitlab-toolbox-ee |
image.tag | Toolbox画像タグ | master |
init.image.repository | Toolbox init 画像リポジトリ | |
init.image.tag | Toolbox init イメージタグ | |
init.resources | Toolbox initコンテナリソース要件 | {requests : {cpu : 50m }} |
init.containerSecurityContext | initContainer コンテナ固有の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.requests | Toolboxの最小要求リソース | {cpu :50m ,memory :350M
|
securityContext.fsGroup | ポッドを起動するグループID | 1000 |
securityContext.runAsUser | ポッドを起動するユーザーID | 1000 |
securityContext.fsGroupChangePolicy | ボリュームの所有権と権限を変更するためのポリシー (Kubernetes 1.23 が必要) | |
containerSecurityContext | コンテナが起動するコンテナsecurityContext をオーバーライドします。 | |
containerSecurityContext.runAsUser | コンテナが起動される特定のセキュリティコンテキストを上書きできるようにします。 | 1000 |
serviceAccount.annotations | ServiceAccount のアノテーション | {} |
serviceAccount.enabled | ServiceAccountの使用フラグ | false |
serviceAccount.create | ServiceAccountを作成するフラグ | false |
serviceAccount.name | 使用するServiceAccountの名前 | |
tolerations | ツールボックスに追加する許容範囲 | |
extraEnvFrom | 公開する他のデータソースの追加環境変数のリスト |
バックアップの設定
バックアップの設定に関する情報は、バックアップと復元のドキュメントを参照してください。バックアップの実行方法の技術的な実装に関する追加情報は、バックアップと復元のアーキテクチャのドキュメントに記載されています]。
永続性の設定
バックアップとリストア用の永続ストアは別々に設定します。バックアップとリストアオペレーションのためにGitLabを設定する際には、以下の考慮事項をレビューしてください。
バックアップはbackups.cron.persistence.*
プロパティを使用し、リストアはpersistence.*
プロパティを使用します。永続ストアの設定に関するこれ以降の説明では、最後のプロパティ・キー(例えば、.enabled
や.size
)だけを使用し、適切な接頭辞を追加する必要があります。
永続性ストアはデフォルトで無効になっているため、ある程度の大きさのバックアップやリストアを行うには、.enabled
をtrue
に設定する必要があります。さらに、.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