STUDY/Data Engineering

[K8S] Context ?

wonpick 2023. 9. 9. 23:08

 

context 란? 

쿠버네티스 클러스터를 관리하는 CLI 도구인 kubectl에는 환경을 바꿔가며 Config 파일을 이용하여 클러스터를 관리할 수 있는 context 라는 기능이 존재한다. CLI를 활용하여 어느 쿠버네티스 클러스터를 컨트롤할지 결정할 수 있다. 

 

 

kubectl config

k8s설정은 다음과 같다.  

  • kubeconfig 내용 확인 : kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://xxx.xxx.xxx:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: DATA+OMITTED
    client-key-data: DATA+OMITTED

해당 파일은 kubectl명령어가 api-server에 접근할 때 사용할 인증 정보를 가지고 있다.

이 쿠버네티스 설정(이하 kubeconfig)은 크게 3가지 부분으로 구성되어 있다.

 

clusters 

생성한 클러스터 목록과 각 클러스터의 이름, 서버 주소 등

우리가 접속할 서버 정보와 관련된 것이며 서버는 여러개 있을 수 있다. 원한다면 쿠버네티스 클러스터를 여러개 설정할 수 있다.

 

  • cluster.local : 설정하지 않아도 기본적으로 구성되는 클러스터 이름 
  • client-authority-data : kubectl이 어떤 서버에 요청할 것인지에 대한 정보와 CA 인증서를 base64로 인코딩한 것이다. 
  • server : 실제 api-server의 주소 

users 

인증받을 사용자 정보

  • name : 사용자의 계정명 
  • client-certificate-data, client-key-data : 사용자가 사용할 클라이언트의 인증서(공개키)와 개인키

context

쿠버네티스 API 서버 정보(IP 또는 도메인)

  • clusters 항목과 users 항목을 조합해서 만들어지므로 여러 context가 나올 수 있다.

 

Context 확인
# 컨텍스트 리스트 조회
$ kubectl config get-contexts

# 클러스터 목록 조회 
$ kubectl config get-clusters

# 현재 컨텍스트 조회
$ kubectl config current-context

# 새로운 컨텍스트 생성
$ kubectl config set-context [컨텍스트]

# 특정 컨텍스트 사용 (전환)
$ kubectl config use-context [컨텍스트]

# 특정 컨텍스트 삭제
$ kubectl config unset contexts.[컨텍스트]