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
。請設定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頁面上描述的步驟。
將 MinIO Operator 命名空間中租戶的密鑰,替換為與每個租戶的 cert-manager 發出的憑證相關的密鑰。