- デザインの選択
- 設定
- チャート構成例
- サブチャートの有効化
- initContainerの設定
- イングレスの設定
- 画像の設定
- 永続性
- デフォルトバケット
- セキュリティ・コンテキスト
- サービスの種類とポート
- 上流項目
オブジェクトストレージへのMinIOの使用
このChartはstable/minio
バージョン0.4.3
に基づいており、ほとんどの設定を継承しています。
デザインの選択
アップストリームチャートに関連する設計上の選択肢は、プロジェクトのREADMEに記載されています。
GitLabはsecretの設定を単純化し、環境変数でのsecretの使用をすべて削除するために、このチャートを変更することにしました。GitLabはconfig.json
へのsecretの投入を制御するためにinitContainer
を追加し、チャート全体のenabled
フラグを追加しました。
このChartは1つのシークレットだけを使用しています:
-
global.minio.credentials.secret
: バケツへの認証に使われるaccesskey
とsecretkey
の値を含むグローバルシークレット。
設定
以下、コンフィギュレーションの主要な部分について説明します。 親チャートからコンフィギュレーションを行う場合、これらの値は次のようになります:
minio:
init:
ingress:
enabled:
tls:
enabled:
secretName:
annotations:
proxyReadTimeout:
proxyBodySize:
proxyBuffering:
tolerations:
persistence: # Upstream
volumeName:
matchLabels:
matchExpressions:
serviceType: # Upstream
servicePort: # Upstream
defaultBuckets:
minioConfig: # Upstream
インストールコマンドラインオプション
以下の表は、--set
フラグを使用して、helm install
コマンドに供給できるすべての可能なチャート設定です:
パラメータ | デフォルト | 説明 |
---|---|---|
defaultBuckets
| [{"name": "registry"}]
| MinIOのデフォルトバケット |
image
| minio/minio
| MinIOイメージ |
imagePullPolicy
| Always
| MinIOイメージプルポリシー |
imageTag
| RELEASE.2017-12-28T01-21-00Z
| MinIO画像タグ |
minioConfig.browser
| on
| MinIOブラウザフラグ |
minioConfig.domain
| ミニオドメイン | |
minioConfig.region
| us-east-1
| ミニオ領域 |
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 storageClassName | |
persistence.subPath
| MinIO永続化ボリュームのマウントパス | |
persistence.volumeName
| MinIO既存の永続ボリューム名 | |
pullSecrets
| 画像リポジトリの秘密 | |
replicas
| 4
| MinIOのレプリカ数 |
resources.requests.cpu
| 250m
| MinIO 最小要求CPU |
resources.requests.memory
| 256Mi
| MinIO 最小要求メモリ |
securityContext.fsGroup
| 1000
| ポッドを開始するグループID |
securityContext.runAsUser
| 1000
| ポッドを開始するユーザーID |
servicePort
| 9000
| MinIOサービスポート |
serviceType
| ClusterIP
| MinIOサービスタイプ |
tolerations
| []
| ポッド割り当てのためのトレラベル |
チャート構成例
プルシークレット
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.busybox.image.repository
とglobal.busybox.image.tag
がinitContainer画像の入力に使用されます。chart-localの値が指定された場合、グローバル設定の値の代わりに使用されます。
initContainerスクリプト
initContainerには以下の項目が渡されます:
-
/config
に実装されている認証項目を含むシークレット。通常はaccesskey
とsecretkey
。 -
config.json
テンプレートを含むコンフィグマップと、sh
で実行されるスクリプトを含むconfigure
が、/config
にマウントされています。 - デーモンのコンテナに渡される
/minio
にマウントされたemptyDir
。
initContainer は、/config/configure
スクリプトを使用して、/minio/config.json
に完了したコンフィグレーションを入力します。minio-config
コンテナがこのタスクを完了すると、/minio
ディレクトリがminio
コンテナに渡され、config.json
をMinIOサーバーに提供するために使用されます。
イングレスの設定
これらの設定はMinIO Ingressを制御します。
名称 | タイプ | デフォルト | 説明 |
---|---|---|---|
annotations
| 文字列 | このフィールドは、KubernetesIngressの標準annotations と完全に一致します。
| |
enabled
| ブーリアン | false
| Ingressオブジェクトをサポートするサービスに対してIngressオブジェクトを作成するかどうかを制御する設定。false の場合、global.ingress.enabled の設定が使用されます。
|
tls.enabled
| ブーリアン | true
|
false に設定すると、MinIOのTLSを無効にします。これは主に、Ingressコントローラの前にTLS終端プロキシがある場合など、IngressレベルでTLS終端を使用できない場合に便利です。
|
tls.secretName
| 文字列 | MinIO URLの有効な証明書とキーを含むKubernetes TLS Secretの名前。設定されていない場合、代わりにglobal.ingress.tls.secretName 。
|
画像の設定
image
、imageTag
、imagePullPolicy
のデフォルトは、上流で文書化されています。
永続性
このチャートでは、PersistentVolumeClaim
をプロビジョニングし、対応する永続ボリュームをデフォルトの場所/export
にマウントします。 これを動作させるには、Kubernetesクラスターで利用可能な物理ストレージが必要です。emptyDir
を使用したい場合は、PersistentVolumeClaim
を無効にします:persistence.enabled: false
。
persistence
の動作は上流で文書化されています。
GitLabはいくつかの項目を追加しました:
persistence:
volumeName:
matchLabels:
matchExpressions:
名称 | タイプ | デフォルト | 説明 |
---|---|---|---|
volumeName
| 文字列 | false
|
volumeName が提供されると、PersistentVolumeClaim は動的にPersistentVolume 作成する代わりに PersistentVolume 、提供された名前を使用します。 これは上流の動作を上書きします。
|
matchLabels
| 地図 | true
| バインドするボリュームを選択する際に照合するラベル名とラベル値のマップを受け付けます。 これはPersistentVolumeClaim selector セクションで使用します。ボリュームのドキュメントを参照してください。
|
matchExpressions
| 配列 | バインドするボリュームを選択する際に照合するラベル条件オブジェクトの配列を受け付けます。 これはPersistentVolumeClaim selector セクションで使用します。volume のドキュメントを参照ください。
|
デフォルトバケット
defaultBuckets
は、インストール時にMinIOポッド上にバケットを自動的に作成するメカニズムを提供します。 このプロパティには項目の配列が含まれ、各項目には最大3つのプロパティがあります:name
、policy
、purge
。
defaultBuckets:
- name: public
policy: public
purge: true
- name: private
- name: public-read
policy: download
名称 | タイプ | デフォルト | 説明 |
---|---|---|---|
name
| 文字列 | 作成されるバケットの名前。指定される値は、AWS バケットの命名規則に準拠する必要があります。つまり、DNS に準拠し、a-z, 0-9, - (ハイフン) の文字のみを含み、3 文字以上 63 文字以下の文字列である必要があります。name プロパティは、すべてのエントリで_必須_です。
| |
policy
| none
|
policy この policy プロパティは必須ではなく、デフォルト値はnone です。匿名アクセスに関しては、none (匿名アクセスなし)、download (匿名読み込み専用アクセス)、upload (匿名書き込み専用アクセス)、public (匿名読み込み/書き込みアクセス) のいずれかを指定します。
| |
purge
| ブーリアン |
purge プロパティは、インストール時に、既存のバケットを強制的に削除するための手段として提供されています。 これは、PersistentVolume 永続化の volumeName プロパティに PersistentVolume 既存のものを使用する場合にのみ有効ですPersistentVolume 。動的に作成されたものを使用する場合 PersistentVolume 、これはチャートのインストール時にのみ発生し、作成されたばかりのPersistentVolume にはデータが存在しないため、何の価値もありません。 このプロパティは必須ではありませんが、バケットを強制的に削除するために、このプロパティにtrue という値を指定することができます。mc rm -r --force 。
|
セキュリティ・コンテキスト
これらのオプションにより、ポッドの起動に使用する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 ドキュメントを参照してください。これには、バケットオブジェクトがアクセスまたは変更されたときの通知の発行に関する詳細も含まれています。