CertificateSigningRequest
- Certificates API는 Kubernetes API의 클라이언트가 X.509를 요청하고 획득 할 수 있도록 프로그래밍 방식의 인터페이스를 제공하여 X.509 자격 증명 프로비저닝을 자동화할 수 있습니다.
출처: https://kubernetes.io/docs/reference/access-authn-authz/certificate-signing-requests/
- k8s api server와 통신하기 위해서 3가지 방법을 주로 사용해왔었다.
- kubernetes 의 ca파일을 사용
- certmanager 사용
- csr 사용
- 기존에 csr의 v1beta1버전을 사용하다 deprecated 된다는 메세지를 보고 v1으로 업그레이드 하기로 했다.
CSR v1 업그레이드 시 생기는 문제
- 기존의 v1beta1는 signer가 kubernetes.io/legacy-unknown 여서 따로 뭔가를 지정할 필요가 없었지만 v1에서는 signerName이 spec에 생겼고 kubernetes.io/legacy-unknown는 사용금지당했다. (v1버전부터 금지)
해결
- 나는 ["key encipherment", "digital signature", "server auth"] 를 사용해야 했으므로 signerName을 kubernetes.io/kubelet-serving로 사용해야 했다.
- 하지만 kubernetes.io/kubelet-serving의 organizations은 system:nodes
- 기존의 v1beta1에서 따로 organizations을 지정하지 않았기 때문에 organizations 에러가 뜨는 상황
- CN에서 organizations을 system:nodes를 주고 해결했다.