K8s 인증서 갱신

Kubernetes 클러스터 인증서가 만료되면 클러스터 전체가 작동을 멈출 수 있습니다. KIWI를 사용하면 인증서 만료 전에 미리 알림을 받고, 간단한 클릭으로 갱신할 수 있습니다.
인증서 만료의 심각성
인증서가 만료되면 kubectl 명령이 실패하고, Pod 스케줄링이 중단되며, 최악의 경우 클러스터 전체에 접근할 수 없게 됩니다. 정기적인 인증서 관리가 필수입니다.
인증서 개요
Kubernetes 클러스터는 컴포넌트 간 안전한 통신을 위해 여러 종류의 인증서를 사용합니다.
주요 인증서
- CA 인증서 (유효 기간 10년): 클러스터의 루트 인증 기관 인증서입니다. 다른 모든 인증서의 서명에 사용되므로 가장 중요하며, 10년의 긴 유효 기간을 가집니다.
- API Server 인증서 (유효 기간 1년): API 서버의 TLS 통신에 사용됩니다. 만료 시 kubectl 명령과 모든 API 호출이 실패합니다.
- Controller Manager 인증서 (유효 기간 1년): 컨트롤러 매니저가 API 서버와 통신할 때 사용합니다. 만료 시 Deployment, ReplicaSet 등의 컨트롤러가 작동하지 않습니다.
- Scheduler 인증서 (유효 기간 1년): 스케줄러가 API 서버와 통신할 때 사용합니다. 만료 시 새로운 Pod가 노드에 스케줄링되지 않습니다.
- Kubelet 인증서 (유효 기간 1년): 각 노드의 kubelet이 마스터와 통신할 때 사용합니다. 만료 시 해당 노드가 NotReady 상태가 됩니다.
- etcd 인증서 (유효 기간 1년): etcd 클러스터 내 노드 간 통신에 사용됩니다. 만료 시 클러스터 데이터에 접근할 수 없어 전체 클러스터가 마비됩니다.
인증서 만료의 영향
인증서 종류에 따라 영향이 다릅니다. 모든 인증서가 만료되면 클러스터가 완전히 마비됩니다.
- API Server (매우 심각): 만료 시 kubectl 명령이 실패하고 모든 관리 작업이 불가능해집니다 .
- Kubelet (심각): 만료 시 노드-마스터 통신이 실패하고 Pod 스케줄링이 불가능해집니다 .
- etcd (매우 심각): 만료 시 클러스터 데이터에 접근할 수 없게 됩니다 .
미리 대비하세요
인증서가 만료되기 30일 전에 갱신 계획을 세우는 것이 좋습니다. KIWI의 알림 기능을 활용하세요.
사전 요구사항
- Kubernetes 클러스터가 KIWI에 등록되어 있어야 합니다 .
- 클러스터 마스터 노드에 SSH 접근이 설정되어 있어야 합니다 .
권한 안내: 이 기능에 접근할 수 없다면 기관 관리자에게 권한을 요청하세요.
인증서 상태 확인
Step 1: 런타임 환경 페이지 이동
- [런타임 환경] 페이지에서 대상 클러스터를 선택합니다 .
- 클러스터 상세 페이지로 이동합니다 .
Step 2: 인증서 탭 확인
- 인증서 탭을 클릭합니다 .
- 모든 인증서의 만료 상태가 표시됩니다 .
인증서 상태 표시
- 정상: 인증서 만료까지 30일 이상 남은 상태입니다. 특별한 조치가 필요하지 않지만, 정기적으로 상태를 모니터링하세요.
- 경고: 인증서 만료까지 30일 이내로 남은 상태입니다. 갱신 일정을 계획하고, 유지보수 창을 예약하세요.
- 위험: 인증서 만료까지 7일 이내로 남은 상태입니다. 즉시 갱신 작업을 수행해야 합니다. 방치하면 클러스터 장애가 발생합니다.
- 만료됨: 인증서가 이미 만료된 상태입니다. 클러스터 기능에 영향이 있으므로 긴급하게 갱신 작업을 수행하세요.
인증서 상세 정보
각 인증서를 클릭하면 상세 정보를 확인할 수 있습니다:
- 발급일: 인증서 발급 날짜
- 만료일: 인증서 만료 날짜
- 남은 기간: 만료까지 남은 일수
- Subject: 인증서 주체
- Issuer: 인증서 발급자
인증서 갱신
자동 갱신 (권장)
KIWI를 통해 모든 인증서를 한 번에 갱신합니다.
Step 1: 갱신 시작
- 인증서 탭에서 인증서 갱신 버튼을 클릭합니다 .
- 갱신 확인 대화상자가 표시됩니다 .
Step 2: 갱신 옵션 확인
- 모든 인증서 (기본 선택): 클러스터의 모든 인증서를 한 번에 갱신합니다. 대부분의 경우 이 옵션을 사용하는 것이 안전하고 편리합니다.
- 선택적 갱신: 특정 인증서만 선택하여 갱신합니다. 특별한 이유가 있는 경우에만 사용하세요. 일부 인증서만 갱신하면 버전 불일치 문제가 발생할 수 있습니다.
- 컴포넌트 재시작 (기본 활성화): 인증서 갱신 후 관련 컴포넌트(kubelet, API 서버 등)를 자동으로 재시작합니다. 비활성화하면 수동으로 재시작해야 새 인증서가 적용됩니다.
Step 3: 갱신 실행
- 갱신 버튼을 클릭합니다 .
- KIWI가 마스터 노드에 SSH로 접속합니다 .
- 갱신 진행 상황이 표시됩니다:
- 기존 인증서 백업
- 새 인증서 생성
- 컴포넌트 재시작
- 연결 확인
Step 4: 갱신 완료 확인
- "인증서가 갱신되었습니다" 메시지 확인
- 인증서 목록에서 새 만료일 확인
- 클러스터 연결 상태 확인
선택적 갱신
특정 인증서만 갱신하는 경우:
- 선택적 갱신 옵션 선택
- 갱신할 인증서 체크박스 선택
- 갱신 실행
갱신 후 확인
클러스터 상태 확인
갱신 후 다음 항목을 확인합니다:
- 노드 상태: 모든 노드 Ready 상태
- Pod 상태: 시스템 Pod 정상 실행
- API 접근: kubectl 명령 정상 작동
KIWI에서 확인
- 런타임 환경 페이지에서 클러스터 상태 확인
- 인증서 탭에서 새 만료일 확인
- 서비스 배포/운영 기능 테스트
수동 갱신
KIWI 자동 갱신이 실패하거나 직접 갱신이 필요한 경우:
kubeadm 클러스터
마스터 노드에서 SSH로 실행:
# 인증서 만료 확인
kubeadm certs check-expiration
# 모든 인증서 갱신
kubeadm certs renew all
# 컴포넌트 재시작
systemctl restart kubelet
# 컨트롤 플레인 Pod 재시작 (static pod 사용 시)
# Pod manifest 파일을 잠시 이동하면 자동 재시작됨
개별 인증서 갱신
# 특정 인증서만 갱신
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 연결 실패가 발생하는 경우: KIWI가 마스터 노드에 SSH로 접속할 수 없습니다. 런타임 환경 설정에서 SSH 연결 정보(호스트, 포트, 사용자, 비밀번호 또는 SSH 키)가 올바른지 확인하고, 방화벽 설정을 점검하세요.
- 권한 오류가 발생하는 경우: SSH 사용자에게 인증서 갱신을 위한 sudo 권한이 없습니다. 해당 사용자가
kubeadm certs renew명령을 sudo로 실행할 수 있는지 확인하세요. - kubeadm을 찾을 수 없는 경우: kubeadm으로 설치되지 않은 클러스터입니다. 수동 갱신 절차를 따르거나, 클러스터 설치 문서를 참조하세요.
갱신 후 문제
- API 연결이 실패하는 경우: 인증서는 갱신되었지만 컴포넌트가 재시작되지 않아 이전 인증서를 사용 중입니다. 마스터 노드에서
systemctl restart kubelet명령을 실행하고, 컨트롤 플레인 Pod가 재시작되었는지 확인하세요. - 노드가 NotReady 상태인 경우: 해당 노드의 kubelet이 새 인증서를 로드하지 못했습니다. 문제가 있는 노드에 SSH로 접속하여
systemctl restart kubelet명령을 실행하세요. - etcd 연결이 실패하는 경우: etcd 인증서 문제로 데이터 저장소에 접근할 수 없습니다. etcd Pod를 재시작하거나, etcd 인증서가 올바르게 갱신되었는지 확인하세요.
긴급 복구
인증서 만료로 클러스터 접근이 불가한 경우:
- 마스터 노드에 직접 SSH 접속
- 수동으로 인증서 갱신
- 컴포넌트 재시작
- KIWI에서 클러스터 재연결
자동 알림 설정
인증서 만료 알림을 받도록 설정합니다.
알림 설정
- 런타임 환경 > 설정 탭으로 이동
- 알림 설정 섹션에서:
- 인증서 만료 알림: 활성화
- 알림 시기: 30일/14일/7일 전
- 알림 방법: 이메일/Slack
권장 알림 일정
- 30일 전: 갱신 계획을 수립합니다. 담당자를 지정하고, 갱신 작업에 필요한 사전 준비(etcd 백업, 테스트 환경 검증 등)를 진행하세요.
- 14일 전: 구체적인 갱신 작업 일정을 예약합니다. 서비스 영향이 최소화되는 유지보수 창을 선택하고, 관련 팀에 공지하세요.
- 7일 전: 아직 갱신하지 않았다면 즉시 갱신 작업을 수행하세요. 이 시점 이후로는 예기치 않은 클러스터 장애 위험이 높아집니다.
베스트 프랙티스
인증서 관리를 위한 검증된 권장 사항입니다.
예방적 관리
인증서 관리 체크리스트
아래 항목을 정기적으로 확인하면 인증서 만료로 인한 장애를 예방할 수 있습니다.
- 정기 점검: 매월 인증서 상태를 확인합니다 .
- 알림 설정: 30일, 14일, 7일 전 알림을 설정합니다 .
- 문서화: 갱신 이력과 담당자를 기록합니다 .
- 테스트: 갱신 절차를 테스트 환경에서 먼저 테스트합니다 .
갱신 계획
갱신 작업은 계획적으로 진행해야 합니다.
- 유지보수 창: 트래픽이 적은 시간대(새벽 등)를 선택합니다 .
- 백업: 갱신 전에 반드시 etcd를 백업합니다 .
- 롤백 계획: 실패 시 복구 절차를 미리 준비합니다 .
- 검증: 갱신 후 모든 컴포넌트가 정상 동작하는지 테스트합니다 .
보안 고려사항
인증서는 클러스터 보안의 핵심입니다.
- CA 보호: CA 인증서와 키는 안전한 장소에 보관합니다 .
- 키 순환: 정기적으로 인증서를 갱신하여 보안을 유지합니다 .
- 접근 제한: 인증서 파일에 대한 접근 권한을 최소화합니다 .
- 감사: 인증서 관련 모든 작업을 로깅합니다 .
CA 인증서 주의
CA 인증서가 유출되면 클러스터 전체가 위험에 노출됩니다. CA 인증서는 특히 주의하여 관리하세요.
관련 가이드
- 런타임 환경 등록 - K8s 클러스터 등록
- K8s RBAC 관리 - ServiceAccount 관리
- 백업 복원 - 클러스터 복구