文档基于2025-10-10日社区最终版构建     
切换到英文版    进入演示系统    进入交流社区

MinIO Documentation

Operator 的 cert-manager

MinIO Operator 管理托管在其中的服务的 TLS 证书颁发minio-operatornamespace.

本页介绍如何使用管理 Operator 的 TLS 证书cert-manager.

前提条件

1) 为minio-operator命名空间

本指南禁用MinIO Operator 中的证书自动生成功能,并使用 cert-manager 替代原有方式颁发证书。

Theminio-operator命名空间必须拥有自己的证书颁发机构(CA),该机构从集群的根CA派生而来。ClusterIssuer证书创建期间cert-manager 设置使用 cert-manager 创建此 CA 证书。

重要

这个 CA 证书必须存在之前安装 MinIO Operator。

  1. 如果不存在,则创建minio-operator命名空间

    kubectl create ns minio-operator
    
  2. 申请新证书spec.isCA: true指定。

    本证书作为CA对于minio-operatornamespace.

    创建一个名为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
    

    重要

    Thespec.issueRef.name必须与名称匹配ClusterIssuer创建于设置 cert-manager如果您指定了不同的ClusterIssuer名称或正在使用不同的Issuer根据指南,修改issuerRef以匹配您的环境。

  3. 应用资源:

    kubectl apply -f operator-ca-tls-secret.yaml
    

Kubernetes 创建一个名为operator-ca-tlsminio-operatornamespace.

重要

请确保在任何需要与 MinIO Operator 交互的应用程序中信任此证书。

2) 使用密钥创建Issuer

使用operator-ca-tls添加一个secret的秘诀Issuer资源的minio-operatornamespace.

  1. 创建一个名为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
    
  2. 应用资源:

    kubectl apply -f operator-ca-issuer.yaml
    

3) 创建 TLS 证书

现在Issuer存在minio-operatornamespace, 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 提供商以获取更多信息。

  1. 创建一个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
    

    重要

    Thespec.secretName不是可选的。

    秘密名称必须 be sts-tls通过设置来确认这一点spec.secretName: sts-tls如证书 YAML 中所示。

  2. 应用资源:

    kubectl apply -f sts-tls-certificate.yaml
    

这会创建一个名为sts-tlsminio-operatornamespace.

警告

STS服务将无法启动,如果sts-tlssecret, containing the TLS certificate, is missing or contains an invalidkey-value一对。

4) 安装禁用自动 TLS 的 Operator

你现在可以安装 MinIO Operator.

在安装 Operator 部署时,请设置OPERATOR_STS_AUTO_TLS_ENABLED环境变量offminio-operatorcontainer.

禁用此环境变量可防止 MinIO Operator 签发证书。 Operator 将改为依赖 cert-manager 来签发 TLS 证书。

根据您安装 Operator 的方式,有多种定义环境变量的方法。 以下步骤使用 kustomize 定义该变量。

  1. 创建一个名为的 kustomization 补丁文件kustomization.yaml包含以下内容:

    # 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"
    
  2. 将 kustomization 资源应用到集群:

    kubectl apply -k minio-operator
    

将现有的MinIO Operator部署迁移到cert-manager

要将现有的 MinIO Operator 部署从使用 AutoCert 过渡到 cert-manager,请完成以下步骤:

  1. 完成以下步骤安装 cert-manager,包括禁用自动证书。

  2. 完成此页面上的步骤 1-3,为 Operator 生成证书颁发机构。

  3. 当您进入此页面的安装步骤时,请将现有的 Operator TLS 证书替换为由 cert-manager 颁发的证书。

  4. 为每个租户创建新的 cert-manager 证书,操作步骤与租户的 cert-manager页面。

  5. 将 MinIO Operator 命名空间中租户的密钥替换为与每个租户的 cert-manager 签发证书相关的密钥。

下一步

设置MinIO 租户的 cert-manager.