[Kubernetes] kubeconfig 파일 구조

INYEONG KIM·2024년 8월 18일
post-thumbnail

kubeconfig 파일이란?

사용자 환경 (개인 PC, bootstrap machine, server 등) 에서 Kubernetes 클러스터의 kube-apiserver 와 통신하기 위한 endpoint, 사용자 인증 정보 등이 포함된 파일으로 예시는 아래와 같다.

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJU05jZndSL2pSaDR3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2eApFK
    server: https://controlplane: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: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLVENDQWhHZ0F3SUJBZ0lJRHVkZ21YekM4cTh3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TkRBNE1UZ3hNak14TXpKYUZ3MHlOVEE0TVRneE1qTTJNelJhTUR3eApI
    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBdjg1THNaUktlRWNBT1c1ZmVPejFGQTh6RE1vZEtla1F5cVVWRVgzcEltZX
  • cluster: Kubernetes API 서버 정보
  • context: user와 cluster 간의 관계
  • user: Kubernetes API 서버에 접속하기 위한 사용자 정보 (인증 정보 필요)

cluster, context, user 정보는 하나의 파일에 여러개가 존재 가능하며, 필요에 따라 config 파일을 여러개로 나누거나 하나로 합쳐서 관리한다.

클러스터 접속정보 변경 #1

shell 에서 인식하는 클러스터 접속 정보는 기본적으로 ~/.kube/config 파일에 있는 kubeconfig 파일을 참조한다.

만약 ~/.kube/config 파일이 아닌, 임의로 생성한 kubeconfig 를 참조하도록 변경하고 싶다면 --kubeconfig 옵션을 추가하거나, KUBECONFIG 환경변수를 생성/변경함으로써 초지 가능하다.

# case 1
$ kubectl get po --kubeconfig=./my-kube-config


# case2
$ export KUBECONFIG=/path/my-kube-config
$ kubectl get po

클러스터 접속정보 변경 #2

다수의 클러스터 접속정보가 포함되어 있는 kubeconfig 사용 중일 경우에서는 kubectl config 명령을 통해 접속정보 변경이 가능하다.

controlplane ~ ✖ kubectl config get-contexts
CURRENT   NAME                         CLUSTER             AUTHINFO    NAMESPACE
          aws-user@kubernetes-on-aws   kubernetes-on-aws   aws-user    
          research                     test-cluster-1      dev-user    
*         test-user@development        development         test-user   
          test-user@production         production          test-user   

controlplane ~ ➜  kubectl config use-context research --kubeconfig=./my-kube-config
Switched to context "research".

controlplane ~ ➜  kubectl config get-contexts
CURRENT   NAME                         CLUSTER             AUTHINFO    NAMESPACE
          aws-user@kubernetes-on-aws   kubernetes-on-aws   aws-user    
*         research                     test-cluster-1      dev-user    
          test-user@development        development         test-user   
          test-user@production         production          test-user   

controlplane ~ ➜ 
profile
미래의 저를 위해 작성하는 중입니다 🙆‍♂️

0개의 댓글