website/content/ko/docs/tasks/tls/certificate-rotation.md

78 lines
3.1 KiB
Markdown

---
title: Kubelet의 인증서 갱신 구성
content_type: task
---
<!-- overview -->
이 페이지는 kubelet에 대한 인증서 갱신을 활성화하고 구성하는 방법을 보여준다.
{{< feature-state for_k8s_version="v1.19" state="stable" >}}
## {{% heading "prerequisites" %}}
* 쿠버네티스 1.8.0 버전 혹은 그 이상의 버전이 요구됨
<!-- steps -->
## 개요
kubelet은 쿠버네티스 API 인증을 위해 인증서를 사용한다.
기본적으로 이러한 인증서는 1년 만기로 발급되므로
너무 자주 갱신할 필요는 없다.
쿠버네티스 1.8은 [kubelet 인증서
갱신](/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping/)을 포함하며,
이 기능은 현재 인증서의 만료 시한이 임박한 경우,
새로운 키를 자동으로 생성하고 쿠버네티스 API에서 새로운 인증서를 요청하는 베타 기능이다.
새로운 인증서를 사용할 수 있게 되면
쿠버네티스 API에 대한 연결을 인증하는데 사용된다.
## 클라이언트 인증서 갱신 활성화하기
`kubelet` 프로세스는 현재 사용 중인 인증서의 만료 시한이 다가옴에 따라
kubelet이 자동으로 새 인증서를 요청할지 여부를 제어하는
`--rotate-certificates` 인자를 허용한다.
`kube-controller-manager` 프로세스는 얼마나 오랜 기간 인증서가 유효한지를 제어하는
`--cluster-signing-duration` (1.19 이전은 `--experimental-cluster-signing-duration`)
인자를 허용한다.
## 인증서 갱신 구성에 대한 이해
kubelet이 시작할 때 부트 스트랩 (`--bootstrap-kubeconfig` 플래그를 사용)
을 구성하면 초기 인증서를 사용하여 쿠버네티스 API에 연결하고
인증서 서명 요청을 발행한다.
다음을 사용하여 인증서 서명 요청 상태를 볼 수 있다.
```sh
kubectl get csr
```
초기에 노드의 kubelet에서 인증서 서명 요청은 `Pending` 상태이다.
인증서 서명 요청이 특정 기준을 충족하면 컨트롤러 관리자가
자동으로 승인한 후 상태가 `Approved` 가 된다.
다음으로, 컨트롤러 관리자는
`--cluster-signing-duration` 파라미터에 의해 지정된 기간 동안
발행된 인증서에 서명하고
서명된 인증서는 인증서 서명 요청에 첨부된다.
kubelet은 쿠버네티스 API로 서명된 인증서를 가져와서
`--cert-dir`에 지정된 위치에 디스크에 기록한다.
그런 다음 kubelet은 쿠버네티스 API에 연결해서 새로운 인증서를 사용한다.
서명된 인증서의 만료가 다가오면 kubelet은 쿠버네티스 API를 사용하여
새로운 인증서 서명 요청을 자동으로 발행한다.
또한, 컨트롤러 관리자는 인증서 요청을 자동으로 승인하고
서명된 인증서를 인증서 서명 요청에 첨부한다.
kubelet은 쿠버네티스 API로 서명된 새로운 인증서를 가져와서 디스크에 쓴다.
그런 다음 새로운 인증서를 사용한 재연결을 위해서
가지고 있는 쿠버네티스 API로의 연결을 업데이트 한다.