전공공부
[K8S - CKA] Certification API 본문
모든 증명서에는 유효기간이 있습니다. 기간이 지날 때마다 ca 및 sigining request를 직접 ca 서버에 요청해야 합니다. 그런데 이는 전에 해봤듯이 매우 귀찮고 시간이 많이 가는 작업입니다. 그렇기 때문에 csr이라는 쿠버네티스의 자체 요청 파일을 만들고 Master 노드의 Contoller Manager가 csr 요청에 따른 작업을 처리 한 후 저희는 승인 비승인 여부만 결정하면 되는데요 이를 자세히 알아봅시다.
1. CSR이란?
CSR은 공개 키 기반의 암호화 시스템에서 인증 기관에게 인증서를 발급해 달라고 요청하는 데이터 구조입니다. 즉, 클라이언트나 사용자가 자신의 공개 키를 제공하고, 이를 기반으로 인증서를 발급받기 위해 사용됩니다.
2. 쿠버네티스에서의 CSR
쿠버네티스에서 CSR은 주로 노드나 사용자가 클러스터 내에서 신원을 증명하기 위해 사용됩니다. 각 노드가 클러스터에 참여할 때나 특정 사용자가 클러스터 자원을 요청할 때, CSR이 생성되고 이를 통해 쿠버네티스 마스터가 해당 개체의 인증서를 서명하게 됩니다.
3. CSR의 생성
CSR은 주로 openssl 명령어를 사용하여 생성됩니다. 아래는 CSR을 생성하는 명령어의 예시입니다.
openssl genrsa -out jane.key 2048
openssl req -new -key jane.key -subj "/CN=node" -out jane.csr
cat jane.csr | base64
이 명령어는 node.key라는 개인 키를 사용하여 node.csr 파일을 생성하며, Subject를 "/CN=node"로 설정합니다.
그리고, 위 명령어로 생성된 csr 파일의 base64 encoding data를 아래 csr 생성 객체에 넣어서 만듭니다.
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
name: csr-test
spec:
groups:
- system:nodes
- system:authenticated
request: <openssl-csr-base64-data>
signerName: kubernetes.io/kube-apiserver-client-kubelet
usages:
- client auth
4. CSR의 제출
CSR이 생성되면 해당 CSR을 쿠버네티스 클러스터에 제출해야 합니다. 이를 위해 kubectl certificate approve 명령어를 사용합니다.
kubectl certificate approve <csr-name>
여기서 node-csr-name은 실제 CSR을 생성할 때 사용한 CSR의 이름입니다.
5. CSR의 거부
만약 CSR을 거부하고자 할 때는 kubectl certificate deny 명령어를 사용합니다.
kubectl certificate deny <csr-name>
6. CSR을 통한 인증서의 발급
CSR이 승인되면 쿠버네티스에서는 해당 CSR을 기반으로 인증서를 발급합니다. 이 인증서는 클러스터 내에서 해당 개체의 신원을 증명하는 데 사용됩니다.
'Study > K8S' 카테고리의 다른 글
[K8S - CKA] API Groups (1) | 2024.01.08 |
---|---|
[K8S - CKA] CA KubeConfig (0) | 2024.01.07 |
[K8S - CKA] TLS in K8S (1) | 2023.12.17 |
[K8S - CKA] TLS - Basic (1) | 2023.12.10 |
[K8S - CKA] SECURITY PRIMITIVES (Deprecated) (0) | 2023.12.10 |