引言

随着云计算和容器技术的发展,Kubernetes(K8s)已成为企业级应用部署和管理的首选平台。在K8s的运维过程中,确保集群的安全性至关重要。双向认证证书作为一种增强安全性的手段,可以有效地防止未授权的访问和数据泄露。本文将详细介绍如何在K8s中安装双向认证证书,并分享一些实战技巧。

双向认证证书简介

双向认证,又称双向TLS,是一种网络安全协议,要求通信双方进行身份验证。在K8s中,双向认证证书主要用于服务间通信,确保集群内部通信的安全性。

特点

  • 增强安全性:通过证书验证双方身份,防止中间人攻击。
  • 简化证书管理:集中管理证书,方便运维操作。
  • 提高效率:自动化证书颁发和续期,减少手动操作。

双向认证证书的安装

环境准备

在开始安装之前,确保您的K8s集群已安装以下组件:

  • etcd:存储集群配置信息。
  • Kube-apiserver:集群的入口点,负责处理集群内部通信。
  • Kubelet:节点上的组件,负责管理容器。
  • Calico:网络插件,负责集群内网络通信。

步骤

  1. 生成CA证书和私钥
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt -subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/CN=MyCompanyCA"
  1. 生成Kube-apiserver证书和私钥
openssl genrsa -out kube-apiserver.key 2048
openssl req -new -key kube-apiserver.key -out kube-apiserver.csr -subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/CN=kube-apiserver"
openssl x509 -req -in kube-apiserver.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out kube-apiserver.crt -days 3650 -sha256
  1. 生成Kubelet证书和私钥
openssl genrsa -out kubelet.key 2048
openssl req -new -key kubelet.key -out kubelet.csr -subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/CN=kubelet"
openssl x509 -req -in kubelet.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out kubelet.crt -days 3650 -sha256
  1. 部署证书

将生成的证书和私钥分别部署到Kube-apiserver和Kubelet。

配置Kube-apiserver

编辑/etc/kubernetes/manifests/kube-apiserver.yaml文件,添加以下内容:

spec:
  containers:
  - name: kube-apiserver
    volumeMounts:
    - name: kube-apiserver-certs
      mountPath: /etc/kubernetes/certs
      readOnly: true
  volumes:
  - name: kube-apiserver-certs
    secret:
      secretName: kube-apiserver-certs

创建相应的Secret:

kubectl create secret generic kube-apiserver-certs --from-file=kube-apiserver.crt --from-file=kube-apiserver.key --from-file=ca.crt
  1. 重启Kube-apiserver
systemctl restart kube-apiserver

配置Kubelet

编辑/etc/kubernetes/kubelet.conf文件,添加以下内容:

--cert-dir=/etc/kubernetes/certs
--client-certificate=/etc/kubernetes/certs/kubelet.crt
--client-key=/etc/kubernetes/certs/kubelet.key
--ca-file=/etc/kubernetes/certs/ca.crt

重启Kubelet:

systemctl restart kubelet

实战技巧

  1. 自动化证书颁发:使用自动化工具,如Cert-manager,自动颁发和管理证书。
  2. 证书轮换:定期更换证书,降低安全风险。
  3. 监控证书有效期:使用工具监控证书有效期,避免证书过期导致服务中断。

总结

双向认证证书是K8s集群安全的重要组成部分。通过本文的介绍,您应该掌握了在K8s中安装双向认证证书的方法和实战技巧。在运维过程中,确保集群的安全性,为您的业务提供可靠保障。