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

results matching ""

    No results matching ""