操作员证书管理器
MinIO Operator 负责管理 minio-operator 命名空间中托管服务的 TLS 证书签发。
本页介绍如何使用 cert-manager 管理操作员的 TLS 证书。
前提条件
- kustomize 安装 
- kubectl访问你的- k8s集群
- 完成以下步骤 set up cert-manager 
- MinIO 操作器尚未安装。 
1) 为 minio-operator 命名空间创建 CA 签发器
本指南 禁用 MinIO Operator 中的自动生成证书功能,改用 cert-manager 签发证书。
minio-operator命名空间必须有自己的证书颁发机构(CA) ,该颁发机构来自在 cert-manager setup 中创建的群集ClusterIssuer证书。
使用 cert-manager 创建 CA 证书。
重要
在安装 MinIO Operator 之前 ,该 CA 证书 必须 存在。
- 如果不存在,则创建 - minio-operator命名空间- kubectl create ns minio-operator 
- 申请指定了 - spec.isCA: true的新证书。- 该证书是 - minio-operatorCA。- 创建名为 - 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必须与在 setting up cert-manager 时创建的- ClusterIssuer的名称一致。 如果您指定了不同的- ClusterIssuer名称或使用了与指南不同的- Issuer,请修改- issuerRef以匹配您的环境。
- 应用资源: - kubectl apply -f operator-ca-tls-secret.yaml 
Kubernetes 在 minio-operator 命名空间中创建了一个名为 operator-ca-tls 的新秘密。
重要
确保在任何需要与 MinIO 操作员交互的应用程序中信任此证书。
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 就可以添加证书了。
来自证书管理器的证书必须对以下 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 secret 丢失或包含无效的 key-value 对,STS 服务将无法启动。
4) 禁用自动 TLS 安装操作员
现在可以 install the MinIO Operator 。
安装 Operator 部署时,将 minio-operator 容器中的 OPERATOR_STS_AUTO_TLS_ENABLED 环境变量设置为 off 。
禁用此环境变量将阻止 MinIO 操作员签发证书。 相反,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" 
- 将自定义资源应用到群集: - kubectl apply -k minio-operator 
将现有 MinIO Operator 部署迁移到 cert-manager
要将现有 MinIO Operator 部署从使用 AutoCert 过渡到使用 cert-manager,请完成以下步骤:
- 完成 installing cert-manager 的步骤,包括禁用自动证书。 
- 完成本页的 1-3 步骤,为操作员生成证书授权。 
- 当您进入本页的安装步骤时,请用 cert-manager 签发的证书替换现有的 Operator TLS 证书。 
- 为每个租户创建新的 cert-manager 证书,类似于 cert-manager for Tenants 页面中描述的步骤。 
- 用与每个租户的证书管理器签发的证书相关的秘密替换 MinIO Operator 命名空间中租户的秘密。 
