kubernetes - Kubernetes v1.10.11 和 v1.11.5 中生成的 x509 证书之间的差异
问题描述
我一直在创建一个安装了 kubernetes 的 amazon AMI,以用作 EKS 中的工作节点,我从 amazon-eks s3 存储桶安装了 kubelet 二进制文件。
从 k8s 版本 1.10.11 升级到 1.11.5 后,我注意到安装 kubelet 时生成的 x509 证书有所不同。
如果我跳到安装了 1.10.11 的工作节点之一并运行此命令openssl s_client -connect localhost:10250 2>/dev/null | openssl x509 -noout -text
,我会得到以下输出X509v3 Subject Alternative Name
:
DNS:ip-<my-ip>.eu-central-1.compute.internal, DNS:ip-<my-ip>, IP Address:<my-ip>
然而,如果我在安装了 1.11.5 的工作节点上运行相同的命令,我会得到以下输出X509v3 Subject Alternative Name
:
DNS:ip-<my-ip>
两个节点之间唯一的变化是安装的 kubernetes 版本。
我是否遗漏了从 1.11.x 版本开始需要设置附加主题备用名称的任何内容,就像以前在 v1.10.x 中所做的那样?IP Address:<my-ip>
我要求以我在 1.10 版中免费获得的格式在证书中设置 IP 地址。
仅供参考,我正在使用以下参数运行 kubelet:
ExecStart=/usr/bin/kubelet \
--address=0.0.0.0 \
--authentication-token-webhook \
--authorization-mode=Webhook \
--allow-privileged=true \
--cloud-provider=aws \
--cluster-dns=DNS_CLUSTER_IP \
--cluster-domain=cluster.local \
--cni-bin-dir=/opt/cni/bin \
--cni-conf-dir=/etc/cni/net.d \
--container-runtime=docker \
--max-pods=MAX_PODS \
--node-ip=INTERNAL_IP \
--network-plugin=cni \
--pod-infra-container-image=602401143452.dkr.ecr.REGION.amazonaws.com/eks/pause-amd64:3.1 \
--cgroup-driver=cgroupfs \
--register-node=true \
--kubeconfig=/var/lib/kubelet/kubeconfig \
--feature-gates=RotateKubeletServerCertificate=true \
--anonymous-auth=false \
--client-ca-file=CLIENT_CA_FILE \
--node-labels=env=NODE_LABEL
解决方案
1.10.11
就处理证书而言,和之间没有 Kubernetes 特定的区别1.11.5
。它可能与您正在使用的节点的特定EKS AMI相关(确保它们匹配)
如果不是,您可以使用与 Kubernetes 主服务器中的 CA 相同的 CA 手动为 kubelet创建证书。例如:
易莎
./easyrsa --subject-alt-name="IP:${MASTER_IP},"\
"IP:-<my-ip>,"\
"DNS:ip-<my-ip>.eu-central-1.compute.internal,"\
"DNS:ip-<my-ip>,"\
--days=10000 \
build-server-full server nopass
openssl
配置(csr.conf):
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[ dn ]
C = <country>
ST = <state>
L = <city>
O = <organization>
OU = <organization unit>
CN = <my-ip>
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = ip-<my-ip>.eu-central-1.compute.internal
DNS.2 = ip-<my-ip>
IP.1 = <my-ip>
[ v3_ext ]
authorityKeyIdentifier=keyid,issuer:always
basicConstraints=CA:FALSE
keyUsage=keyEncipherment,dataEncipherment
extendedKeyUsage=serverAuth,clientAuth
subjectAltName=@alt_names
创建企业社会责任:
$ openssl req -new -key server.key -out server.csr -config csr.conf
创建证书:
$ openssl x509 -req -in server.csr -CA cluster-ca.crt -CAkey cluster-ca.key \
-CAcreateserial -out server.crt -days 10000 \
-extensions v3_ext -extfile csr.conf
cfssl
推荐阅读
- compression - 可以从自制软件中获得压缩吗?
- bash - 跳过 sed 中的模式
- javascript - “DateTimeFormat”类型上不存在属性“formatToParts”
- java - 无法在我的类中使用 onBindViewHolder 实现扩展 RecyclerView.Adapter
- centos - 如何删除:rpmdb failed release 提供
- python - 你如何在 PYplot 中设置起点?
- javascript - 一切正常,但按钮永远不会启用
- rest - 是否有任何用于创建和测试 WSO2 REST API 的文档
- hive - Hive-查询输出到文件 csv/excel
- c# - 与控制器的构造函数相比,Blazor 页面上的依赖注入