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
的新密鑰。
重要事項
請確保在任何需要與 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
。請如憑證 YAML 中標示的,設定spec.secretName: sts-tls
來確認。套用資源
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的步驟,包括停用 auto-cert。
完成此頁面上的步驟 1-3,以產生 Operator 的憑證授權單位。
當您到達此頁面上的安裝步驟時,請改為以 cert-manager 發出的憑證取代現有的 Operator TLS 憑證。
為每個租戶建立新的 cert-manager 憑證,類似於租戶的 cert-manager頁面所述的步驟。
將 MinIO Operator 命名空間中租戶的密鑰,替換為與每個租戶的 cert-manager 發出憑證相關的密鑰。