K8S 添加 openssl 证书并授权多使用者
生成证书文件
配置ssl证书”使用者备用名称(DNS)”
修改openssl配置文件
1 | vim /etc/pki/tls/openssl.cfg |
确保[ req ]下存在以下两行(第一行是默认有的,第二行被注释掉了)
1 | [ req ] |
确保[ req_distinguished_name ]下没有0.xxx的标,有的话把0.去掉
1 | [ req_distinguished_name ] |
新增[ v3_req ]最后一行内容
1 | [ v3_req ] |
新增[ alt_names ]内容,其中DNS的名称就是多使用者的名字
1 | [ alt_names] |
根据openssl.cfg生成ssl证书
openssl.cfg要求部分文件及目录存在,在生成证书目录执行以下操作
1 | mkdir -p CA/{certs,cri,newcerts,private} |
如果最后一步提示找不到目录,改用
1 | mkdir -p ./{certs,cri,newcerts,private} |
然后开始进行ca证书签名以及签署操作
1 | openssl req -new -x509 -days 3650 -keyout ca.key -out ca.crt -config ./openssl.cnf |
注意第三条命令执行后,Common Name要写主域名(注意:这个域名也要在openssl.cnf的DNS.x里)
K8S添加证书认证
采取kubeconfig模式添加证书
Kubernetes各个组件启用https添加证书参数如下
1 | kube-apiserver --logtostderr=false --v=0 --etcd-servers=http://192.169.39.209:4001 --insecure-bind-address=0.0.0.0 --allow-privileged=false --service-cluster-ip-range=10.100.0.0/16 --admission-control=AlwaysAdmit,NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota --token_auth_file=/home/container/keystone/token --audit-log-path=/var/log/kubernetes/audit --log-dir=/var/log/kubernetes/kube-apiserver --experimental-keystone-url=http://192.169.39.211:35357 --experimental-keystone-auth-file=/etc/kubernetes/security/keystone_auth_file --authorization-mode=ABAC --authorization-policy-file=/etc/kubernetes/security/policy_file.json --client-ca-file=/root/.kube/keys/ca.crt --tls-private-key-file=/root/.kube/keys/server.key --tls-cert-file=/root/.kube/keys/server.crt |
位于/root/.kube/目录下的config文件,是Kubernetes的默认配置文件本地kubectl默认也会根据该文件执行操作,该文件一般内容如下
1 | apiVersion: v1 |
其中server字段填写的是api-server的ip地址和端口。
其中/root/.kube/下需要手打创建keys文件夹,下面存放openssl生成的证书文件。