为 MinIO 启用 TLS
MinIO 支持传输层安全性 (TLS) 1.2+ 版本的入站和出站流量加密。
MinIO Operator 支持以下方式为 MinIO Tenant 启用 TLS:
使用 Kubernetes 集群签名证书自动配置 TLS
用户指定的TLS使用Kubernetes密钥
Certmanager管理的TLS证书
MinIO 会自动检测配置目录或默认目录中的 TLS 证书,并启用 TLS 启动服务。
此过程记录了在 MinIO 中为单个域名启用 TLS 的方法。 有关多域名 TLS 的说明,请参阅 TODO
前提条件
访问 MinIO 集群
您必须拥有对 Kubernetes 集群的访问权限,并具备相应的管理权限。kubectlconfiguration.
此过程假设您的权限集已充分扩展,以支持在 Kubernetes 集群上部署或修改与 MinIO 相关的资源,包括但不限于 pods、statefulsets、replicasets、deployments 和 secrets。
TLS Certificates
使用一个必要的TLS证书进行配置支持的密码套件供 MinIO 使用。
看MinIO TLS on Kubernetes有关支持的租户 TLS 配置的更完整指南。
使用您偏好的方式配置证书,例如通过您组织的内部证书颁发机构,或使用知名的全球提供商(如 Digicert 或 Verisign)。
您可以使用自签名证书创建openssl对于 MinIOcertgen工具。
例如,以下命令生成一个自签名证书,其中包含一组与MinIO服务器主机关联的IP和DNS主题备用名称(SAN):
certgen -host "localhost,minio-*.example.net"
看MinIO Baremetal TLS有关证书生成和放置的更完整指导。
过程
MinIO Operator 支持三种在 MinIO 租户上管理 TLS 证书的方法:
MinIO 自动 TLS 证书生成
cert-manager托管TLS证书用户管理的TLS证书
您可以使用上述方法的任意组合来启用和配置TLS。
MinIO强烈建议使用cert-manager用于用户指定的证书,以简化管理和续订流程。
您也可以部署未启用 TLS 的 MinIO 租户。
以下步骤适用于使用 MinIO 的新部署和现有部署Kustomize:
Review theTenant CRD
TenantSpec.requestAutoCert和TenantSpec.certConfig字段。对于现有的 MinIO 租户,请检查用于创建该租户的 Kustomize 资源,并内省这些字段及其当前配置(如果有)。
创建或修改您的租户 YAML 以设置以下值:
requestAutoCert和certConfig必要时。 例如:spec: requestAutoCert: true certConfig: commonName: "CN=MinioTenantCommonName" organizationName: "O=MyOrganizationName" dnsNames: - '*.minio-tenant.domain.tld'
查看Kustomize 租户基础 YAML作为创建或修改租户资源指导的基线模板。
应用新的 Kustomization 模板
一旦应用更改,MinIO Operator 会自动重新部署具有更新配置的租户。
以下步骤适用于使用 MinIO 的新部署和现有部署Kustomize:
Review theTenant CRD
TenantSpec.externalCertsCecret字段对于现有的 MinIO 租户,请检查用于创建该租户的 Kustomize 资源,并查看该字段的当前配置(如果有)。
创建或修改您的租户 YAML 以引用适当的
cert-managerresource.例如,以下 Tenant YAML 片段引用了一个 cert-manager 资源
myminio-tls:apiVersion: minio.min.io/v2 kind: Tenant metadata: name: myminio namespace: minio-tenant spec: ## Disable default tls certificates. requestAutoCert: false ## Use certificates generated by cert-manager. externalCertSecret: - name: myminio-tls type: cert-manager.io/v1
应用新的 Kustomization 模板
一旦应用更改,MinIO Operator 会自动重新部署具有更新配置的租户。
以下步骤适用于使用 MinIO 的新部署和现有部署Kustomize:
Review theTenant CRD
TenantSpec.externalCertSecret字段。对于现有的 MinIO 租户,请检查用于创建该租户的 Kustomize 资源,并查看该字段的当前配置(如果有)。
创建或修改您的租户 YAML 以引用类型为 secret 的密钥
kubernetes.io/tls:例如,以下租户 YAML 片段引用了一个 TLS 密钥,该密钥覆盖了 MinIO 租户接受连接的域名。
apiVersion: minio.min.io/v2 kind: Tenant metadata: name: myminio namespace: minio-tenant spec: ## Disable default tls certificates. requestAutoCert: false ## Use certificates generated by cert-manager. externalCertSecret: - name: domain-certificate type: kubernetes.io/tls
应用新的 Kustomization 模板
一旦应用更改,MinIO Operator 会自动重新部署具有更新配置的租户。
MinIO Server 会为每个节点搜索 TLS 密钥和证书,并使用这些凭据启用 TLS。 MinIO 在发现并验证证书后会自动启用 TLS。 搜索位置取决于您的 MinIO 配置:
默认情况下,MinIO 服务器会在以下目录中查找每个节点的 TLS 密钥和证书:
${HOME}/.minio/certs
哪里${HOME}是运行 MinIO Server 进程的用户的主目录。
您可能需要创建${HOME}/.minio/certs如果目录不存在。
对于systemd托管部署中这必须对应于USER运行 MinIO 进程。
如果该用户没有主目录,请使用自定义路径作为替代选项。
您可以为 MinIO 服务器指定一个路径来搜索证书,使用minio server --certs-dir or -Sparameter.
例如,以下命令片段指示 MinIO 进程使用/opt/minio/certsTLS证书目录。
minio server --certs-dir /opt/minio/certs ...
运行 MinIO 服务的用户必须对此目录拥有读写权限。
放置默认域名的TLS证书(例如minio.example.net) 在/certs目录,其中私钥作为private.key和公共证书public.crt.
例如:
/path/to/certs
private.key
public.crt
您可以使用 MinIOcertgen为评估启用 TLS 的 MinIO 创建自签名证书。 例如,以下命令生成一个自签名证书,其中包含与 MinIO 服务器主机关联的一组 IP 和 DNS 主题备用名称 (SANs):
certgen -host "localhost,minio-*.example.net"
放置生成的public.crt和private.key进入/path/to/certsdirectory 来为 MinIO 部署启用 TLS。
应用程序可以使用public.crt作为受信任的证书颁发机构,允许连接到 MinIO 部署而无需禁用证书验证。
如果您正在重新配置之前未启用TLS的现有部署,请更新MINIO_VOLUMES指定https而不是http您可能还需要更新应用程序或客户端使用的URL。