Kubelet证书自动轮换是Kubernetes集群中一项重要的安全功能,它可以帮助保护集群中的数据和服务免受未经授权的访问。Kubelet证书自动轮换是一种定期更新Kubelet证书的过程,以防止由于证书过期而导致的安全风险。
Kubelet证书自动轮换通常由Kubernetes集群中的一个特定服务来执行,这个服务通常是kube-cert-manager。kube-cert-manager会监测Kubernetes集群中所有Kubelet证书的到期时间,并在必要时重新生成新的证书。
apiVersion: certmanager.k8s.io/v1alpha1 kind: Certificate metadata: name: kubelet-serving-certificate spec: secretName: kubelet-serving-certificate # Name of the secret to create in the same namespace as this Certificate resource. This secret will contain the generated private key and certificate. duration: 2160h # The requested duration of the certificate in hours (max 8760). Default is 2160 (90 days). renewBefore: 360h # The requested renewal time before expiration in hours (max 8760). Default is 360 (15 days).
本文展示如何在 kubelet 中启用并配置证书轮换。
特性状态: Kubernetes v1.19 [stable]
Kubelet 使用证书进行 Kubernetes API 的认证。 默认情况下,这些证书的签发期限为一年,所以不需要太频繁地进行更新。
Kubernetes 包含特性 kubelet 证书轮换, 在当前证书即将过期时, 将自动生成新的秘钥,并从 Kubernetes API 申请新的证书。 一旦新的证书可用,它将被用于与 Kubernetes API 间的连接认证。
kubelet
进程接收 --rotate-certificates
参数,该参数决定 kubelet 在当前使用的 证书即将到期时,是否会自动申请新的证书。
kube-controller-manager
进程接收 --cluster-signing-duration
参数 (在 1.19 版本之前为 --experimental-cluster-signing-duration
),用来 控制签发证书的有效期限。
当 kubelet 启动时,如被配置为自举(使用--bootstrap-kubeconfig
参数),kubelet 会使用其初始证书连接到 Kubernetes API ,并发送证书签名的请求。 可以通过以下方式查看证书签名请求的状态:
kubectl get csr
最初,来自节点上 kubelet 的证书签名请求处于 Pending
状态。 如果证书签名请求满足特定条件, 控制器管理器会自动批准,此时请求会处于 Approved
状态。 接下来,控制器管理器会签署证书, 证书的有效期限由 --cluster-signing-duration
参数指定,签署的证书会被附加到证书签名请求中。
Kubelet 会从 Kubernetes API 取回签署的证书,并将其写入磁盘,存储位置通过 --cert-dir
参数指定。 然后 kubelet 会使用新的证书连接到 Kubernetes API。
当签署的证书即将到期时,kubelet 会使用 Kubernetes API,自动发起新的证书签名请求。 该请求会发生在证书的有效时间剩下 30% 到 10% 之间的任意时间点。 同样地,控制器管理器会自动批准证书请求,并将签署的证书附加到证书签名请求中。 Kubelet 会从 Kubernetes API 取回签署的证书,并将其写入磁盘。 然后它会更新与 Kubernetes API 的连接,使用新的证书重新连接到 Kubernetes API。
使用SC安装服务目录服务目录(ServiceCatalog)是服务目录是一种扩展API,它能让Kubernetes集群中运行的应用易于使用外部托管的...
使用AppArmor限制容器对资源的访问特性状态:Kubernetesv1.4[beta]AppArmor是一个Linux内核安全模块,它补充了基于标准Linux用户...
示例:使用Redis部署PHP留言板应用程序本教程向你展示如何使用Kubernetes和Docker构建和部署一个简单的(非面向生产的)多层web应...
Docker info 命令Docker 命令大全docker info : 显示 Docker 系统信息,包括镜像和容器数。。语法docker info [OPTIONS]实例查看...
Docker 支持以下的 Ubuntu 版本:Ubuntu Precise 12.04 (LTS)Ubuntu Trusty 14.04 (LTS)Ubuntu Wily 15.10其他更新的版本…… 前...
方法一、通过 Dockerfile构建创建Dockerfile首先,创建目录mysql,用于存放后面的相关东西。@:~$ mkdir -p ~/mysql/data ~/mysql/...
Docker 客户端docker客户端非常简单,我们可以直接输入docker命令来查看到 Docker 客户端的所有命令选项。@:~# docker可以通过命...
1 创建带有监控属性的view modelObservablesKnockout是在下面三个核心功能是建立起来的:监控属性(Observables)和依赖...
加载或保存JSON数据Knockout可以实现很复杂的客户端交互,但是几乎所有的web应用程序都要和服务器端交换数据(至少为了本地存储...
动画类型动画分为两类:基于tween或基于物理的。以下部分解释了这些术语的含义,并列出了一些相关的资源。 在一些情况下,我们最...