IT/CKA

CKA 준비과정 - Security (4) / kubeconfig

Primes 2023. 6. 20. 11:59
728x90

앞서 인증 과정을 학습하면서, 클러스터 내에서 인증서 파일이 어떻게 활용되는지 확인하였다.

클러스터 내 접속을 하기 위해서는 매번 인증이 유효한지와 같은 체크를 kubectl 명령어를 사용하여 진행해야 하는데, 이를 매번 입력하는 것은 어려운 일이다. 따라서 kubeconfig 이라는 구성 파일을 통해 명령을 모아 명시해둔다.

 

기본적으로 kubectl 도구는 아래 경로 내의 config 파일을 찾는다.

$HOME/.kube/config

따라서 해당 경로에 kubeconfig 파일이 있기 때문에 kubectl 명령에 대해 별도로 옵션을 지정하지 않아도 되었었다.

 

 

kubeconfig 파일은 3가지 영역으로 나뉜다.

Clusters / Contexts / Users 세 영역으로 나뉜다.

 

Clusters : 액세스가 필요한 다양한 쿠버네티스 클러스터로, 여러 개의 클러스터를 다양한 개발 환경, 다른 조직에서 구성 중일 때를 가정해보면 된다. ex) 개발 클러스터, Google Cloud Platform 쿠버네티스 클러스터 등

Users : 해당 클러스터들에 접근 가능한 사용자 계정으로 각 클러스터마다 다른 권한을 가진다

Contexts : 어떤 사용자 계정이 어떤 클러스터에 액세스 가능할지 정의

 

이제 kubeconfig 파일 내에서, kubectl 명령의 옵션들이 어느 부분에 해당하는지 알아본다.

--server => Clusters

--client-key, --client-certificate => Users

Context 를 생성하여 Users의 옵션을 이용해 Clusters 정보를 참고하여 접근하도록 정의한다.

 

 

kubeconfig 정의 파일을 보면, 위와같이 세 영역으로 나뉘어 있음을 확인할 수 있다.

클러스터와 사용자를 여러개 지정할 수 있으며, 컨텍스트로 묶을 수 있다.

해당 파일을 통해, 클러스터와 사용자 간 자격 증명이 준비되었고 따라서 다른 CSR과 같은 개체를 생성할 필요가 없어진다. 파일을 두고 kubectl 명령을 통해서 실행하면 필요한 값이 알아서 불러와 사용된다.

 

또한, current-context 필드를 사용하면 기본 컨텍스트를 지정할 수 있다.

 

사용중인 파일을 보려면,

kubectl config view

명령어를 실행하면 된다. 옵션으로 경로를 지정하지 않으면 기본 경로인 $HOME/.kube/config 의 기본 파일을 사용하게 된다.

특정 kubeconfig 파일을 보고 싶다면 아래 명령얼르 사용한다.

kubectl config use-context

수정하고싶다면 config 명령어만 입력하면 된다.

 

추가로, 각 클러스터는 내부에 여러 Namespace를 갖고 구성될 수 있다.

특정 네임스페이스로  전환하기 위해서, 정의 파일 내 context 영역에서 namespace 필드를 지정할 수 있다.

해당 필드를 명시하면 context로 전환 시 지정한 namespace로 바로 들어가게 된다.

 

 

kubeconfig 학습 중, 위에서 인증서 파일의 경로를 지정할 수 있음을 알았다. 별도 설정이 없다면 기본 경로를 이용하는 것도 알았다.

정의 파일 내 인증서 파일의 경로를 지정할 수 있는데, 이 때 전체 경로를 명시하는 것이 좋지만, 인증서 자체의 컨텐츠를 인코딩하여 직접 명시할 수도 있다.

 

반응형