Kubernetes

kubeconfig에 대해서 알아보자

chaenii 2022. 2. 5. 21:42

kubectl은 기본적으로 $Home/.kube/config 파일에서 클러스터, 인증, 컨텍스트 정보를 읽어들인다. 이러한 클러스터 구성 정보를 kubeconfig라고 한다.

 

기본적으로 kubectl $HOME/.kube 디렉터리에서 config라는 이름의 파일을 찾는다. KUBECONFIG 환경 변수를 설정하거나 --kubeconfig 플래그를 지정해서 다른 kubeconfig 파일을 사용할 수 있다.

 

Kubectl Reference Docs

 

kubernetes.io

 

✅ clusters : kubernetes api server 정보. 여러 클러스터들을 명시할 수 있다.

✅ users : kubernetes api에 접속하기 위한 사용자의 목록. 

✅ context : user와 cluster의 관계를 매핑한 것. "어떤 Cluster에 어떤 User가 인증을 통해 쿠버네티스를 사용한다."의 의미를 지닌다.

 

 

kubeconfig 파일을 직접 수정해서 Cluster, User, Context 항목을 입력해도 되지만, $ kubectl config 명령어를 사용하면 편리하다.

 

모든 Context 확인하기

$ kubectl config get-contexts

현재 Context 확인하기

$ kubectl config current-context

새로운 Context 만들기

$ kubectl config set-context new-context --cluster=kubernetes --user=chaewon

Context 바꾸기

$ kubectl config user-context new-context

kubeconfig 설정 전체 보기

$ kubectl config view

context를 이용해 원하는 Namespace를 default로 만들기

kubeconfig에서 컨텍스트 요소는 편리한 이름으로 접속 매개 변수를 묶는데 사용한다. 각 컨텍스트는 클러스터, 네임스페이스와 사용자라는 세 가지 매개 변수를 가진다. 기본적으로 kubectl 커맨드라인 툴은 현재 컨텍스트 의 매개 변수를 사용하여 클러스터와 통신한다.

 

원하는 cluster와 user, namespace를 지정해 new-context라는 context를 생성했다.

kubectl config set-context new-context --cluster=kubernetes --user=kubernetes-admin --namespace=blue

 

 

new-context를 current-context로 설정하고 파드를 생성해보자

kubectl config use-context new-context

 

kubectl run nginx-pod --image=nginx:1.14

 

파드 생성시에 따로 namespace를 지정하지 않았지만, new-context의 namespace가 blue이기 때문에 

파드 역시 namespace가 blue로 지정됐다.

kubectl describe po nginx-pod

 

--namespace flag를 입력하지 않고 특정 namespace를 default로 지정해 사용하고 싶은 경우 매우 편리할 것 같다.


https://jonnung.dev/kubernetes/2020/06/18/kubernetes-user-authorizations/

 

조은우 개발 블로그

 

jonnung.dev

 

반응형