본문으로 건너뛰기

K8s 인증서 갱신

런타임 환경 - 인증서 관리 탭

Kubernetes 클러스터 인증서가 만료되면 클러스터 전체가 작동을 멈출 수 있습니다. KIOPS를 사용하면 인증서 만료 전에 미리 확인하고, 간단한 클릭으로 갱신할 수 있습니다.

인증서 만료의 심각성

인증서가 만료되면 kubectl 명령이 실패하고, Pod 스케줄링이 중단되며, 최악의 경우 클러스터 전체에 접근할 수 없게 됩니다. 정기적인 인증서 관리가 필수입니다.

인증서 관리 탭 위치

KIOPS의 인증서 관리 화면은 [런타임 환경] > Kubernetes 클러스터 선택 > 인증서 관리 탭에 위치합니다.

  1. 좌측 메뉴에서 [런타임 환경] 으로 이동합니다.
  2. 관리할 Kubernetes 클러스터를 선택하여 상세 화면으로 진입합니다.
  3. 상단 탭 중 인증서 관리 탭을 클릭합니다.

컴포넌트 파일은 services/operate-modal/tabs/k8s/ 경로에 위치하지만, 실제 사용 위치는 런타임 환경의 Kubernetes 클러스터 상세 화면(InfraKubernetesSetting)입니다.


인증서 개요

Kubernetes 클러스터는 컴포넌트 간 안전한 통신을 위해 여러 종류의 인증서를 사용합니다. KIOPS는 kubeadm certs check-expiration 결과를 기반으로 다음 13개의 인증서를 표시합니다.

kubeadm으로 갱신 가능한 13개 인증서

인증서설명
admin.confkubeadm으로 생성된 cluster admin kubeconfig
apiserverAPI 서버 TLS 인증서
apiserver-etcd-clientAPI 서버가 etcd에 접속할 때 사용
apiserver-kubelet-clientAPI 서버가 kubelet에 접속할 때 사용
controller-manager.conf컨트롤러 매니저의 kubeconfig
front-proxy-clientfront-proxy 클라이언트 인증서
scheduler.conf스케줄러의 kubeconfig
etcd/caetcd 클러스터의 CA 인증서
etcd/serveretcd 서버 인증서
etcd/peeretcd 노드 간 통신 인증서
etcd/healthcheck-clientetcd 헬스체크용 클라이언트 인증서
super-admin.confsuper-admin kubeconfig (Kubernetes 1.29+)
kubelet.confkubelet의 kubeconfig
CA 인증서는 별도 표시

CA 인증서 (예: cluster CA, etcd CA root)는 kubeadm certs renew 명령으로 갱신되지 않습니다. CA 인증서는 약 10년의 유효기간을 가지며, 갱신이 필요한 경우 클러스터 재구성에 가까운 작업이 필요합니다. KIOPS 인증서 탭에서는 CA 인증서가 별도 영역으로 표시되며, 만료일만 확인할 수 있고 갱신 버튼은 제공되지 않습니다.


사전 요구사항

  • Kubernetes 클러스터가 KIOPS에 등록되어 있어야 합니다.
  • 클러스터 마스터 노드에 SSH 접근이 설정되어 있어야 합니다.
  • 사용자에게 인증서 관리 권한 (can_manage_certificates)이 부여되어 있어야 합니다.

권한 안내: 권한이 없으면 인증서 탭의 갱신 버튼이 비활성화됩니다. 기관 관리자에게 권한을 요청하세요.


인증서 상태 확인

Step 1: 인증서 관리 탭 진입

  1. [런타임 환경] > Kubernetes 클러스터 선택 > 인증서 관리 탭으로 이동합니다.
  2. 백엔드가 마스터 노드에서 kubeadm certs check-expiration 명령을 실행합니다.
  3. 모든 인증서의 만료 상태가 표시됩니다.

Step 2: 통계 카드 확인

화면 상단에 다음 4개의 통계 카드 가 표시됩니다.

  • 전체: 추적 중인 전체 인증서 수
  • 정상: 만료까지 90일 이상 남은 인증서 수
  • 주의·위험: 만료까지 90일 이하 남은 인증서 수 (warning 또는 error 상태)
  • 만료됨: 이미 만료된 인증서 수

Step 3: 인증서 상태 표시

각 인증서 행에는 Progress 막대로 남은 기간이 시각화됩니다. 색상 임계값은 다음과 같습니다.

  • 정상 (녹색): 만료까지 90일 초과
  • 주의 (노랑/warning): 만료까지 90일 이하
  • 위험 (빨강/error): 만료까지 30일 이하
  • 만료됨: 이미 만료된 상태

Step 4: 원본 출력 확인

화면 하단에서 kubeadm certs check-expiration 명령의 원본 출력 을 그대로 확인할 수 있습니다. 디버깅이나 정확한 확인이 필요할 때 활용하세요.


인증서 갱신

Step 1: 유효기간 선택

화면 상단 드롭다운에서 새 인증서의 유효기간 을 선택합니다.

  • 1년 (기본)
  • 2년
  • 3년
  • 5년
  • 10년
유효기간 선택의 영향

선택한 유효기간은 kubeadm certs renew 실행 시 적용됩니다. 일반적으로 1년이 안전하며, 운영 부담을 줄이려면 더 긴 기간을 선택할 수 있습니다.

Step 2: 갱신 방식 선택

다음 두 가지 방식 중 하나를 선택합니다.

  • 모든 인증서 갱신 버튼: 13개 인증서를 일괄 갱신합니다. 대부분의 경우 이 방식을 사용하는 것이 안전합니다.
  • 각 행의 개별 갱신 버튼: 특정 인증서 하나만 선택적으로 갱신합니다.
UI 미제공 항목

"선택적 갱신 체크박스"와 "컴포넌트 재시작 토글"은 제공되지 않습니다. 갱신 후 kubelet은 자동으로 재시작되며, 컨트롤 플레인 정적 Pod는 인증서 변경을 감지하여 자동으로 다시 로드됩니다.

Step 3: 갱신 실행

  1. 갱신 버튼을 클릭하면 확인 대화상자가 표시됩니다.
  2. 갱신 을 클릭하면 KIOPS가 마스터 노드에 SSH로 접속하여 kubeadm certs renew 명령을 실행합니다.
  3. 진행 상태가 표시되며, 완료 후 새 만료일이 인증서 목록에 반영됩니다.

Step 4: 갱신 완료 확인

  1. "인증서가 갱신되었습니다" 메시지가 표시됩니다.
  2. 인증서 목록에서 새 만료일을 확인합니다.
  3. 통계 카드의 "주의·위험"/"만료됨" 수치가 0으로 변경되었는지 확인합니다.

HA 클러스터에서의 갱신

Control Plane 노드가 여러 개인 HA 클러스터에서는 모든 Control Plane 노드에서 인증서를 갱신 해야 합니다.

  1. 첫 번째 Control Plane 노드에서 KIOPS 인증서 갱신을 실행합니다.
  2. 다른 Control Plane 노드에 SSH로 접속하여 kubeadm certs renew all 명령을 수동으로 실행합니다.
  3. 각 노드에서 kubelet이 자동 재시작되었는지 확인합니다.
HA 환경 주의사항

한 노드만 갱신하고 다른 노드를 갱신하지 않으면 API 호출이 노드에 따라 성공/실패가 갈리는 혼란이 발생합니다. 가능하면 짧은 시간 안에 모든 Control Plane을 갱신하세요.


갱신 후 확인

클러스터 상태 확인

갱신 후 다음 항목을 확인합니다:

  1. 노드 상태: 모든 노드 Ready 상태
  2. Pod 상태: 시스템 Pod 정상 실행
  3. API 접근: kubectl 명령 정상 작동

KIOPS에서 확인

  1. 인증서 탭에서 새 만료일 확인
  2. 통계 카드 값이 모두 정상으로 변경되었는지 확인
  3. 서비스 배포/운영 기능 테스트

수동 갱신

KIOPS 자동 갱신이 실패하거나 직접 갱신이 필요한 경우:

kubeadm 클러스터

마스터 노드에서 SSH로 실행:

# 인증서 만료 확인
kubeadm certs check-expiration

# 모든 인증서 갱신
kubeadm certs renew all

# 컴포넌트 재시작 (대부분 자동 재시작되지만 명시적으로 수행 가능)
systemctl restart kubelet

개별 인증서 갱신

# 특정 인증서만 갱신
kubeadm certs renew apiserver
kubeadm certs renew apiserver-kubelet-client
kubeadm certs renew front-proxy-client

kubeconfig 파일 갱신

# admin.conf 갱신
kubeadm certs renew admin.conf

# 다른 kubeconfig 갱신
kubeadm certs renew controller-manager.conf
kubeadm certs renew scheduler.conf

문제 해결

갱신 실패

  • SSH 연결 실패가 발생하는 경우: KIOPS가 마스터 노드에 SSH로 접속할 수 없습니다. 런타임 환경 설정에서 SSH 연결 정보(호스트, 포트, 사용자, 비밀번호 또는 SSH 키)가 올바른지 확인하고, 방화벽 설정을 점검하세요.
  • 권한 오류가 발생하는 경우: SSH 사용자에게 인증서 갱신을 위한 sudo 권한이 없습니다. 해당 사용자가 kubeadm certs renew 명령을 sudo로 실행할 수 있는지 확인하세요.
  • kubeadm을 찾을 수 없는 경우: kubeadm으로 설치되지 않은 클러스터입니다. 수동 갱신 절차를 따르거나, 클러스터 설치 문서를 참조하세요.
  • 권한 검증 실패: can_manage_certificates 권한이 없으면 갱신 버튼이 비활성화됩니다. 기관 관리자에게 권한을 요청하세요.

갱신 후 문제

  • API 연결이 실패하는 경우: 컨트롤 플레인 정적 Pod가 새 인증서를 로드하지 못한 상태일 수 있습니다. 마스터 노드에서 systemctl restart kubelet 명령을 실행하고, 잠시 후 다시 시도하세요.
  • 노드가 NotReady 상태인 경우: 해당 노드의 kubelet이 새 인증서를 로드하지 못했습니다. 문제가 있는 노드에 SSH로 접속하여 systemctl restart kubelet 명령을 실행하세요.
  • etcd 연결이 실패하는 경우: etcd 인증서 문제로 데이터 저장소에 접근할 수 없습니다. etcd Pod를 재시작하거나, etcd 인증서가 올바르게 갱신되었는지 확인하세요.

베스트 프랙티스

인증서 관리를 위한 검증된 권장 사항입니다.

예방적 관리

인증서 관리 체크리스트

아래 항목을 정기적으로 확인하면 인증서 만료로 인한 장애를 예방할 수 있습니다.

  1. 정기 점검: 매월 인증서 탭에서 통계 카드를 확인합니다.
  2. 임계값 활용: "주의·위험" (90일 이하) 단계에서 갱신 일정을 계획합니다.
  3. 문서화: 갱신 이력과 담당자를 기록합니다.
  4. 테스트: 갱신 절차를 테스트 환경에서 먼저 검증합니다.

갱신 계획

갱신 작업은 계획적으로 진행해야 합니다.

  1. 유지보수 창: 트래픽이 적은 시간대(새벽 등)를 선택합니다.
  2. 백업: 갱신 전에 반드시 etcd를 백업합니다.
  3. HA 노드 일괄 갱신: HA 클러스터는 모든 Control Plane 노드를 짧은 시간 안에 갱신합니다.
  4. 검증: 갱신 후 모든 컴포넌트가 정상 동작하는지 테스트합니다.

보안 고려사항

인증서는 클러스터 보안의 핵심입니다.

  1. CA 보호: CA 인증서와 키는 안전한 장소에 보관합니다.
  2. 키 순환: 정기적으로 인증서를 갱신하여 보안을 유지합니다.
  3. 접근 제한: 인증서 파일에 대한 접근 권한을 최소화합니다.
  4. 감사: 인증서 관련 모든 작업을 로깅합니다.
CA 인증서 주의

CA 인증서가 유출되면 클러스터 전체가 위험에 노출됩니다. CA 인증서는 특히 주의하여 관리하세요.


관련 가이드