# kubectl 은 기본 ~/.kube/config 설정 파일을 사용한다.
# (참고 config 설정은 k8s 노드의 /etc/kubernetes/admin.conf 에 있다.)
# 특정 클러스터 접속 정보를 yaml 파일로 제공하는 경우
# 다음과 같이 KUBECONFIG 환경변수에 명시해 사용한다.
export KUBECONFIG=~/.kube/config:~/.kube/test-config.yaml
# 그런데 kubectx (https://github.com/ahmetb/kubectx) 사용시
# 멀티 yaml 설정이 지원되지 않아 다음과 같은 에러가 발생했다.
error: kubeconfig error: failed to load: cannot determine kubeconfig path: multiple files in KUBECONFIG are currently not supported
# 다음과 같이 ~/.kube/config 하나로 통합할 수 있다.
mv -v ~/.kube/config ~/.kube/config.bak
KUBECONFIG=${HOME}/.kube/config.bak:${HOME}/.kube/test-config.yaml kubectl config view --flatten > ${HOME}/.kube/config
# 참고
# ~/.kube 에 아래 파일들이 있고 파일하나가 클러스터 정보 하나를 가지고 있는 상태에서 KUBECONFIG 에 설정
config
lemon.yaml
apple.yml
banana.yml
- kubectl config use-context lemon-context 수행시
- touch config.lock 만들고 config.lock: file exists 에러 발생
- touch lemon.yaml.lock 만들면 lemon.yaml.lock: file exists 에러 발생
- KUBECONFIG 에서 config 를 제외하면 config.lock 파일이 있어도 상관없음
- kubectl config use-context lemon-context 로 변경하면 config 파일이 변경됨(KUBECONFIG 에 첫번째로 설정된 파일의 current-context 가 변경됨)
#####
# fzf 가 설치되어 있다면 kubectx 실행시 fzf 선택 메뉴가 나타난다.
# fzf 메뉴 없이 kubectx 로 리스트만 보려면
KUBECTX_IGNORE_FZF=1 kubectx
# 또는
kubectx | cat
# kubectx -d 로 context 를 삭제할 수 있지만
# 해당 context 에서 설정된 user, cluster 정보는 남아 있다.
kubectx -d ysoftman_test_context