2025 06 22
2025-06-22¶
k8s CSR(Certificate Signing Requests)¶
참고: https://velog.io/@gadian88/Certificate-Signing-Requests-CSR 참고: https://blog.naver.com/kmk1030/223007606920
- CSR
CSR: 디지털 신분증을 만들기 위한 신청서 (공개키와 정보, 도메인 등)- 나 - 회사에 입사하고 싶어요 (CSR 생성)
- 회사 - 신청서 보니 괜찮네요. 채용합니다 (CA가 서명하여 인증서 발급)
- CSR 안에는 다음 항목이 들어있음
- 이름
- 조직/국가
- 공개키
- 사용 목적
- CSR은 비공개키로 서명되어 있음.
- 흐름
- 서버에서 개인키/공개키 생성
- CSR 생성 (공개키 + 정보포함, 개인키로 서명)
- CA에서 CSR 받고 정보확인하여 인증서에 서명
- 서버가 서명된 인증서 받음
-
실습
-
개인키 생성
-
CSR 생성
$ openssl req -new -key myuser.key -out myuser.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:KO State or Province Name (full name) [Some-State]:kyeongki Locality Name (eg, city) []:seongnam Organization Name (eg, company) [Internet Widgits Pty Ltd]:joelonsw Organizational Unit Name (eg, section) []:joelonsw Common Name (e.g. server FQDN or YOUR name) []:joelonsw Email Address []:joelonsw Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:kk String too short, must be at least 4 bytes long A challenge password []:123sjsj An optional company name []:joelonsw -
생성한 CSR 파일 base64 인코딩
-
kubernetes에서 CertificateSigningRequest Manifest 작성, apply
apiVersion: certificates.k8s.io/v1 kind: CertificateSigningRequest metadata: name: myuser spec: request: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0... signerName: kubernetes.io/kube-apiserver-client # Certificates By API Server, Never auto-approve by kube-controller-manager expirationSeconds: 86400 usages: - client auth -
인증서 서명 요청 승인
-
Role 생성 및 Role 바인딩
- 해당 사용자가 쿠버 클러스터에 접근할 수 있도록 Role 및 Role 바인딩 필요
- Role
- RoleBinding
-
kubeconfig 추가
- 새로운 credential 추가 (myuser라는 이름의 사용자 자격증명을 kubeconfig에 등록)
- context 추가 (어떤 클러스터와 어떤 사용자 정보를 쓸지 묶어서 저장)
- 현재 사용할 컨텍스트 지정
-
테스트
-
- 파일
.csrvs 쿠버 오브젝트 CSR.csr: openssl 에서 쓰는 PKI 인증서 신청 파일CertificateSigningRequest: 쿠버에서 CSR을 리소스로 만든 것
k8s DNS¶
참고: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/
- Service
my-svc.my-namespace-svc.cluster-domain.example: 서비스의 ClusterIP 주소
- Pod
172-17-0-3.default.pod.cluster.local- nslookup에는 이걸 사용해도 됨:
172-17-0-3.default