Kubespray项目中Cert-Manager的安装与配置指南
kubespray 项目地址: https://gitcode.com/gh_mirrors/kub/kubespray
前言
在现代Kubernetes集群中,证书管理是一个至关重要的环节。本文将详细介绍如何在Kubespray项目中配置和使用Cert-Manager,这是一个强大的Kubernetes原生证书管理控制器,能够自动化证书的颁发和续订过程。
Cert-Manager简介
Cert-Manager是Kubernetes生态系统中一个非常重要的证书管理工具,它能够:
- 从多种来源颁发证书(包括Let's Encrypt、HashiCorp Vault等)
- 自动确保证书的有效性
- 在证书到期前自动续订
- 简化TLS证书的管理流程
安装Cert-Manager
在Kubespray项目中启用Cert-Manager非常简单,只需修改集群的addons配置文件:
- 找到
inventory/sample/group_vars/k8s_cluster/addons.yml
文件 - 设置
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-----
最佳实践
- 证书有效期:生产环境中建议设置合理的证书有效期,平衡安全性和管理成本
- 密钥强度:使用至少2048位的RSA密钥或等效的ECDSA密钥
- 证书轮换:利用Cert-Manager的自动轮换功能,确保证书及时更新
- 监控:设置监控告警,确保证书颁发和续订过程正常
总结
通过Kubespray集成Cert-Manager,可以大大简化Kubernetes集群中的证书管理流程。本文详细介绍了从安装配置到实际应用的完整流程,帮助您构建更加安全的Kubernetes环境。Cert-Manager的自动化特性不仅提高了安全性,还显著降低了运维复杂度。
kubespray 项目地址: https://gitcode.com/gh_mirrors/kub/kubespray
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考