Kubespray项目中Cert-Manager的安装与配置指南

Kubespray项目中Cert-Manager的安装与配置指南

kubespray kubespray 项目地址: https://gitcode.com/gh_mirrors/kub/kubespray

前言

在现代Kubernetes集群中,证书管理是一个至关重要的环节。本文将详细介绍如何在Kubespray项目中配置和使用Cert-Manager,这是一个强大的Kubernetes原生证书管理控制器,能够自动化证书的颁发和续订过程。

Cert-Manager简介

Cert-Manager是Kubernetes生态系统中一个非常重要的证书管理工具,它能够:

  1. 从多种来源颁发证书(包括Let's Encrypt、HashiCorp Vault等)
  2. 自动确保证书的有效性
  3. 在证书到期前自动续订
  4. 简化TLS证书的管理流程

安装Cert-Manager

在Kubespray项目中启用Cert-Manager非常简单,只需修改集群的addons配置文件:

  1. 找到inventory/sample/group_vars/k8s_cluster/addons.yml文件
  2. 设置cert_manager_enabled为true
# Cert manager部署配置
cert_manager_enabled: true

配置TLS根CA证书

要使用Cert-Manager保护Ingress资源,首先需要创建并部署Kubernetes的ca-key-pair密钥,包含根CA证书和密钥。

创建根CA证书的步骤

1. 安装CFSSL工具

在Ubuntu/Debian系统上:

sudo apt-get install -y golang-cfssl
2. 创建CA配置文件
{
  "signing": {
    "default": {
      "expiry": "8760h"  # 默认1年有效期
    },
    "profiles": {
      "kubernetes": {
        "usages": ["signing", "key encipherment", "server auth", "client auth"],
        "expiry": "8760h"
      }
    }
  }
}
3. 创建CSR配置文件
{
  "CN": "Kubernetes",
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "US",
      "L": "Portland",
      "O": "Kubernetes",
      "OU": "CA",
      "ST": "Oregon"
    }
  ]
}
4. 生成根CA证书和密钥
cfssl gencert -initca ca-csr.json | cfssljson -bare ca

这将生成ca.pem(证书)和ca-key.pem(私钥)两个文件。

保护Ingress资源

Cert-Manager的一个常见用例是为Ingress资源请求TLS签名证书。以下是配置步骤:

1. 启用Nginx Ingress控制器

addons.yml中设置:

# Nginx ingress控制器部署
ingress_nginx_enabled: true

2. 配置Ingress资源示例

以下是为Prometheus配置安全Ingress的示例:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: prometheus-k8s
  namespace: monitoring
  annotations:
    kubernetes.io/ingress.class: "nginx"
    cert-manager.io/cluster-issuer: "ca-issuer"
spec:
  tls:
  - hosts:
    - prometheus.example.com
    secretName: prometheus-dashboard-certs
  rules:
  - host: prometheus.example.com
    http:
      paths:
      - path: /
        backend:
          service:
            name: prometheus-k8s
            port:
              name: web

配置完成后,Cert-Manager将每3个月自动轮换Prometheus的TLS客户端证书和密钥。

ACME配置

ACME(自动证书管理环境)是一种常用的证书颁发协议,Let's Encrypt就是基于此协议的服务。Cert-Manager支持ACME协议,可以自动获取和更新证书。

内部CA的ACME配置

如果需要使用内部证书颁发机构,需要在addons.yml中添加信任的CA证书:

cert_manager_trusted_internal_ca: |
  -----BEGIN CERTIFICATE-----
  [你的CA证书内容]
  -----END CERTIFICATE-----

最佳实践

  1. 证书有效期:生产环境中建议设置合理的证书有效期,平衡安全性和管理成本
  2. 密钥强度:使用至少2048位的RSA密钥或等效的ECDSA密钥
  3. 证书轮换:利用Cert-Manager的自动轮换功能,确保证书及时更新
  4. 监控:设置监控告警,确保证书颁发和续订过程正常

总结

通过Kubespray集成Cert-Manager,可以大大简化Kubernetes集群中的证书管理流程。本文详细介绍了从安装配置到实际应用的完整流程,帮助您构建更加安全的Kubernetes环境。Cert-Manager的自动化特性不仅提高了安全性,还显著降低了运维复杂度。

kubespray kubespray 项目地址: https://gitcode.com/gh_mirrors/kub/kubespray

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柏滢凝Wayne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值