kubeadm으로 관리하기 인증서 관리 - 02 (인증서갱신)
[자동 인증서 갱신]
kubeadm 이 control plane을 upgrade를 하게 되면 모든 인증서를 갱신하게 된다.
이는 kubernetes 의 버전 업그레이드는 최소 1년에 한 번 이상은 수행한다는 전제하에 이렇게 설계되었으며, 이를 잘 따르게 되면 인증서를 따로 업그레이드해야 하는 수고는 없어지게 된다.
인증서 갱신에 대해서 자동으로 upgrade 를 수행하지 않을 경우 --certificate-renewal=false를kubeadm upgrade apply 또는 kubeadm upgrade node와 함께 사용하여 기본 동작이 수행되지 않도록 할 수 있다.
!! kubeadm 1.17 이전 버전에서 kubeadm upgrade node 명령에서 --certificate-renuwal 기본값이 false 인 버그 "https://github.com/kubernetes/kubeadm/issues/1818"가 있음 1.17 이하 버전에서는 --certificate-renewal=true를 명시적으로 설정해야 한다.
[수동 인증서 갱신]
kubeadm cert renew 명령어를 통해서 인증서를 언제든지 수동갱신할수가 있다.
해당 명령어는 /etc/kubernetes/pki 에 저장된 CA 인증서 및 key 파일을 사용하여 갱신을 수행하게 된다.
해당 명령어를 실행 한 후 control plane pod 를 재시작해야 하며, 해당 pod 는 static pod 이기에 "kubectl" 명령어를 통해서는 재시작이 안된다. static pod 를 다시 시작하려면 /etc/kubernetes/manifests 에 static pod 의 yaml 을 제거하고 20초를 기다리면 된다. (KubeletConfiguration struct 의 fileCheckFrequency 값 참조)
[kubernetes 인증서 api 를 통한 인증서 갱신]
kubernetes 인증기관은 동작하지 않는다. 외부서명자 - cert-manager 혹은 빌드인 서명자 - kube-controller-manager 의 일부기능을 사용해야한다.
빌트인 서명자를 활성화 하려면 --cluster-signing-cert-file 와 --cluster-signing-key-file 플래그를 정의해야 한다.
kubeadm 설정파일에서는 아래와 같은 설정으로 정의가 가능하다.
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
controllerManager:
extraArgs:
cluster-signing-cert-file: /etc/kubernetes/pki/ca.crt
cluster-signing-key-file: /etc/kubernetes/pki/ca.key
kuberntes api를 통해 인증서 서명 요청(CSR)을 작성하려면 아래의 링크를 참조
Certificate Signing Requests
FEATURE STATE: Kubernetes v1.19 [stable] The Certificates API enables automation of X.509 credential provisioning by providing a programmatic interface for clients of the Kubernetes API to request and obtain X.509 certificates from a Certificate Authority
kubernetes.io