Kubernetes 컨텍스트 스위칭 악몽이 끝났다
Source: Dev.to

여러 Kubernetes 클러스터를 매일 다루는 경우, 그 고통을 잘 알고 있을 겁니다. 프로덕션, 스테이징, 개발, 그리고 지난달에 누군가 띄운 그 무작위 테스트 클러스터—이 모든 것이 kubeconfig 파일에 존재하고, 클러스터 간 전환은 눈을 가린 채 미로를 헤매는 느낌이죠.
저도 지쳤습니다. 그래서 kubecfg 를 만들었습니다.
kubecfg란?
kubecfg는 kubeconfig 관리를 간소화해 주는 CLI 도구입니다. 다음을 할 수 있습니다:
- 추가: 사용자 정의 이름으로 새로운 클러스터 설정을 추가
- 목록: 모든 컨텍스트를 한눈에 보기
- 전환: 선택적 네임스페이스 지정과 함께 컨텍스트 전환
- 관리: 인터랙티브하게 네임스페이스 관리
- 이름 변경: 기억하기 쉬운 이름으로 컨텍스트 재명명
- 제거: 더 이상 필요 없는 컨텍스트 삭제
- 병합: 여러 kubeconfig 파일을 하나로 합치기
핵심 기능? 퍼지 검색을 지원하는 인터랙티브 피커. 긴 컨텍스트 이름을 복사‑붙여넣기 할 필요가 없습니다.
빠른 데모
네임스페이스와 함께 컨텍스트 전환
kubecfg use -n
이 명령은 컨텍스트를 위한 인터랙티브 피커를 연 뒤, 어떤 네임스페이스를 사용할지 물어봅니다. 두 선택이 한 흐름 안에서 이루어집니다.
Select context
minikube
▸ production-eks
staging-gke
dev-local
✓ production-eks
Select namespace
default
kube-system
▸ backend-services
frontend
monitoring
✓ backend-services
Switched to context 'production-eks' with namespace 'backend-services'
컨텍스트만 전환
kubecfg use production-eks
특정 네임스페이스와 함께 전환
kubecfg use production-eks -n backend-services
-n 플래그는 스마트합니다: 값을 주지 않으면 인터랙티브 선택을 열고, 값을 주면 바로 해당 네임스페이스를 사용합니다.
설치 방법
Homebrew (macOS)
brew tap kadirbelkuyu/tap
brew install kadirbelkuyu/tap/kubecfg
Go Install
go install github.com/kadirbelkuyu/kubecfg@latest
소스에서 직접
git clone https://github.com/kadirbelkuyu/kubecfg.git
cd kubecfg
go build -o kubecfg .
sudo mv kubecfg /usr/local/bin/
명령어 상세 설명
새 클러스터 추가
kubecfg add ~/Downloads/eks-config.yaml --name production-eks
원본 파일은 그대로 유지됩니다. 선택한 이름으로 메인 kubeconfig에 컨텍스트가 추가됩니다.
모든 컨텍스트 목록 보기
kubecfg list
출력
CURRENT NAME CLUSTER SERVER NAMESPACE
* production-eks production-eks https://xxx.eks.amazonaws.com backend
staging-gke staging-gke https://xxx.gke.googleapis.com -
dev-local minikube https://192.168.49.2:8443 default
별표(*)는 현재 선택된 컨텍스트를 나타냅니다. -는 기본 네임스페이스임을 의미합니다.
인터랙티브 컨텍스트 전환
kubecfg use
인수는 필요 없습니다. 인터랙티브 피커가 나타나며, 화살표 키로 이동하고 Enter 키로 선택합니다.
Select context
minikube
▸ production-eks
staging-gke
✓ production-eks
Switched to context 'production-eks'
네임스페이스 관리
현재 컨텍스트의 네임스페이스 전환
kubecfg ns
인터랙티브 피커가 클러스터에서 직접 네임스페이스 목록을 가져옵니다:
Select namespace
default
kube-system
▸ backend-services
monitoring
✓ backend-services
Namespace set to 'backend-services'
네임스페이스 직접 지정
kubecfg ns kube-system
현재 네임스페이스 확인
kubecfg ns current
# Output: backend-services
컨텍스트 이름 변경
kubecfg rename arn:aws:eks:us-east-1:123456789:cluster/prod production
컨텍스트 삭제
kubecfg remove old-cluster
삭제 전 확인 프롬프트가 표시됩니다:
Remove context 'old-cluster'? [y/N]:
--force 옵션으로 프롬프트를 건너뛸 수 있습니다:
kubecfg remove old-cluster --force
설정 병합
kubecfg merge config1.yaml config2.yaml config3.yaml -o merged.yaml
모든 컨텍스트, 클러스터, 사용자 정보가 하나의 파일로 합쳐집니다. 중복 항목은 자동으로 처리됩니다.