使用 Helm Charts 部署 MinIO Tenant
概觀
Helm 是一種用於自動將應用程式部署到 Kubernetes 叢集的工具。Helm chart 是一組 YAML 檔案、範本和其他定義部署詳細資訊的檔案。以下程序使用 Helm Chart 來部署由 MinIO Operator 管理的 Tenant。
此程序要求 Kubernetes 叢集具有有效的 Operator 部署。您不能使用 MinIO Operator Tenant chart 來部署獨立於 Operator 的 Tenant。
重要
MinIO Operator Tenant Chart 與社群管理的 MinIO Chart 是不同的。
社群 Helm Chart 由社群建構、維護和支援。MinIO 不保證支援任何引用該 chart 的錯誤、功能請求或更新。
Operator Tenant Chart 由 MinIO 正式維護和支援。MinIO 強烈建議在生產環境中使用官方 Helm Chart 作為 Operator 和 Tenants。
先決條件
您必須滿足以下要求才能使用 Helm 安裝 MinIO Tenant
現有的 Kubernetes 叢集
本機主機上的
kubectl
CLI 工具,其版本與叢集相符。Helm 3.8 或更高版本。
yq 4.18.1 或更高版本。
現有的 MinIO Operator 安裝。
此程序假設您的 Kubernetes 叢集存取權授予您廣泛的管理權限。
如需有關 Tenant 安裝要求的詳細資訊,包括支援的 Kubernetes 版本和 TLS 憑證,請參閱 Tenant 部署先決條件。
此程序假設您熟悉參考的 Kubernetes 概念和公用程式。雖然本文件可能會盡力提供有關設定或部署 Kubernetes 相關資源的指南,但它不能取代官方的 Kubernetes 文件。
使用 Helm Charts 部署 MinIO Tenant
以下程序使用 MinIO Operator Chart 存放庫部署 MinIO Tenant。與 本地 chart 安裝 相比,此方法支援簡化的安裝路徑。
以下程序使用 Helm 來部署使用官方 MinIO Tenant Chart 的 MinIO Tenant。
重要
如果您使用 Helm 部署 MinIO Tenant,則必須使用 Helm 來管理或升級該部署。請勿使用 kubectl krew
、Kustomize 或類似方法來管理或升級 MinIO Tenant。
此程序並未詳盡列出 Tenant Chart 中所有可能的組態選項。它提供了一個基準,您可以從此基準修改 Tenant 並使其符合您的需求。
驗證您的 MinIO Operator 存放庫組態
MinIO 在 https://operator.min.io 維護一個與 Helm 相容的儲存庫。如果您的本地 Helm 設定中還沒有這個儲存庫,請先新增它再繼續。
helm repo add minio-operator https://operator.min.io
您可以使用
helm search
來驗證儲存庫內容。helm search repo minio-operator
回應應該類似如下:
NAME CHART VERSION APP VERSION DESCRIPTION minio-operator/minio-operator 4.3.7 v4.3.7 A Helm chart for MinIO Operator minio-operator/operator 6.0.4 v6.0.4 A Helm chart for MinIO Operator minio-operator/tenant 6.0.4 v6.0.4 A Helm chart for MinIO Operator
建立 Helm
values.yaml
的本地副本以進行修改。curl -sLo values.yaml https://raw.githubusercontent.com/minio/operator/master/helm/tenant/values.yaml
在您偏好的文字編輯器中開啟
values.yaml
物件。設定租戶拓撲。
以下欄位共享
tenant.pools[0]
前綴,並控制租戶中部署的所有 Pod 的伺服器數量、每個伺服器的磁碟區數量和儲存類別。欄位
描述
servers
要在伺服器池中部署的 MinIO Pod 數量。
volumesPerServer
要附加到每個 MinIO Pod (
servers
) 的持久磁碟區數量。Operator 會為租戶產生volumesPerServer x servers
個持久磁碟區宣告。storageClassName
要與產生的持久磁碟區宣告相關聯的 Kubernetes 儲存類別。
如果沒有符合指定值的儲存類別,或者如果指定的儲存類別無法滿足要求的 PVC 數量或儲存容量,則租戶可能無法啟動。
size
要為每個產生的 PVC 請求的儲存容量。
設定租戶親和性或反親和性。
租戶圖表支援以下 Kubernetes 選擇器、親和性和反親和性設定:
節點選擇器 (
tenant.nodeSelector
)節點/Pod 親和性或反親和性 (
spec.pools[n].affinity
)
MinIO 建議使用 Pod 反親和性來設定租戶,以確保 Kubernetes 排程器不會在同一個工作節點上排程多個 Pod。
如果您有要部署租戶的特定工作節點,請將這些節點標籤或篩選器傳遞到
nodeSelector
或affinity
欄位,以限制排程器將 Pod 放置在這些節點上。設定網路加密。
MinIO 租戶 CRD 提供以下欄位,您可以使用它們來設定租戶 TLS 網路加密:
欄位
描述
tenant.certificate.requestAutoCert
啟用或停用 MinIO 自動 TLS 憑證產生。
預設為
true
或如果省略則啟用。tenant.certificate.certConfig
自訂 自動 TLS 的行為(如果啟用)。
tenant.certificate.externalCertSecret
透過伺服器名稱指示 (SNI) 為多個主機名稱啟用 TLS。
指定一個或多個類型為
kubernetes.io/tls
或cert-manager
的 Kubernetes 密鑰。tenant.certificate.externalCACertSecret
啟用驗證由未知、第三方或內部憑證授權機構 (CA) 簽署的客戶端 TLS 憑證。
指定一個或多個類型為
kubernetes.io/tls
的 Kubernetes 密鑰,其中包含給定授權機構的完整 CA 憑證鏈。設定 MinIO 環境變數。
您可以使用
tenant.configuration
欄位來設定 MinIO 伺服器環境變數。欄位
描述
tenant.configuration
指定一個 Kubernetes 不透明密鑰,其資料有效負載
config.env
包含您要設定的每個 MinIO 環境變數。config.env
資料有效負載**必須**是 base64 編碼的字串。您可以建立一個本機檔案、設定您的環境變數,然後使用cat LOCALFILE | base64
來建立有效負載。YAML 包含一個物件
kind: Secret
,其中metadata.name: storage-configuration
設定根使用者名稱、密碼、抹除同位設定,並啟用租戶主控台。根據您的租戶需求修改此設定。
部署租戶。
使用
helm
使用您的values.yaml
作為覆寫來安裝租戶圖表。helm install \ --namespace TENANT-NAMESPACE \ --create-namespace \ --values values.yaml \ TENANT-NAME minio-operator/tenant
您可以使用以下命令監控進度:
watch kubectl get all -n TENANT-NAMESPACE
公開租戶 MinIO S3 API 連接埠。
要從您的本機測試 MinIO Client
mc
,請轉發 MinIO 連接埠並建立別名。轉發租戶的 MinIO 連接埠。
kubectl port-forward svc/TENANT-NAME-hl 9000 -n TENANT-NAMESPACE
為租戶服務建立別名。
mc alias set myminio https://127.0.0.1:9000 minio minio123 --insecure
您可以使用
mc mb
在租戶上建立儲存桶。mc mb myminio/mybucket --insecure
如果您使用受信任憑證授權機構 (CA) 鑄造的 TLS 憑證部署了 MinIO 租戶,則可以省略
--insecure
標誌。有關外部連線到租戶的更多文件,請參閱 連線到租戶。
使用本地 Helm 圖表部署租戶
以下程序使用 Helm 圖表的本地副本部署租戶。與 基於儲存庫的安裝 相比,此方法可能支援更輕鬆地預先設定租戶。
下載 Helm 圖表。
在本機主機上,將租戶 Helm 圖表下載到方便的目錄中。
curl -O https://raw.githubusercontent.com/minio/operator/master/helm-releases/tenant-6.0.4.tgz
每個圖表都包含一個
values.yaml
檔案,您可以自訂該檔案以滿足您的需求。有關 MinIO 租戶values.yaml
中可用選項的詳細資訊,請參閱 租戶 Helm 圖表。在您偏好的文字編輯器中開啟
values.yaml
物件。設定租戶拓撲。
以下欄位共享
tenant.pools[0]
前綴,並控制租戶中部署的所有 Pod 的伺服器數量、每個伺服器的磁碟區數量和儲存類別。欄位
描述
servers
要在伺服器池中部署的 MinIO Pod 數量。
volumesPerServer
要附加到每個 MinIO Pod (
servers
) 的持久磁碟區數量。Operator 會為租戶產生volumesPerServer x servers
個持久磁碟區宣告。storageClassName
要與產生的持久磁碟區宣告相關聯的 Kubernetes 儲存類別。
如果沒有符合指定值的儲存類別,或者如果指定的儲存類別無法滿足要求的 PVC 數量或儲存容量,則租戶可能無法啟動。
size
要為每個產生的 PVC 請求的儲存容量。
設定租戶親和性或反親和性。
租戶圖表支援以下 Kubernetes 選擇器、親和性和反親和性設定:
節點選擇器 (
tenant.nodeSelector
)節點/Pod 親和性或反親和性 (
spec.pools[n].affinity
)
MinIO 建議使用 Pod 反親和性來設定租戶,以確保 Kubernetes 排程器不會在同一個工作節點上排程多個 Pod。
如果您有要部署租戶的特定工作節點,請將這些節點標籤或篩選器傳遞到
nodeSelector
或affinity
欄位,以限制排程器將 Pod 放置在這些節點上。設定網路加密。
MinIO 租戶 CRD 提供以下欄位,您可以從中設定租戶 TLS 網路加密:
欄位
描述
tenant.certificate.requestAutoCert
啟用或停用 MinIO 自動 TLS 憑證產生。
tenant.certificate.certConfig
控制 自動 TLS 的設定。需要
spec.requestAutoCert: true
。tenant.certificate.externalCertSecret
指定一個或多個類型為
kubernetes.io/tls
或cert-manager
的 Kubernetes 密鑰。MinIO 使用這些憑證來根據主機名稱 (伺服器名稱指示) 執行 TLS 交握。tenant.certificate.externalCACertSecret
指定一個或多個類型為
kubernetes.io/tls
的 Kubernetes 密鑰,其中包含租戶必須信任的憑證授權機構 (CA) 鏈,以允許客戶端 TLS 連線。設定 MinIO 環境變數。
您可以使用
tenant.configuration
欄位來設定 MinIO 伺服器環境變數。該欄位必須指定一個 Kubernetes 不透明密鑰,其資料有效負載
config.env
包含您要設定的每個 MinIO 環境變數。YAML 包含一個物件
kind: Secret
,其中metadata.name: storage-configuration
設定根使用者名稱、密碼、抹除同位設定,並啟用租戶主控台。根據您的租戶需求修改此設定。
以下 Helm 命令使用標準圖表建立 MinIO 租戶:
helm install \ --namespace TENANT-NAMESPACE \ --create-namespace \ TENANT-NAME tenant-6.0.4.tgz
要部署多個租戶,請建立一個包含新租戶詳細資訊的 Helm 圖表,然後重複部署步驟。重新部署相同的圖表會更新先前部署的租戶。
公開租戶 MinIO 連接埠。
要從您的本機測試 MinIO Client
mc
,請轉發 MinIO 連接埠並建立別名。轉發租戶的 MinIO 連接埠。
kubectl port-forward svc/TENANT-NAME-hl 9000 -n TENANT-NAMESPACE
為租戶服務建立別名。
mc alias set myminio https://127.0.0.1:9000 minio minio123 --insecure
此範例使用非 TLS
myminio-hl
服務,該服務需要--insecure
。如果您已設定 TLS 憑證,請省略
--insecure
並改用svc/minio
。
您可以使用
mc mb
在租戶上建立儲存桶。mc mb myminio/mybucket --insecure
有關外部連線到租戶的更多文件,請參閱 連線到租戶。