文件

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 的新密鑰。

重要

請務必在任何需要與 MinIO Operator 互動的應用程式中信任此憑證。

2) 使用密鑰建立 Issuer

使用 operator-ca-tls 密鑰為 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 網域>

    重要

    <cluster 網域> 替換為您的 MinIO 租戶的實際值。cluster 網域 是在 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 不是選擇性的。

    密鑰名稱**必須**是 sts-tls。請透過設定 spec.secretName: sts-tls 來確認,如憑證 YAML 中所強調的那樣。

  2. 套用資源

    kubectl apply -f sts-tls-certificate.yaml
    

這會在 minio-operator 名稱空間中建立一個名為 sts-tls 的密鑰。

警告

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

4) 安裝已停用 Auto 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的步驟,包括停用 auto-cert。

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

  3. 當您進入此頁面上的安裝步驟時,請改為將現有的 Operator TLS 憑證替換為 cert-manager 發出的憑證。

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

  5. 使用與每個租戶的 cert-manager 發出的憑證相關的密鑰,替換 MinIO Operator 名稱空間中租戶的密鑰。

後續步驟

設定MinIO 租戶的 cert-manager