文件

使用 Helm Charts 部署 MinIO 租戶

概觀

Helm 是一種用於自動化將應用程式部署到 Kubernetes 叢集的工具。 Helm chart 是一組 YAML 檔案、範本和其他檔案,用於定義部署詳細資訊。以下程序使用 Helm Chart 來部署由 MinIO 運算子管理的租戶。

此程序需要 Kubernetes 叢集具有有效的 運算子 部署。您不能使用 MinIO 運算子租戶 chart 來部署獨立於運算子的租戶。

重要

MinIO 運算子租戶 Chart 與社群管理的 MinIO Chart不同的。

社群 Helm Chart 由社群建立、維護和支援。MinIO 不保證支援任何引用該 chart 的錯誤、功能請求或更新。

運算子租戶 Chart 由 MinIO 官方維護和支援。MinIO 強烈建議在生產環境中使用官方 Helm Chart 來部署運算子租戶

先決條件

您必須滿足以下要求才能使用 Helm 安裝 MinIO 租戶

  • 現有的 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 以滿足您的需求。

  1. 驗證您的 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
    
  2. 建立 Helm values.yaml 的本機副本以進行修改

    curl -sLo values.yaml https://raw.githubusercontent.com/minio/operator/master/helm/tenant/values.yaml
    

    在您慣用的文字編輯器中開啟 values.yaml 物件。

  3. 配置 Tenant 拓撲

    以下欄位共用 tenant.pools[0] 前綴,並控制伺服器數量、每個伺服器的磁碟區數量以及 Tenant 中部署的所有 Pod 的儲存類別

    欄位

    描述

    servers

    要在伺服器池中部署的 MinIO Pod 數量。

    volumesPerServer

    要附加到每個 MinIO Pod (servers) 的永久磁碟區數量。 Operator 會為 Tenant 產生 volumesPerServer x servers 個持續性磁碟區宣告。

    storageClassName

    要與產生的持續性磁碟區宣告關聯的 Kubernetes 儲存類別。

    如果沒有與指定值相符的儲存類別如果指定的儲存類別無法滿足要求的 PVC 數量或儲存容量,則 Tenant 可能無法啟動。

    size

    要為每個產生的 PVC 請求的儲存量。

  4. 配置 Tenant 親和性或反親和性

    Tenant Chart 支援以下 Kubernetes 選取器、親和性和反親和性配置

    • 節點選取器 (tenant.nodeSelector)

    • 節點/Pod 親和性或反親和性 (spec.pools[n].affinity)

    MinIO 建議配置具有 Pod 反親和性的 Tenant,以確保 Kubernetes 排程器不會在同一個工作節點上排程多個 Pod。

    如果您有要在其上部署 Tenant 的特定工作節點,請將這些節點標籤或篩選器傳遞至 nodeSelectoraffinity 欄位,以限制排程器將 Pod 放置在這些節點上。

  5. 配置網路加密

    MinIO Tenant CRD 提供了以下欄位,您可以使用這些欄位配置 Tenant TLS 網路加密

    欄位

    描述

    tenant.certificate.requestAutoCert

    啟用或停用 MinIO 自動 TLS 憑證產生

    預設為 true 或如果省略則啟用。

    tenant.certificate.certConfig

    自訂 自動 TLS 的行為(如果已啟用)。

    tenant.certificate.externalCertSecret

    透過伺服器名稱指示 (SNI) 啟用多個主機名稱的 TLS。

    指定一個或多個類型為 kubernetes.io/tlscert-manager 的 Kubernetes 密碼。

    tenant.certificate.externalCACertSecret

    啟用驗證由不明、第三方或內部憑證授權單位 (CA) 簽署的用戶端 TLS 憑證。

    指定一個或多個類型為 kubernetes.io/tls 的 Kubernetes 密碼,其中包含給定授權單位的 CA 憑證的完整鏈。

  6. 配置 MinIO 環境變數

    您可以使用 tenant.configuration 欄位設定 MinIO 伺服器環境變數。

    欄位

    描述

    tenant.configuration

    指定一個 Kubernetes 不透明密碼,其資料負載 config.env 包含您要設定的每個 MinIO 環境變數。

    config.env 資料負載必須是 base64 編碼的字串。 您可以建立本機檔案,設定您的環境變數,然後使用 cat LOCALFILE | base64 來建立負載。

    YAML 包含一個物件 kind: Secret,其 metadata.name: storage-configuration 設定根使用者名稱、密碼、消除同位檢查設定,並啟用 Tenant 主控台。

    根據您的 Tenant 需求修改此設定。

  7. 部署 Tenant

    使用 helm 並使用您的 values.yaml 作為覆寫來安裝 Tenant Chart

    helm install \
    --namespace TENANT-NAMESPACE \
    --create-namespace \
    --values values.yaml \
    TENANT-NAME minio-operator/tenant
    

    您可以使用以下命令監控進度

    watch kubectl get all -n TENANT-NAMESPACE
    
  8. 公開 Tenant MinIO S3 API 連接埠

    若要從本機測試 MinIO 用戶端 mc,請轉送 MinIO 連接埠並建立別名。

    • 轉送 Tenant 的 MinIO 連接埠

    kubectl port-forward svc/TENANT-NAME-hl 9000 -n TENANT-NAMESPACE
    
    • 為 Tenant 服務建立別名

    mc alias set myminio https://127.0.0.1:9000 minio minio123 --insecure
    

    您可以使用 mc mb 在 Tenant 上建立儲存貯體

    mc mb myminio/mybucket --insecure
    

    如果您使用由信任的憑證授權單位 (CA) 頒發的 TLS 憑證部署 MinIO Tenant,則可以省略 --insecure 旗標。

    請參閱 連線至 Tenant 以取得有關外部連線至 Tenant 的其他文件。

使用本機 Helm Chart 部署 Tenant

以下程序使用 Helm Chart 的本機副本部署 Tenant。 與 基於儲存庫的安裝 相比,此方法可能支援更容易預先配置 Tenant。

  1. 下載 Helm Chart

    在本機主機上,將 Tenant Helm Chart 下載到方便的目錄

    curl -O https://raw.githubusercontent.com/minio/operator/master/helm-releases/tenant-6.0.4.tgz
    

    每個 Chart 都包含一個 values.yaml 檔案,您可以自訂該檔案以符合您的需求。 有關 MinIO Tenant values.yaml 中可用選項的詳細資訊,請參閱 Tenant Helm Chart

    在您慣用的文字編輯器中開啟 values.yaml 物件。

  2. 配置 Tenant 拓撲

    以下欄位共用 tenant.pools[0] 前綴,並控制伺服器數量、每個伺服器的磁碟區數量以及 Tenant 中部署的所有 Pod 的儲存類別

    欄位

    描述

    servers

    要在伺服器池中部署的 MinIO Pod 數量。

    volumesPerServer

    要附加到每個 MinIO Pod (servers) 的永久磁碟區數量。 Operator 會為 Tenant 產生 volumesPerServer x servers 個持續性磁碟區宣告。

    storageClassName

    要與產生的持續性磁碟區宣告關聯的 Kubernetes 儲存類別。

    如果沒有與指定值相符的儲存類別如果指定的儲存類別無法滿足要求的 PVC 數量或儲存容量,則 Tenant 可能無法啟動。

    size

    要為每個產生的 PVC 請求的儲存量。

  3. 配置 Tenant 親和性或反親和性

    Tenant Chart 支援以下 Kubernetes 選取器、親和性和反親和性配置

    • 節點選取器 (tenant.nodeSelector)

    • 節點/Pod 親和性或反親和性 (spec.pools[n].affinity)

    MinIO 建議配置具有 Pod 反親和性的 Tenant,以確保 Kubernetes 排程器不會在同一個工作節點上排程多個 Pod。

    如果您有要在其上部署 Tenant 的特定工作節點,請將這些節點標籤或篩選器傳遞至 nodeSelectoraffinity 欄位,以限制排程器將 Pod 放置在這些節點上。

  4. 配置網路加密

    MinIO Tenant CRD 提供以下欄位,您可以使用這些欄位配置 Tenant TLS 網路加密

    欄位

    描述

    tenant.certificate.requestAutoCert

    啟用或停用 MinIO 自動 TLS 憑證產生

    tenant.certificate.certConfig

    控制 自動 TLS 的設定。 需要 spec.requestAutoCert: true

    tenant.certificate.externalCertSecret

    指定一個或多個類型為 kubernetes.io/tlscert-manager 的 Kubernetes 密碼。 MinIO 使用這些憑證根據主機名稱 (伺服器名稱指示) 執行 TLS 交握。

    tenant.certificate.externalCACertSecret

    指定一個或多個類型為 kubernetes.io/tls 的 Kubernetes 密碼,其中包含 Tenant 必須信任的憑證授權單位 (CA) 鏈,以允許用戶端 TLS 連線。

  5. 配置 MinIO 環境變數

    您可以使用 tenant.configuration 欄位設定 MinIO 伺服器環境變數。

    此欄位必須指定一個 Kubernetes 不透明密碼,其資料負載 config.env 包含您要設定的每個 MinIO 環境變數。

    YAML 包含一個物件 kind: Secret,其 metadata.name: storage-configuration 設定根使用者名稱、密碼、消除同位檢查設定,並啟用 Tenant 主控台。

    根據您的 Tenant 需求修改此設定。

  6. 以下 Helm 命令使用標準 Chart 建立 MinIO Tenant

    helm install \
    --namespace TENANT-NAMESPACE \
    --create-namespace \
    TENANT-NAME tenant-6.0.4.tgz
    

    若要部署多個 Tenant,請建立一個 Helm Chart,其中包含新 Tenant 的詳細資訊,然後重複部署步驟。 重新部署相同的 Chart 會更新先前部署的 Tenant。

  7. 公開 Tenant MinIO 連接埠

    若要從本機測試 MinIO 用戶端 mc,請轉送 MinIO 連接埠並建立別名。

    • 轉送 Tenant 的 MinIO 連接埠

      kubectl port-forward svc/TENANT-NAME-hl 9000 -n TENANT-NAMESPACE
      
    • 為 Tenant 服務建立別名

      mc alias set myminio https://127.0.0.1:9000 minio minio123 --insecure
      

      此範例使用非 TLS myminio-hl 服務,該服務需要 --insecure

      如果您已配置 TLS 憑證,請省略 --insecure 並改用 svc/minio

    您可以使用 mc mb 在 Tenant 上建立儲存貯體

    mc mb myminio/mybucket --insecure
    

請參閱 連線至 Tenant 以取得有關外部連線至 Tenant 的其他文件。