【kubernetes-the-hard-way】04-certificate-authority 配置 CA 并生成 TLS 证书

【kubernetes-the-hard-way】04-certificate-authority 配置 CA 并生成 TLS 证书

配置 CA 并生成 TLS 证书

在本实验中,您将使用 openssl 来配置 PKI 基础设施 来引导证书颁发机构,并为以下组件生成 TLS 证书:kube-apiserver、kube-controller -manager、kube-scheduler、kubelet 和 kube-proxy。 本节中的命令应从jumpbox运行。

证书颁发机构 Certificate Authority

在本部分中,您将配置一个证书颁发机构,可用于为其他 Kubernetes 组件生成其他 TLS 证书。 使用openssl设置 CA 并生成证书可能非常耗时,尤其是第一次执行此操作时。 为了简化本实验,我添加了一个 openssl 配置文件ca.conf,它定义了为每个 Kubernetes 组件生成证书所需的所有详细信息。

花点时间查看一下ca.conf配置文件:

cat ca.conf

您不需要了解ca.conf文件中的所有内容来完成本教程,但您应该将其视为学习openssl以及高级管理证书配置的起点。

每个证书颁发机构都以私钥和根证书开始。 在本节中,我们将创建一个自签名证书颁发机构,虽然这就是本教程所需的全部内容,但这不应被视为您在实际生产级别环境中要做的事情。

生成CA配置文件、证书和私钥:

{
  openssl genrsa -out ca.key 4096
  openssl req -x509 -new -sha512 -noenc \
    -key ca.key -days 3653 \
    -config ca.conf \
    -out ca.crt
}

您可以使用以下命令列出生成的文件:

ls -1 *.crt *.key

结果:

ca.crt ca.key

生成结果中出现如下异常:

req: Unrecognized flag noenc
req: Use -help for summary.

请参考“设置 Jumpbox”安装openssl 3.0

创建客户端和服务器证书

在本部分中,您将为每个 Kubernetes 组件生成客户端和服务器证书,并为 Kubernetes admin 用户生成客户端证书。

生成证书和私钥:

certs=(
  "admin" "node-0" "node-1"
  "kube-proxy" "kube-scheduler"
  "kube-controller-manager"
  "kube-api-server"
  "service-accounts"
)
for i in ${certs[*]}; do
  openssl genrsa -out "${i}.key" 4096

  openssl req -new -key "${i}.key" -sha256 \
    -config "ca.conf" -section ${i} \
    -out "${i}.csr"
  
  openssl x509 -req -days 3653 -in "${i}.csr" \
    -copy_extensions copyall \
    -sha256 -CA "ca.crt" \
    -CAkey "ca.key" \
    -CAcreateserial \
    -out "${i}.crt"
done

运行上述命令的结果将为每个 Kubernetes 组件生成私钥、证书请求和签名的 SSL 证书。 您可以使用以下命令列出生成的文件:

ls -1 *.crt *.key *.csr

分发客户端和服务器证书

在本部分中,您将把各种证书复制到每个计算机的目录下,每个 Kubernetes 组件将在该目录中搜索证书对。 在现实环境中,这些证书应被视为一组敏感机密,因为 Kubernetes 组件经常将它们用作凭证来相互进行身份验证。

将适当的证书和私钥复制到node-0node-1机器:

for host in node-0 node-1; do
  ssh root@$host mkdir /var/lib/kubelet/
  
  scp ca.crt root@$host:/var/lib/kubelet/
    
  scp $host.crt \
    root@$host:/var/lib/kubelet/kubelet.crt
    
  scp $host.key \
    root@$host:/var/lib/kubelet/kubelet.key
done

将适当的证书和私钥复制到server计算机:

scp \
  ca.key ca.crt \
  kube-api-server.key kube-api-server.crt \
  service-accounts.key service-accounts.crt \
  root@server:~/

kube-proxykube-controller-managerkube-schedulerkubelet客户端证书将用于在下一个实验中生成客户端身份验证配置文件。

下一步: Generating Kubernetes Configuration Files for Authentication

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值