Generate the necessary certificates
Kubeadm 은 다양한 인증서를 생성하고, 관리한다.
인증서는 Default 로 /etc/kubenetes/pki 에 저장된다.
kubeadm generates certificate and private key pairs for different purposes. Certificates are stored by default in /etc/kubernetes/pki. This directory is configurable.
- CA certificate (ca.crt) Private key (ca.key)
- API Server certificate (apiserver.crt) ca.crt 를 사용하며, Private Key (apiserver.key)
ㄴ server certificate 는 (x509.ExtKeyUsageServerAuth) 방식이여야 함
ㄴ 아래의 항목에 대한 이름을 포함
ㄴㄴ kubernetes Service's 의 Cluster IP ( 젓번째 CIDR IP 가 10.96.0.1 이라면, Subnet 은 10.96.0.0/12 )
ㄴㄴ Kubernetes DNS names ( kubernetes.default.svc.cluster.local if --service-dns-domain is cluster.local, kubernetes.default.svc, kubernetes.default, kubernetes )
ㄴㄴ Node Name
ㄴㄴ --apiserver-advertise-address
ㄴㄴ 사용자가 추가 지정한 이름 (extra altnames)
- 개인 키(apiser-kuberlet-client.key)로 CA로 ca.crt를 사용하여 kubelet에 안전하게 연결(apiser-kubelet-client.crt)하는 API 서버의 클라이언트 인증서. 인증서는 다음 사항을 충족해야 한다.
ㄴ client certificate (x509.ExtKeyUsageClientAuth)
ㄴ system:masters organization
- ServiceAccount Tokens 에 signing 하기위한 Private key 는 sa.pub, Public Key 는 sa.pub
- Front Proxy 를 위한 CA 는 front-proxy-ca.crt front-proxy-ca.key
- front proxy client 를 위한 인증서는 key (front-proxy-client.crt, front-proxy-client.key) front-proxy-ca.crt는CA를사용해서생성한다.
유의사항
- 기존의 인증서가 위의 내용과 동일한 파일로 존제한다면, 새로운 인증서를 생성하지 않고, 기존의 인증서를 사용할수 있다.
- CA 의 경우 다른 모든 인증서와 kubeconfig 파일이 이미 존제할때에 ca.crt 은 기존것을 사용할수 있지만, ca.key 파일은 기존것을 사용할수 없다. kubeadm은 이런경우 ExternalCA 를 자동으로 활성화하게 된다. 이는 "csrsignercontroller" 를 의미하며, "controller-manager" 가 시작되지 않는다.
- kubeadm 의 ExternalCA 모드로 실행되게 된다면, 인증서를 생성하지 않는다. 필요한 모든 인증서는 외부에서 제공이 되어야 한다.
- --dry-run 모드로 kubeadm 이 수행되는경우 인증서들은 임시 디렉토리에 기록되며, 저장된다.
- kubeadm 은 모든 인증서 생성을 kubeadm alpha phase 로 개별적으로 호출이 가능하다.