適用於 Operator 的 cert-manager
MinIO Operator 管理在 minio-operator
命名空間中託管之服務的 TLS 憑證簽發。
此頁面說明如何使用 cert-manager 管理 Operator 的 TLS 憑證。
先決條件
已安裝 kustomize
對您的
k8s
叢集的kubectl
存取權限已完成設定 cert-manager的步驟
必須尚未安裝 MinIO Operator。
1) 為 minio-operator
命名空間建立 CA 發行者
本指南會 停用 MinIO Operator 中的自動產生憑證,並改為使用 cert-manager 簽發憑證。
minio-operator
命名空間必須有自己的憑證授權單位 (CA),此 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 domain>
重要
將
<cluster domain>
替換為您的 MinIO 租戶的實際值。cluster domain
是在 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) 安裝停用自動 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的步驟,包括停用自動憑證。
完成本頁的步驟 1-3,以產生 Operator 的憑證授權單位。
當您到達本頁的安裝步驟時,請改為以 cert-manager 發出的憑證取代現有的 Operator TLS 憑證。
為每個租戶建立新的 cert-manager 憑證,類似於租戶的 cert-manager頁面中描述的步驟。
以與每個租戶的 cert-manager 發出的憑證相關的密鑰,取代 MinIO Operator 命名空間中租戶的密鑰。