다중 클러스터 접근 구성 - Kubernetes kubectl context
쿠버네티스 클러스터를 관리하는 kubectl은 환경을 변경하며 클러스터를 관리할 수 있는 context 기능을 제공한다.
이는 config 구성 파일을 활용하여 다수의 클러스터에 접근할 수 있도록 설정하며 사용자는 커맨드 사용으로 빠르게 클러스터를 변경할 수 있다.
설정 방법
context는 kubectl cli를 설치하면 생성되는 ~/.kube/config 파일에서 설정한다. (클러스터는 설치되어있다고 가정한다.)
추가로 kubectl이 설치되었는지 확인하기 위해서는 $kubectl version --client를 통해 확인한다.
config 파일 예시
아래는 config 파일의 예시이다. (구글 공식 문서 참고)
개발 작업을 위한 클러스터와 스크래치 작업을 위한 클러스터를 가지고 있다고 가정한다.
- development 클러스터에서는 frontend 개발자들이 frontend namespace에서 작업을 하며, storage 개발자들은 storage namespace에서 작업을 한다.
- scratch 클러스터에서는 개발자들이 default namespace에서 개발하거나 필요에 따라 보조 namespace들을 생성한다.
- development 클러스터에 접근하기 위해서는 인증서가 필요하며, scratch 클러스터에 접근하기 위해서는 사용자 이름과 패스워드로 인증이 필요하다.
apiVersion: v1
clusters:
- cluster:
certificate-authority: fake-ca-file
server: https://1.2.3.4
name: development
- cluster:
insecure-skip-tls-verify: true
server: https://5.6.7.8
name: scratch
users:
- name: developer
user:
client-certificate: fake-cert-file
client-key: fake-key-file
- name: experimenter
user:
password: some-password
username: exp
contexts:
- context:
cluster: development
namespace: frontend
user: developer
name: dev-frontend
- context:
cluster: development
namespace: storage
user: developer
name: dev-storgae
- context:
cluster: scratch
namespace: default
user: experimenter
name: exp-scratch
current-context: ""
kind: Config
preferences: {}
구성 요소
config 파일을 구성하는 항목에는 크게 아래 3가지로 분류할 수 있다.
- clusters
쿠버네티스의 클러스터 정보로, development / scratch 클러스터에 대한 정보를 볼 수 있다.
처음 클러스터 생성 시 복잡한 이름으로 생성되므로 name을 지정하여 알아보기 쉽게 바꿔주는 것이 좋다.
- users
클러스터에 접근할 유저의 정보이다.
development 클러스터의 경우 인증서가, scratch 클러스터의 경우 패스워드가 필요한 것처럼 각 환경마다 필요한 값을 명시한다.
- context
cluster와 user를 조합하여 생성된 값이다.
cluster의 name과 user의 name을 속성값으로 지정한 것을 확인 할 수 있다.
dev-frontend 라는 context는 developer라는 user 정보로 development 클러스터의 frontend 네임스페이스에 접근하는 하나의 set이 되는 것이다.
context 조회 및 변경
# exp-scratch로 context 변경
$ kubectl config --kubeconfig=config use-context exp-scratch
# exp-scratch context 설정 조회
$ kubectl config --kubeconfig=config view --minify
# 모든 context 조회
$ kubectl config get-contexts
# 현재 설정된 context 조회
$ kubectl config current-contexts
# context에 설정사항 추가 (ex.development cluster)
$ kubectl config --kubeconfig=config set-cluster development {option}
kubectx 도구 활용
간단하게 brew로 설치할 수 있는 도구로 context를 쉽게 변경할 수 있게 도움을 준다.
kubectl config use-context exp-scratch 와 같이 긴 명령어를 사용하지 않아도 간편하게 context를 변경할 수 있다.
# 사용 예 $ kubectx dev-frontend dev-storage exp-scratch # context 변경 $ kubectx dev-frontend Switched to context "dev-fronted". # 이전 context로 돌아가기 $ kubectx -
(참고) https://kubernetes.io/ko/docs/tasks/access-application-cluster/configure-access-multiple-clusters/
