Contents

iTerm2에서 Tab 별로 다른 k8s context 사용하기

Multi Kubernetes Cluster를 사용한다면 dev, staging등 다른 context를 전환하며 사용하는 경우가 있습니다. 별다른 설정없이 사용한다면 1번 탭에서 context를 변경한 것이 다른 탭에서도 적용되게 됩니다. iTerm2에서 tab별로 다른 cluster를 바라보며 사용하도록 설정한 부분을 포스팅 했습니다.

0. kubectx & kubens

Multi cluster를 사용중이라면 대부분 kubectx와 kubens를 사용중으로 예상됩니다.
혹시 아니라면 한번 사용해 보세요!

1. .zshrc 설정

1.1 Session ID 생성

if ! [ $TERM_SESSION_ID ]; then
  export TERM_SESSION_ID=`uuidgen`
fi
  • 처음에는 timestamp로 설정했으나, 재부팅 등 여러탭이 동시에 실행되면 dummy를 공유하게 됩니다.

1.2 kubeconfig dummy 생성

cat > /tmp/kube-config-dummy-${TERM_SESSION_ID##*:}.yml <<EOF
apiVersion: v1
clusters:
- cluster:
    server: ""
  name: dummy
contexts:
- context:
    cluster: ""
    user: ""
  name: dummy
current-context: dummy
kind: Config
preferences: {}
users:
- name: dummy
  user: {}
EOF

1.3 Session ID 생성

export KUBECONFIG="/tmp/kube-config-dummy-${TERM_SESSION_ID##*:}.yml:$HOME/.kube/config"
  • default KUBECONFIG=$HOME/.kube/config 입니다.
  • : 구분자로 파일을 연결하면 context가 merge 됩니다.
  • kubectx 또는 kubectl config로 context를 변경하게 되면 KUBECONFIG 맨 앞에 yaml에 현재 context 정보를 기록합니다.
  • session이 생성될때 1.2에서 만든 dummy config 파일을 바라보기 때문에, session 별로 다른 current context를 사용하게 됩니다.