適用於 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),此單位衍生自 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
的新 Secret。
重要事項
請確保任何需要與 MinIO Operator 互動的應用程式都信任此憑證。
2) 使用 Secret 建立 Issuer
使用 operator-ca-tls
Secret 為 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
不是選擇性的。Secret 名稱必須為
sts-tls
。請透過將spec.secretName: sts-tls
設定為憑證 YAML 中醒目提示的內容來確認這一點。套用資源
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 定義變數。
建立一個名為
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頁面上描述的步驟。
將 MinIO Operator 命名空間中租戶的 Secret 替換為與每個租戶的 cert-manager 發出憑證相關的 Secret。