2021年4月20日火曜日

Gitlab helm chart で外部のオブジェクトストレージサービスを使う方法

Gitlab helm chart で外部のオブジェクトストレージサービスを使う方法

概要

Gitlab helm chart はデフォルトだと minio を使う設定になっています
minio を無効にして外部のオブジェクトストレージを使うことができます
今回は minio は有効にしつつファイルのアップロード部分だけど外部のオブジェクトストレージにする方法を紹介します

環境

  • kubernetes 1.20.4
  • helm 3.5.2
  • Gitlab helm chart 4.10.3

secret の追加

s3 や gcs などに接続するための認証情報を secret に格納します
connection というキーに認証情報を確認します

  • vim s3.yml
provider: AWS
region: us-east-1
aws_access_key_id: xxxx
aws_secret_access_key: xxxx
aws_signature_version: 4
endpoint: https://s3.us-east-1.amazonaws.com
  • kubectl create secret generic gitlab-registry-os-secret -n gitlab --from-file=connection=s3.yml

values の追加

以下の設定を追加します
先程追加した認証情報を appConfig.uploads.connection.secret で参照します
connection キーは global.appConfig.uploads.connection.key 側で指定します
アップロード先のバケット名は global.appConfig.uploads.bucket で指定します
事前にバケットは作成しておきましょう

--set global.minio.enabled=true \  
--set global.appConfig.uploads.bucket=uploads \  
--set global.appConfig.uploads.connection.secret=gitlab-registry-os-secret \  
--set global.appConfig.uploads.connection.key=connection

あとは helm upgrade などを実行すれば OK です

uploads 以外も外部のオブジェクトストレージにしたい場合は

例えば registry の情報などを外部のオブジェクトストレージにしたい場合は global.registry.bucketregistry.storage.secret などを同じように設定します
同じ接続先を使う場合は認証情報は 1 つで OK なので同じ secret を参照するようにしてください

他の設定方法のサンプルはこちらにあるので参照してみてください
https://gitlab.com/gitlab-org/charts/gitlab/blob/master/examples/values-external-objectstorage.yaml

認証情報だけを書き換えた場合は

例えばリージョンや認証情報を変更したい場合は secret を更新します
その場合は Gitlab の webservice Pod を再起動する必要があります

  • kubectl rollout restart deploy gitlab-webservice-default -n gitlab

参考サイト

0 件のコメント:

コメントを投稿