Update k8s cluster certificate
Kubernetesを構成する各コンポーネントも内部証明書で通信する。必要に応じて、この証明書をupdateしなければならない場合は、以下の手順で行う.
1.まず、各master nodeとworker nodeの既存証明書を削除する.
# ssh to master node
# rm -rf /opt/kubernetes/pki
# rm -rf /etc/kubernetes/pki
2.証明書を再作成する.
前にインストールを行ったディレクトリでcert.yamlを実行し、証明書をupdateする。まず.
openssl.confで、追加するipやdnsをIP.Nに追加して書き込む.
# vi cubescripts/roles/sslcert/openssl.conf.j2
[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 = kubernetes
DNS.2 = kubernetes.default
DNS.3 = kubernetes.default.svc
DNS.4 = kubernetes.default.svc.{{ cluster_name }}
DNS.5 = {{ domain_name }}
DNS.6 = *.{{ domain_name }}
DNS.7 = localhost
{% if cloud_provider == 'azure' or cloud_provider == 'aws' -%}
DNS.8 = {{ lb_ip }}
{% endif -%}
IP.1 = 127.0.0.1
IP.2 = {{ kubernetes_service_ip }}
{% if cloud_provider == 'baremetal' or cloud_provider == 'rovius' or cloud_provider == 'virtualbox' -%}
IP.3 = {{ lb_ip }}
IP.4 = 14.52.93.202
{% endif -%}
# ansible-playbook -i inventories/inventory -u {userId} cert.yaml
3.k8sで作成されたdefault tokenをすべて削除する.
# kubectl get secrets --all-namespaces | grep default-token | awk '{print $1, $2}' | xargs -n 2 kubectl delete secrets -n
4.Worker node - > Master Node順にrebootingする.
# reboot