在我了解公共和私有IP之前创建Kubernetes TLS资产

时间:2016-11-28 22:01:56

标签: amazon-web-services amazon-ec2 kubernetes coreos

https://coreos.com/kubernetes/docs/latest/getting-started.html之后,我想为我的kubernetes集群生成我的TLS资产。 我计划通过cloud-config将这些密钥推送到aws-api来创建EC2实例,但我没有提前知道这些实例的公共和私有IP。

我想通过cloud-config将ca证书移动到实例,然后我从一个由systemd单元文件运行的脚本生成这些资产。这里最大的担忧是我不想将ca根证书放入云配置中。

有没有人能解决这种情况?

1 个答案:

答案 0 :(得分:0)

根据kube-aws的做法,我可以设置我的 api-server conf

[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = kubernetes
DNS.2 = kubernetes.default
DNS.3 = kubernetes.default.svc
DNS.4 = kubernetes.default.svc.cluster.local
DNS.5 = kubernetes.mydomain.de
IP.1 = 10.3.0.1

添加到“最小配置文件”

  • 我的公共DNS DNS.5 = kubernetes.mydomain.de
  • 我省略了MASTER_HOST IP地址,因为我可以使用FQDN(kubernetes.mydomain.de)来获取该IP
  • “K8S_SERVICE_IP”,应该是我内部IP范围的第一个IP(10.3.0.0/24):IP.2 = 10.3.0.1

worker conf 如下所示:

[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.*.cluster.internal

这里的技巧是将SAN设置为通配符*.*.cluster.internal。这样,所有工作人员都可以在内部网络上验证该证书,而不必设置特定的IP地址。