Operator 的 cert-manager
MinIO Operator 管理在 minio-operator
命名空間中託管的服務的 TLS 憑證簽發。
此頁面描述如何使用 cert-manager 管理 Operator 的 TLS 憑證。
先決條件
已安裝 kustomize
具有
kubectl
對您的k8s
叢集的存取權已完成 設定 cert-manager 的步驟
MinIO Operator 必須尚未安裝。
1) 為 minio-operator
命名空間建立 CA 簽發者
本指南停用 MinIO Operator 中的憑證自動產生,並改用 cert-manager 簽發憑證。
minio-operator
命名空間必須有其自己的憑證授權單位 (CA),此授權單位衍生自 cert-manager 設定 期間建立的叢集 ClusterIssuer
憑證。使用 cert-manager 建立此 CA 憑證。
重要
此 CA 憑證必須在安裝 MinIO Operator 之前存在。
如果不存在,請建立
minio-operator
命名空間kubectl create ns minio-operator
請求指定
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
以符合您的環境。套用資源
kubectl apply -f operator-ca-tls-secret.yaml
Kubernetes 會在 minio-operator
名稱空間中建立一個名為 operator-ca-tls
的新密鑰。
重要
請務必在任何需要與 MinIO Operator 互動的應用程式中信任此憑證。
2) 使用密鑰建立 Issuer
使用 operator-ca-tls
密鑰為 minio-operator
名稱空間新增一個 Issuer
資源。
建立一個名為
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
套用資源
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 提供者查詢更多資訊。
為指定的網域建立
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 中所強調的那樣。套用資源
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 定義變數。
建立一個名為
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"
將 kustomization 資源套用至叢集
kubectl apply -k minio-operator
將現有的 MinIO Operator 部署遷移至 cert-manager
若要將現有的 MinIO Operator 部署從使用 AutoCert 轉換為 cert-manager,請完成以下步驟
完成安裝 cert-manager的步驟,包括停用 auto-cert。
完成此頁面上的步驟 1-3,以產生 Operator 的憑證授權單位。
當您進入此頁面上的安裝步驟時,請改為將現有的 Operator TLS 憑證替換為 cert-manager 發出的憑證。
為每個租戶建立新的 cert-manager 憑證,類似於租戶的 cert-manager頁面上描述的步驟。
使用與每個租戶的 cert-manager 發出的憑證相關的密鑰,替換 MinIO Operator 名稱空間中租戶的密鑰。