- 設計の選択
- 設定
- Chart設定例
- サブチャートを有効にします。
- initContainerの設定
- イングレスの設定
- イメージの設定
- 永続性
- デフォルトバケット
- セキュリティコンテキスト
- サービスタイプとポート
- アップストリーム項目
オブジェクトストレージへのMinIOの使用
このChartはstable/minio
バージョン0.4.3
に基づいており、ほとんどの設定を継承しています。
設計の選択
アップストリームチャートに関連する設計上の選択肢は、プロジェクトのREADMEに記載されています。
GitLabは、シークレットの設定を単純化し、環境変数でのシークレットの使用をすべて削除するために、このチャートを変更することを選択しました。GitLabは、config.json
へのシークレットの投入を制御するためにinitContainer
を追加し、チャート全体のenabled
フラグを追加しました。
このチャートではシークレットをひとつだけ使っています:
-
global.minio.credentials.secret
:バケツへの認証に使われるaccesskey
とsecretkey
の値を含むグローバルシークレット。
設定
以下、設定の主な部分をすべて説明します。親チャートから設定する場合、これらの値は次のようになります:
minio:
init:
ingress:
enabled:
apiVersion:
tls:
enabled:
secretName:
annotations:
configureCertmanager:
proxyReadTimeout:
proxyBodySize:
proxyBuffering:
tolerations:
persistence: # Upstream
volumeName:
matchLabels:
matchExpressions:
serviceType: # Upstream
servicePort: # Upstream
defaultBuckets:
minioConfig: # Upstream
インストールのコマンドラインオプション
以下の表は、--set
フラグを使用してhelm install
コマンドに提供できるすべての可能な Chart 設定です:
パラメータ | デフォルト | 説明 |
---|---|---|
common.labels | {} | このChartで作成されたすべてのオブジェクトに適用される補助ラベル。 |
defaultBuckets | [{"name": "registry"}] | MinIOのデフォルトバケット |
deployment.strategy | {type : Recreate } | デプロイによって使用されるアップデート戦略を設定できます。 |
image | minio/minio | MinIOイメージ |
imagePullPolicy | Always | MinIOイメージのプルポリシー |
imageTag | RELEASE.2017-12-28T01-21-00Z | MinIOイメージタグ |
minioConfig.browser | on | MinIOブラウザフラグ |
minioConfig.domain | MinIOドメイン | |
minioConfig.region | us-east-1 | MinIO領域 |
minioMc.image | minio/mc | MinIO mc イメージ |
minioMc.tag | latest | MinIO mc イメージタグ |
mountPath | /export | MinIO設定ファイルのマウントパス |
persistence.accessMode | ReadWriteOnce | MinIO永続アクセスモード |
persistence.enabled | true | MinIO イネーブル・パーシステンス・フラグ |
persistence.matchExpressions | バインドするMinIOラベル式マッチ | |
persistence.matchLabels | MinIOラベル値にマッチしてバインド | |
persistence.size | 10Gi | MinIO永続ボリュームサイズ |
persistence.storageClass | プロビジョニング用のMinIOストレージクラス名 | |
persistence.subPath | MinIO永続ボリュームマウントパス | |
persistence.volumeName | MinIO既存の永続ボリューム名 | |
priorityClassName | ポッドに割り当てられる優先度クラス。 | |
pullSecrets | 画像リポジトリのシークレット | |
replicas | 4 | MinIO レプリカ数 |
resources.requests.cpu | 250m | MinIO 最小要求CPU数 |
resources.requests.memory | 256Mi | MinIO 最小メモリ要求量 |
securityContext.fsGroup | 1000 | ポッドを起動するグループID |
securityContext.runAsUser | 1000 | ポッドを起動するユーザーID |
securityContext.fsGroupChangePolicy | ボリュームの所有権と権限を変更するためのポリシー (Kubernetes 1.23 が必要) | |
servicePort | 9000 | MinIO サービスポート |
serviceType | ClusterIP | MinIOサービスタイプ |
tolerations | [] | ポッド割り当て用のトレラベル |
jobAnnotations | {} | ジョブ仕様の注釈 |
Chart設定例
プルシークレット
pullSecrets
を使用すると、非公開レジストリで認証してポッドのイメージをプルできるようになります。
非公開レジストリとその認証方法の詳細については、Kubernetesのドキュメントを参照してください。
以下は、pullSecrets
の使用例です:
image: my.minio.repository
imageTag: latest
imagePullPolicy: Always
pullSecrets:
- name: my-secret-name
- name: my-secondary-secret-name
許容範囲
tolerations
汚染されたワーカーノードでポッドのスケジューリングが可能
以下は、tolerations
の使用例です:
tolerations:
- key: "node_label"
operator: "Equal"
value: "true"
effect: "NoSchedule"
- key: "node_label"
operator: "Equal"
value: "true"
effect: "NoExecute"
サブチャートを有効にします。
コンパートメント化されたサブチャートを実装するために選択した方法には、特定のデプロイで不要なコンポーネントを無効にする機能が含まれています。このため、最初に決めるべき設定はenabled:
です。
デフォルトでは、MinIOはすぐに有効になりますが、実運用での使用は推奨されません。無効にする準備ができたら、--set global.minio.enabled: false
を実行します。
initContainerの設定
ほとんど変更することはありませんが、initContainer
の動作は以下の項目で変更できます:
init:
image:
repository:
tag:
pullPolicy: IfNotPresent
script:
initContainer 画像
initContainer画像の設定は通常の画像設定と同じです。デフォルトでは、Chart-localの値は空のままで、グローバル設定global.gitlabBase.image.repository
と現在のglobal.gitlabVersion
に関連付けられた画像タグがinitContainer画像の入力に使われます。グローバル設定は、Chart-local 値によって上書きすることができます(例:minio.init.image.tag
)。
initContainer スクリプト
initContainerには以下の項目が渡されます:
-
/config
にマウントされた認証アイテムを含むシークレット。通常はaccesskey
とsecretkey
です。 -
config.json
テンプレートを含む ConfigMap、およびsh
で実行されるスクリプトを含むconfigure
は、/config
にマウントされています。 - デーモンのコンテナに渡される
/minio
にマウントされたemptyDir
。
initContainerは、/config/configure
スクリプトを使用して、完了した設定で/minio/config.json
。minio-config
コンテナがこのタスクを完了すると、/minio
ディレクトリがminio
コンテナに渡され、config.json
をMinIOサーバーに提供するために使用されます。
イングレスの設定
これらの設定は、MinIO Ingressを制御します。
名前 | 種類 | デフォルト | 説明 |
---|---|---|---|
apiVersion | 文字列 |
apiVersion フィールドで使用する値。 | |
annotations | 文字列 | このフィールドは、Kubernetes Ingressの標準annotations 。 | |
enabled | ブール値 | false | Ingressオブジェクトをサポートするサービスに対してIngressオブジェクトを作成するかどうかを制御する設定。false の場合、global.ingress.enabled 設定が使用されます。 |
configureCertmanager | ブール値 | Ingress 注釈cert-manager.io/issuer とacme.cert-manager.io/http01-edit-in-place を切り替えます。詳細はGitLab Pages の TLS 要件を参照ください。 | |
tls.enabled | ブール値 | true |
false に設定すると、MinIOのTLSを無効にします。これは主に、Ingressコントローラーの前にTLS終端プロキシがある場合など、IngressレベルでTLS終端を使用できない場合に便利です。 |
tls.secretName | 文字列 | MinIO URLの有効な証明書とキーを含むKubernetes TLSシークレットの名前。設定されていない場合は、代わりにglobal.ingress.tls.secretName 。 |
イメージの設定
image
、imageTag
、imagePullPolicy
のデフォルトはアップストリームに記載されています。
永続性
このChartでは、PersistentVolumeClaim
をプロビジョニングし、対応する永続ボリュームをデフォルトの場所/export
にマウントします。これを動作させるには、Kubernetesクラスターで利用可能な物理ストレージが必要です。emptyDir
を使いたい場合は、PersistentVolumeClaim
を無効にします:persistence.enabled: false
.
persistence
の動作はアップストリームで文書化されています。
GitLabはいくつかの項目を追加しました:
persistence:
volumeName:
matchLabels:
matchExpressions:
名前 | 種類 | デフォルト | 説明 |
---|---|---|---|
volumeName | 文字列 | false |
volumeName が指定された場合、PersistentVolumeClaim は動的にPersistentVolume 作成する代わりに PersistentVolume 、指定された名前を使用します。これはアップストリームの動作を上書きします。 |
matchLabels | マップ | true | バインドするボリュームを選択する際に照合するラベル名とラベル値の Map を受け付けます。これはPersistentVolumeClaim selector セクションで使用します。ボリュームのドキュメントを参照してください。 |
matchExpressions | 配列 | バインドするボリュームを選択する際に照合するラベル条件オブジェクトの配列を受け付けます。これはPersistentVolumeClaim selector セクションで使用します。ボリュームのドキュメントを参照ください。 |
デフォルトバケット
defaultBuckets
は、インストール時にMinIOポッドにバケットを自動的に作成するメカニズムを提供します。このプロパティには、それぞれ最大 3 つのプロパティを持つアイテムの配列が含まれます:name
,policy
, およびpurge
。
defaultBuckets:
- name: public
policy: public
purge: true
- name: private
- name: public-read
policy: download
名前 | 種類 | デフォルト | 説明 |
---|---|---|---|
name | 文字列 | 作成されるバケットの名前。つまり、DNS に準拠し、a-z, 0-9, - (ハイフン) のみを含む文字列を 3 文字以上 63 文字以下で指定します。name プロパティは、すべてのエントリで_必須_です。 | |
policy | none | の値は、policy MinIO上のバケットのアクセスポリシーを制御 policy します。policy この policy プロパティは必須ではなく、デフォルト値はnone です: none (匿名アクセスなし)、download (匿名読み込み専用アクセス)、upload (匿名書き込み専用アクセス)、public (匿名読み込み/書き込みアクセス) です。 | |
purge | ブール値 |
purge プロパティは、インストール時に既存のバケットを強制的に削除する手段として提供されます。これは、PersistentVolume 永続化の volumeName プロパティに PersistentVolume 既存のものを使用する場合にのみ有効です。PersistentVolume 動的に作成された PersistentVolume バケットを使用する場合、これはチャートのインストール時にのみ発生し、作成されたばかりのPersistentVolume にはデータが存在しないため、何の効果もありません。mc rm -r --force このプロパティは必須ではありませんが、バケットを強制的にパージするために、このプロパティにtrue を指定することができます。 |
セキュリティコンテキスト
これらのオプションにより、ポッドの起動に使用するuser
および/またはgroup
を制御できます。
セキュリティコンテキストについての詳しい情報は、Kubernetesの公式ドキュメントを参照してください。
サービスタイプとポート
これらはアップストリームで文書化されています:
## Expose the MinIO service to be accessed from outside the cluster (LoadBalancer service).
## or access it from within the cluster (ClusterIP service). Set the service type and the port to serve it.
## ref: http://kubernetes.io/docs/user-guide/services/
##
serviceType: LoadBalancer
servicePort: 9000
Chartはtype: NodePort
、そのように設定されることを期待していません。
アップストリーム項目
以下のアップストリームドキュメントは、このChartにも完全に適用されます:
resources
nodeSelector
minioConfig
minioConfig
設定の詳細については、MinIO notifyドキュメントを参照してください。これには、バケットオブジェクトがアクセスまたは変更されたときの通知の発行に関する詳細も含まれます。