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

GitLab-Gitalyチャートの使用

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

gitalyサブチャートは、Gitalyサーバーの構成可能なデプロイを提供します。

要件

このチャートは、完全なGitLabチャートの一部として、またはこのチャートがデプロイされるKubernetesクラスタから到達可能な外部サービスとして提供されるWorkhorseサービスへのアクセスに依存します。

設計上の選択

このチャートで使用されているGitalyコンテナには、まだGitalyに移植されていないGitリポジトリに対するアクションを実行するために、GitLab Shellコードベースも含まれています。Gitalyコンテナには、その中にGitLab Shellコンテナのコピーが含まれており、その結果、このチャート内でGitLab Shellも構成する必要があります。

設定

gitalyチャートは、外部サービスチャート設定の2つの部分で構成されています。

Gitalyは、GitLabチャートをデプロイする際に、デフォルトでコンポーネントとしてデプロイされます。Gitalyを個別にデプロイする場合は、global.gitaly.enabledfalseに設定する必要があり、追加の設定は、外部Gitalyドキュメントに記載されているように実行する必要があります。

インストールコマンドラインオプション

以下の表に、helm installコマンドに--setフラグを使用して指定できる、可能なすべてのチャートの設定を示します。

パラメータデフォルト説明
annotationsポッドの注釈
backup.goCloudUrlサーバー側のGitalyバックアップのオブジェクトストレージURL。
common.labels{}このチャートによって作成されたすべてのオブジェクトに適用される補足ラベル。
podLabels追加のポッドラベル。セレクターには使用されません。
external[].hostname- ""外部ノードのホスト名
external[].name- ""外部ノードストレージの名前
external[].port- ""外部ノードのポート
extraContainers含めるコンテナのリストを含む複数行のリテラルスタイル文字列
extraInitContainers含める追加のinitコンテナのリスト
extraVolumeMounts実行する追加のボリュームマウントのリスト
extraVolumes作成する追加のボリュームのリスト
extraEnv公開する追加の環境変数のリスト
extraEnvFrom公開する他のデータソースからの追加の環境変数のリスト
gitaly.serviceName生成されたGitalyサービスの名前。global.gitaly.serviceNameをオーバーライドし、デフォルトは<RELEASE-NAME>-gitalyです
gpgSigning.enabledfalseGitaly GPG署名を使用するかどうか。
gpgSigning.secretGitaly GPG署名に使用されるシークレットの名前。
gpgSigning.keyGitalyのGPG署名キーを含むGPGシークレット内のキー。
image.pullPolicyAlwaysGitalyイメージのプルポリシー
image.pullSecretsイメージリポジトリのシークレット
image.repositoryregistry.gitlab.com/gitlab-org/build/cng/gitalyGitalyイメージリポジトリ
image.tagmasterGitalyイメージタグ付け
init.image.repositoryinitコンテナイメージ
init.image.taginitコンテナイメージタグ付け
init.containerSecurityContextinitコンテナ固有のsecurityContext
init.containerSecurityContext.allowPrivilegeEscalationfalseinitコンテナ固有: プロセスがその親プロセスよりも多くの特権を取得できるかどうかを制御します
init.containerSecurityContext.runAsNonRoottrueinitコンテナ固有: コンテナを非rootユーザーで実行するかどうかを制御します
init.containerSecurityContext.capabilities.drop[ "ALL" ]initコンテナ固有: コンテナのLinuxケイパビリティを削除します
internal.names[]- defaultStatefulSetストレージの順序付けられた名前
serviceLabels{}補足サービスラベル
service.externalPort8075Gitalyサービス公開ポート
service.internalPort8075Gitaly内部ポート
service.namegitalyGitalyがServiceオブジェクトの背後にあるServiceポートの名前。
service.typeClusterIPGitalyサービスタイプ
service.clusterIPNoneService作成リクエストの一部として、独自のクラスタIPアドレスを指定できます。これは、KubernetesのServiceオブジェクトのclusterIPと同じ規則に従います。service.typeがLoadBalancerの場合は、これを設定しないでください。
service.loadBalancerIP設定しない場合は、一時的なIPアドレスが作成されます。これは、KubernetesのServiceオブジェクトのloadbalancerIP設定と同じ規則に従います。
serviceAccount.annotations{}ServiceAccountのアノテーション
serviceAccount.automountServiceAccountTokenfalseデフォルトのServiceAccountアクセストークンをポッドにマウントするかどうかを示します
serviceAccount.createfalseServiceAccountを作成するかどうかを示します
serviceAccount.enabledfalseServiceAccountを使用するかどうかを示します
serviceAccount.nameServiceAccountの名前。設定しない場合、チャートのフルネームが使用されます
securityContext.fsGroup1000ポッドを開始するグループID
securityContext.fsGroupChangePolicyボリュームの所有権とアクセス許可を変更するためのポリシー(Kubernetes 1.23が必要です)
securityContext.runAsUser1000ポッドを開始するユーザーID
securityContext.seccompProfile.typeRuntimeDefault使用するSeccompプロファイル
shareProcessNamespacefalse同じポッド内の他のすべてのコンテナがコンテナプロセスを表示できるようにします
containerSecurityContextGitalyコンテナが開始されるオーバーライドコンテナsecurityContext
containerSecurityContext.runAsUser1000Gitalyコンテナが開始される特定のsecurityContextユーザーIDの上書きを許可します
containerSecurityContext.allowPrivilegeEscalationfalseGitalyコンテナのプロセスが親プロセスよりも多くの権限を取得できるかどうかを制御します
containerSecurityContext.runAsNonRoottrueGitalyコンテナを非rootユーザーで実行するかどうかを制御します
containerSecurityContext.capabilities.drop[ "ALL" ]GitalyコンテナのLinuxケイパビリティを削除します
tolerations[]ポッドの割り当ての容認ラベル
affinity{}ポッドの割り当てのアフィニティルール
persistence.accessModeReadWriteOnceGitalyの永続アクセスモード
persistence.annotationsGitaly永続アノテーション
persistence.enabledtrueGitalyの永続化を有効にするフラグ
persistance.labelsGitalyの永続ラベル
persistence.matchExpressionsバインドするラベル式の照合
persistence.matchLabelsバインドするラベル値の一致
persistence.size50GiGitaly永続ボリュームサイズ
persistence.storageClassプロビジョニングのstorageClassName
persistence.subPathGitalyの永続ボリュームのマウントパス
priorityClassNameGitaly StatefulSet priorityClassName
logging.levelログレベル
logging.formatjsonログ形式
logging.sentryDsnSentry DSN URL - Goサーバーからの例外
logging.sentryEnvironmentログ記録に使用するSentry環境
shell.concurrency[]各RPCsエンドポイントの並行処理。設定キーについては、RPCの並行処理を制限するおよびRPCの並行処理の適応機能を有効にするを参照してください。
packObjectsCache.enabledfalseGitalyパック化されたオブジェクトのキャッシュを有効にします
packObjectsCache.dir/home/git/repositories/+gitaly/PackObjectsCacheキャッシュファイルが格納されるディレクトリ
packObjectsCache.max_age5mキャッシュエントリの有効期間
packObjectsCache.min_occurrences1キャッシュエントリを作成するために必要な最小カウント
git.catFileCacheSizeGit cat-fileプロセスで使用されるキャッシュサイズ
git.config[][]Gitコマンドの起動時にGitalyが設定する必要があるGit設定
prometheus.grpcLatencyBucketsGitalyによって記録されるGRPCメソッド呼び出しにおけるヒストグラムレイテンシーに対応するバケット。文字列形式の配列(たとえば、"[1.0, 1.5, 2.0]")が入力として必要です
statefulset.strategy{}StatefulSetで使用される更新戦略を構成できます
statefulset.livenessProbe.initialDelaySeconds0Livenessプローブが開始されるまでの遅延。startupProbeが有効になっている場合、これは0に設定されます。
statefulset.livenessProbe.periodSeconds10Livenessプローブを実行する頻度
statefulset.livenessProbe.timeoutSeconds3Livenessプローブがタイムアウトしたとき
statefulset.livenessProbe.successThreshold1Livenessプローブが失敗した後、正常と見なされるために連続して成功する最小回数
statefulset.livenessProbe.failureThreshold3Livenessプローブが成功した後、失敗と見なされるために連続して失敗する最小回数
statefulset.readinessProbe.initialDelaySeconds0Readinessプローブが開始されるまでの遅延。startupProbeが有効になっている場合、これは0に設定されます。
statefulset.readinessProbe.periodSeconds5Readinessプローブを実行する頻度
statefulset.readinessProbe.timeoutSeconds3Readinessプローブがタイムアウトしたとき
statefulset.readinessProbe.successThreshold1Readinessプローブが失敗した後、正常と見なされるために連続して成功する最小回数
statefulset.readinessProbe.failureThreshold3Readinessプローブが成功した後、失敗と見なされるために連続して失敗する最小回数
statefulset.startupProbe.enabledtrueStartupプローブを有効にするかどうか。
statefulset.startupProbe.initialDelaySeconds1Startupプローブが開始されるまでの遅延
statefulset.startupProbe.periodSeconds1Startupプローブを実行する頻度
statefulset.startupProbe.timeoutSeconds1Startupプローブがタイムアウトしたとき
statefulset.startupProbe.successThreshold1Startupプローブが失敗した後、正常と見なされるために連続して成功する最小回数
statefulset.startupProbe.failureThreshold60Startupプローブが成功した後、失敗と見なされるために連続して失敗する最小回数
metrics.enabledfalseメトリクスエンドポイントをスクレイプできるようにするかどうか
metrics.port9236メトリクスエンドポイントのポート
metrics.path/metricsメトリクスエンドポイントのパス
metrics.serviceMonitor.enabledfalsePrometheus Operatorがメトリクスのスクレイピングを管理できるようにServiceMonitorを作成するかどうか。これを有効にすると、prometheus.ioスクレイピングアノテーションが削除されることに注意してください
metrics.serviceMonitor.additionalLabels{}ServiceMonitorに追加する追加のラベル
metrics.serviceMonitor.endpointConfig{}ServiceMonitorの追加のエンドポイント設定
metrics.metricsPortDEPRECATED(非推奨)metrics.portを使用
gomemlimit.enabledtrueこの値は、Gitalyコンテナの環境変数GOMEMLIMITを自動的にresources.limits.memoryに設定します(その制限も設定されている場合)。ユーザーは、この値を失敗に設定し、GOMEMLIMITextraEnvに設定することで、この値をオーバーライドできます。これは、ドキュメント化された形式基準を満たしている必要があります。
cgroups.enabledfalseGitalyには、cgroups制御が組み込まれています。設定すると、Gitalyは、Gitコマンドが動作しているリポジトリに基づいて、Gitプロセスをcgroupに割り当てます。このパラメータは、リポジトリcgroupsを有効にします。有効にした場合、cgroups v2のみがサポートされることに注意してください。
cgroups.initContainer.image.repositoryregistry.com/gitlab-org/build/cng/gitaly-init-cgroupsGitalyイメージリポジトリ
cgroups.initContainer.image.tagmasterGitalyイメージタグ付け
cgroups.initContainer.image.pullPolicyIfNotPresentGitalyイメージプルポリシー
cgroups.mountpoint/etc/gitlab-secrets/gitaly-pod-cgroup親cgroupディレクトリがマウントされている場所。
cgroups.hierarchyRootgitaly親cgroup。Gitalyがグループを作成し、Gitalyが実行するユーザーとグループが所有権を持つことが想定されています。
cgroups.memoryBytesGitalyが起動するすべてのGitプロセスにまとめて課せられる合計メモリ制限。0は制限がないことを意味します。
cgroups.cpuSharesGitalyが起動するすべてのGitプロセスにまとめて課せられるCPU制限。0は制限がないことを意味します。最大は1024共有で、CPUの100%を表します。
cgroups.cpuQuotaUsこのクォータ値を超えた場合にcgroupsのプロセスをスロットルするために使用されます。cpuQuotaUsを100msに設定すると、1コアは100000になります。0は制限がないことを意味します。
cgroups.repositories.countcgroupsプール内のcgroupの数。新しいGitコマンドが起動されるたびに、Gitalyはコマンドの対象となるリポジトリに基づいて、これらのcgroupのいずれかに割り当てます。循環ハッシュアルゴリズムは、これらのcgroupにGitコマンドを割り当てます。そのため、リポジトリのGitコマンドは常に同じcgroupに割り当てられます。
cgroups.repositories.memoryBytesリポジトリcgroupに含まれるすべてのGitプロセスに課せられる合計メモリ制限。0は制限がないことを意味します。この値は、トップレベルのmemoryBytesの値を超えることはできません。
cgroups.repositories.cpuSharesリポジトリcgroupに含まれるすべてのGitプロセスに課せられるCPU制限。0は制限がないことを意味します。最大は1024共有で、CPUの100%を表します。この値は、トップレベルのcpuSharesの値を超えることはできません。
cgroups.repositories.cpuQuotaUsリポジトリcgroupに含まれるすべてのGitプロセスに課せられるcpuQuotaUs。Gitプロセスは、指定されたクォータを超えることはできません。cpuQuotaUsを100msに設定すると、1コアは100000になります。0は制限がないことを意味します。
cgroups.repositories.maxCgroupsPerRepo1特定のリポジトリをターゲットとするGitプロセスを分散できるリポジトリcgroupの数。これにより、バースト的なワークロードを許可しながら、より保守的なCPUおよびメモリ制限をリポジトリcgroupに構成できます。たとえば、maxCgroupsPerRepo2で、memoryBytes制限が10GBの場合、特定のリポジトリに対する独立したGit操作では、最大20GBのメモリを消費できます。
gracefulRestartTimeout25Gitalyシャットダウンの猶予期間。飛行中のリクエストが完了するまで待機する時間(秒)。ポッドterminationGracePeriodSecondsは、この値+ 5秒に設定されます。
timeout.uploadPackNegotiationネゴシエーションタイムアウトを設定するを参照してください。
timeout.uploadArchiveNegotiationネゴシエーションタイムアウトを設定するを参照してください。
dailyMaintenance.disabled毎日のバックグラウンドメンテナンスを無効にすることができます。
dailyMaintenance.duration毎日のバックグラウンドメンテナンスの最大継続時間。たとえば、「1h」または「45m」。
dailyMaintenance.startHour毎日のバックグラウンドメンテナンスの開始時間。
dailyMaintenance.startMinute毎日のバックグラウンドメンテナンスの開始時間。
dailyMaintenance.storages毎日のバックグラウンドメンテナンスを実行するストレージ名の配列。たとえば、[「default」]。
bundleUri.goCloudUrlバンドルURIに関するドキュメントを参照してください。

チャート設定の例

extraEnv

extraEnvを使用すると、ポッド内のすべてのコンテナで追加の環境変数を公開できます。

extraEnvの使用例を以下に示します:

extraEnv:
  SOME_KEY: some_value
  SOME_OTHER_KEY: some_other_value

コンテナの起動時に、環境変数が公開されていることを確認できます:

env | grep SOME
SOME_KEY=some_value
SOME_OTHER_KEY=some_other_value

extraEnvFrom

extraEnvFromを使用すると、ポッド内のすべてのコンテナで、他のデータソースからの追加の環境変数を公開できます。

extraEnvFromの使用例を以下に示します:

extraEnvFrom:
  MY_NODE_NAME:
    fieldRef:
      fieldPath: spec.nodeName
  MY_CPU_REQUEST:
    resourceFieldRef:
      containerName: test-container
      resource: requests.cpu
  SECRET_THING:
    secretKeyRef:
      name: special-secret
      key: special_token
      # optional: boolean
  CONFIG_STRING:
    configMapKeyRef:
      name: useful-config
      key: some-string
      # optional: boolean

image.pullSecrets

pullSecretsを使用すると、プライベートレジストリに認証して、ポッドのイメージをプルできます。

プライベートレジストリとその認証方法に関する追加の詳細は、Kubernetesドキュメントにあります。

pullSecretsの使用例を以下に示します

image:
  repository: my.gitaly.repository
  tag: latest
  pullPolicy: Always
  pullSecrets:
  - name: my-secret-name
  - name: my-secondary-secret-name

serviceAccount

このセクションでは、ServiceAccountを作成するかどうか、またデフォルトのアクセストークンをポッドにマウントするかどうかを制御します。

名前デフォルト説明
annotationsマップ{}ServiceAccount注釈。
automountServiceAccountTokenブール値falseを設定すると、デフォルトのServiceAccountアクセストークンをポッドにマウントする必要があるかどうかを制御します。これは、特定のサイドカーが正常に機能するために必要という場合(Istioなど)を除き、有効にしないようにしてください。
createブール値falseServiceAccountを作成するかどうかを示します。
enabledブール値falseServiceAccountを使用するかどうかを示します。
name文字列ServiceAccountの名前。設定されていない場合、チャートのフルネームが使用されます。

tolerations

tolerationsを使用すると、taintされたワーカーノードでポッドをスケジュールできます

tolerationsの使用例を以下に示します:

tolerations:
- key: "node_label"
  operator: "Equal"
  value: "true"
  effect: "NoSchedule"
- key: "node_label"
  operator: "Equal"
  value: "true"
  effect: "NoExecute"

アフィニティ

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

注釈

annotationsを使用すると、注釈をGitalyポッドに追加できます。

annotationsの使用例を以下に示します:

annotations:
  kubernetes.io/example-annotation: annotation-value

priorityClassName

priorityClassNameを使用すると、PriorityClassをGitalyポッドに割り当てることができます。

priorityClassNameの使用例を以下に示します:

priorityClassName: persistence-enabled

git.config

git.configを使用すると、Gitalyによって起動されたすべてのGitコマンドに設定を追加できます。以下に示すように、git-config(1)のドキュメントに記載されている設定をkey / valueのペアで受け入れます。

git:
  config:
    - key: "pack.threads"
      value: 4
    - key: "fsck.missingSpaceBeforeDate"
      value: ignore

cgroups

リソースの枯渇を防ぐため、Gitalyはcgroupsを使用して、操作対象のリポジトリに基づいてGitプロセスをcgroupに割り当てます。各cgroupにはメモリとCPUの制限があり、システムの安定性を確保し、リソースの飽和を防ぎます。

Gitalyの起動前に実行されるinitContainerは、rootとして実行される必要があります。このコンテナは、Gitalyがcgroupを管理できるように、権限を設定します。したがって、/sys/fs/cgroupへの書き込みアクセス権を持つように、ファイルシステムにボリュームをマウントします。

オーバーサブスクリプションの例

cgroups:
  enabled: true
  # Total limit across all repository cgroups
  memoryBytes: 64424509440 # 60GiB
  cpuShares: 1024
  cpuQuotaUs: 1200000 # 12 cores
  # Per repository limits, 1000 repository cgroups
  repositories:
    count: 1000
    memoryBytes: 32212254720 # 30GiB
    cpuShares: 512
    cpuQuotaUs: 400000 # 4 cores

外部サービス

このチャートは、Workhorseサービスに接続する必要があります。

Workhorse

workhorse:
  host: workhorse.example.com
  serviceName: webservice
  port: 8181
名前デフォルト説明
host文字列Workhorseサーバーのホスト名。serviceNameの代わりとして省略できます。
port整数8181Workhorseサーバーへの接続ポート。
serviceName文字列webserviceWorkhorseサーバーを操作しているservice名前。これが存在し、hostが存在しない場合、チャートはhost値の代わりにサービスのホスト名(および現在の.Release.Name)をテンプレート処理します。これは、WorkhorseをGitLabチャート全体の一部として使用する場合に便利です。

チャートの設定

次の値は、Gitalyポッドを設定するために使用されます。

Gitalyは、認証トークンを使用してWorkhorseおよびSidekiqサービスで認証します。認証トークンのシークレットとキーは、global.gitaly.authToken値から取得されます。さらに、GitalyコンテナにはGitLab Shellのコピーがあり、設定できるものがいくつかあります。Shell認証トークンは、global.shell.authToken値から取得されます。

Gitリポジトリの永続性

このチャートは、PersistentVolumeClaimをプロビジョニングし、Gitリポジトリデータに対応する永続ボリュームをマウントします。これが機能するには、Kubernetesクラスタリングで使用可能な物理ストレージが必要です。emptyDirを使用する場合は、persistence.enabled: falseでPersistentVolumeClaimを無効にします。

Gitalyの永続性の設定は、すべてのGitalyポッドに対して有効であるボリュームクレームテンプレートで使用されます。単一の特定のボリューム(volumeNameなど)を参照するための設定を含めるべきではありません。特定のボリュームを参照する場合は、PersistentVolumeClaimを手動で作成する必要があります。

一度デプロイすると、これらの設定を当社経由で変更することはできません。StatefulSetでは、VolumeClaimTemplateはイミュータブルです。

persistence:
  enabled: true
  storageClass: standard
  accessMode: ReadWriteOnce
  size: 50Gi
  matchLabels: {}
  matchExpressions: []
  subPath: "data"
  annotations: {}
名前デフォルト説明
accessMode文字列ReadWriteOncePersistentVolumeClaimでリクエストされたaccessModeを設定します。詳細については、Kubernetesアクセスモードのドキュメントを参照してください。
enabledブール値trueリポジトリデータにPersistentVolumeClaimを使用するかどうかを設定します。falseの場合、emptyDirボリュームが使用されます。
matchExpressions配列バインドするボリュームを選択するときに、照合するラベル条件オブジェクトの配列を受け入れます。これは、PersistentVolumeClaim selectorセクションで使用されます。ボリュームドキュメントを参照してください。
matchLabelsマップバインドするボリュームを選択するときに、照合するラベル名とラベル値のマップを受け入れます。これは、PersistentVolumeClaim selectorセクションで使用されます。ボリュームドキュメントを参照してください。
size文字列50Giデータ永続性に対してリクエストする最小ボリュームサイズ。
storageClass文字列動的なプロビジョニングのために、ボリュームクレームにstorageClassNameを設定します。設定されていないかnullの場合、デフォルトのプロビジョニング機能が使用されます。ハイフンに設定すると、動的なプロビジョニングが無効になります。
subPath文字列ボリュームルートではなく、マウントするボリューム内のパスを設定します。subPathが空の場合、ルートが使用されます。
annotationsマップ動的なプロビジョニングのために、ボリュームクレームに注釈を設定します。詳細については、Kubernetes注釈のドキュメントを参照してください。

TLS経由でのGitalyの実行

このセクションでは、Helm Chartを使用してクラスタリング内で実行されるGitalyについて説明します。外部Gitalyインスタンスを使用しており、TLSを使用して通信する場合は、外部Gitalyドキュメントを参照してください

Gitalyは、TLS経由で他のコンポーネントとの通信をサポートしています。これは、global.gitaly.tls.enabledおよびglobal.gitaly.tls.secretNameの設定によって制御されます。TLS経由でGitalyを実行する手順に従ってください:

  1. Helm Chartは、TLS経由でGitalyと通信するために証明書が提供されることを想定しています。この証明書は、存在するすべてのGitalyノードに適用される必要があります。したがって、これらの各Gitalyノードのすべてのホスト名を、件名代替名(SAN)として証明書に追加する必要があります。

    使用するホスト名を知るには、Toolboxポッドの/srv/gitlab/config/gitlab.ymlファイルを確認し、その中のrepositories.storagesキーの下に指定されているさまざまなgitaly_addressフィールドを確認します。

    kubectl exec -it <Toolbox pod> -- grep gitaly_address /srv/gitlab/config/gitlab.yml

内部Gitalyポッド用のカスタム署名付き証明書を生成するための基本的なスクリプトは、このリポジトリにあります。ユーザーは、適切なSAN属性を持つ証明書を生成するために、そのスクリプトを使用または参照できます。

  1. 作成された証明書を使用して、k8s TLSシークレットを作成します。

    kubectl create secret tls gitaly-server-tls --cert=gitaly.crt --key=gitaly.key
  2. --set global.gitaly.tls.enabled=trueを渡して、Helm Chartを再デプロイします。

グローバルサーバーフック

Gitaly StatefulSetは、グローバルサーバーフックをサポートしています。フックスクリプトはGitalyポッドで実行されるため、Gitalyコンテナで使用可能なツールに限定されます。

フックはConfigMapを使用して入力された状態になり、必要に応じて次の値を設定することで使用できます:

  1. global.gitaly.hooks.preReceive.configmap
  2. global.gitaly.hooks.postReceive.configmap
  3. global.gitaly.hooks.update.configmap

ConfigMapに入力するには、スクリプトのディレクトリにkubectlマップを割り当てることができます:

kubectl create configmap MAP_NAME --from-file /PATH/TO/SCRIPT/DIR

GitLabによって作成されたコミットへのGPG署名

Gitalyには、GitLab UI(WebIDEなど)を介して作成されたすべてのGPG署名コミットだけでなく、マージコミットやスカッシュなど、GitLabによって作成されたコミットに署名する機能があります。

  1. GPGプライベートキーを使用して、k8sシークレットを作成します。

    kubectl create secret generic gitaly-gpg-signing-key --from-file=signing_key=/path/to/gpg_signing_key.gpg
  2. values.yaml設定でGPG署名を有効にします。

    gitlab:
      gitaly:
        gpgSigning:
          enabled: true
          secret: gitaly-gpg-signing-key
          key: signing_key

サーバー側のバックアップ

このチャートは、Gitalyサーバー側のバックアップをサポートしています。それらを使用するには:

  1. バックアップを保存するためのバケットを作成します。

  2. オブジェクトストレージの認証情報とストレージURLを設定します。

    gitlab:
      gitaly:
        extraEnvFrom:
           # Mount the exisitign object store secret to the expected environment variables.
           AWS_ACCESS_KEY_ID:
             secretKeyRef:
               name: <Rails object store secret>
               key: aws_access_key_id
           AWS_SECRET_ACCESS_KEY:
             secretKeyRef:
               name: <Rails object store secret>
               key: aws_secret_access_key
        backup:
          # This is the connection string for Gitaly server side backups.
          goCloudUrl: <object store connection URL>

    オブジェクトストレージバックエンドに必要な環境変数とストレージURL形式については、Gitalyドキュメントを参照してください。

  3. backup-utilityでサーバー側のバックアップを有効にする