文件

適用於 Operator 的 cert-manager

MinIO Operator 管理 minio-operator 命名空間中託管的服務的 TLS 憑證發行。

此頁面說明如何使用 cert-manager 管理 Operator 的 TLS 憑證。

先決條件

1) 為 minio-operator 命名空間建立 CA 發行者

本指南會停用 MinIO Operator 中憑證的自動產生,並改為使用 cert-manager 發行憑證。

minio-operator 命名空間必須有自己的憑證授權單位 (CA),此單位衍生自 cert-manager 設定期間建立的叢集 ClusterIssuer 憑證。使用 cert-manager 建立此 CA 憑證。

重要事項

此 CA 憑證必須在安裝 MinIO Operator 之前存在。

  1. 如果它不存在,請建立 minio-operator 命名空間

    kubectl create ns minio-operator
    
  2. 請求指定了 spec.isCA: true 的新憑證。

    此憑證充當 minio-operator 命名空間的 CA

    建立一個名為 operator-ca-tls-secret.yaml 的檔案,內容如下

    # operator-ca-tls-secret.yaml
    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      name: minio-operator-ca-certificate
      namespace: minio-operator
    spec:
      isCA: true
      commonName: operator
      secretName: operator-ca-tls
      duration: 70128h # 8y
      privateKey:
        algorithm: ECDSA
        size: 256
      issuerRef:
        name: selfsigned-root
        kind: ClusterIssuer
        group: cert-manager.io
    

    重要事項

    spec.issueRef.name 必須與設定 cert-manager時建立的 ClusterIssuer 名稱相符。如果您指定了不同的 ClusterIssuer 名稱,或是使用與本指南不同的 Issuer,請修改 issuerRef 以符合您的環境。

  3. 套用資源

    kubectl apply -f operator-ca-tls-secret.yaml
    

Kubernetes 會在 minio-operator 命名空間中建立一個名為 operator-ca-tls 的新 Secret。

重要事項

請確保任何需要與 MinIO Operator 互動的應用程式都信任此憑證。

2) 使用 Secret 建立 Issuer

使用 operator-ca-tls Secret 為 minio-operator 命名空間新增一個 Issuer 資源。

  1. 建立一個名為 operator-ca-issuer.yaml 的檔案,內容如下:

    # operator-ca-issuer.yaml
    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
      name: minio-operator-ca-issuer
      namespace: minio-operator
    spec:
      ca:
        secretName: operator-ca-tls
    
  2. 套用資源

    kubectl apply -f operator-ca-issuer.yaml
    

3) 建立 TLS 憑證

現在 Issuer 已存在於 minio-operator 命名空間中,cert-manager 可以新增憑證。

來自 cert-manager 的憑證必須對下列 DNS 網域有效:

  • sts

  • sts.minio-operator.svc.

  • sts.minio-operator.svc.<cluster domain>

    重要事項

    <cluster domain> 替換為您 MinIO 租戶的實際值。cluster domain 是在您的 Kubernetes 叢集中指定的內部根 DNS 網域。通常,此值為 cluster.local,但請檢查您的 CoreDNS 設定以確認 Kubernetes 叢集的正確值。

    例如

    kubectl get configmap coredns -n kube-system -o jsonpath="{.data}"
    

    不同的 Kubernetes 提供者管理根網域的方式不同。請洽詢您的 Kubernetes 提供者以取得更多資訊。

  1. 為指定的網域建立 Certificate

    建立一個名為 sts-tls-certificate.yaml 的檔案,內容如下:

    # sts-tls-certificate.yaml
    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      name: sts-certmanager-cert
      namespace: minio-operator
    spec:
      dnsNames:
        - sts
        - sts.minio-operator.svc
        - sts.minio-operator.svc.cluster.local # Replace cluster.local with the value for your domain.
      secretName: sts-tls
      issuerRef:
        name: minio-operator-ca-issuer
    

    重要事項

    spec.secretName 不是選擇性的。

    Secret 名稱必須sts-tls。請透過將 spec.secretName: sts-tls 設定為憑證 YAML 中醒目提示的內容來確認這一點。

  2. 套用資源

    kubectl apply -f sts-tls-certificate.yaml
    

這會在 minio-operator 命名空間中建立一個名為 sts-tls 的 Secret。

警告

如果缺少包含 TLS 憑證的 sts-tls Secret,或是包含無效的 key-value 配對,STS 服務將無法啟動。

4) 在停用自動 TLS 的情況下安裝 Operator

您現在可以安裝 MinIO Operator

在安裝 Operator 部署時,將 minio-operator 容器中的 OPERATOR_STS_AUTO_TLS_ENABLED 環境變數設定為 off

停用此環境變數可防止 MinIO Operator 發出憑證。相反地,Operator 依賴 cert-manager 來發出 TLS 憑證。

根據您安裝 Operator 的方式,有多種方法可以定義環境變數。下列步驟會使用 kustomize 定義變數。

  1. 建立一個名為 kustomization.yaml 的 kustomization 補丁檔案,內容如下:

    # minio-operator/kustomization.yaml
    apiVersion: kustomize.config.k8s.io/v1beta1
    kind: Kustomization
    
    resources:
    - github.com/minio/operator/resources
    
    patches:
    - patch: |-
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: minio-operator
          namespace: minio-operator
        spec:
          template:
            spec:
              containers:
                - name: minio-operator
                  env:
                    - name: OPERATOR_STS_AUTO_TLS_ENABLED
                      value: "off"
                    - name: OPERATOR_STS_ENABLED
                      value: "on"
    
  2. 將 kustomization 資源套用至叢集

    kubectl apply -k minio-operator
    

將現有的 MinIO Operator 部署移轉至 cert-manager

若要將現有的 MinIO Operator 部署從使用 AutoCert 轉換為使用 cert-manager,請完成下列步驟:

  1. 完成安裝 cert-manager的步驟,包括停用自動憑證。

  2. 完成此頁面上的步驟 1-3,以產生 Operator 的憑證授權單位。

  3. 當您執行到此頁面上的安裝步驟時,請改為使用 cert-manager 發出的憑證來取代現有的 Operator TLS 憑證。

  4. 為每個租戶建立新的 cert-manager 憑證,類似於租戶的 cert-manager頁面上描述的步驟。

  5. 將 MinIO Operator 命名空間中租戶的 Secret 替換為與每個租戶的 cert-manager 發出憑證相關的 Secret。

後續步驟

設定MinIO 租戶的 cert-manager