Kubernetes/Udemy - CKAD with Tests

KubeConfig

비번변경 2021. 12. 27. 00:16

KubeConfig

kubectl을 사용할 때 인증 정보를 지정하지 않고 사용할 수 있도록 인증 정보를 저장한 설정 파일

즉, kubectl 사용 시 사용할 인증 정보를 저장한 파일

 

 

Kubernetes 사용자는 생성해둔 인증서 파일과 키를 지정하여 curl을 이용해 kube-apiserver에 쿼리를 요청할 수 있다.

 

curl - 포드 목록 확인

curl https://my-kube-playground:6443/api/v1/pods \
--key admin.key \
--cert admin.crt \
--cacert ca.crt

kubectl을 사용할 때도 마찬가지로, 인증 정보를 지정하여 kube-apiserver에 요청을 전달할 수 있다.

 

kubectl - 포드 목록 확인

kubectl get pods \
--server my-kube-playground:6443 \ 
--client-key admin.key \
--client-certificate admin.crt \
--cacerticate-authority ca.crt

kubectl 사용 시 옵션으로 지정한 인증 정보를 kubeconfig 파일로 저장한 뒤, --kubeconfig 옵션을 이용해 해당 파일을 지정하여 사용해도 동일하게 동작한다.

kubectl get pods \
--kubeconfig config

기본적으로 kubectl은 사용자의 홈 디렉터리 아래 .kube 디렉터리에서 config라는 이름의 파일(~/.kube/config)을 찾는다. 따라서 해당 경로에 kubeconfig 파일을 생성하여 필요한 정보를 저장하면 kubectl이 해당 파일을 읽어들여 필요한 값을 사용하기 때문에 인증 정보 파일을 명시적으로 지정하지 않을 수 있다.

 

형식

yaml 형식의 kubeconfig 파일은 크게 아래와 같은 정보로 구성되어 있다. clusters, users, contexts은 배열이기 때문에 하나의 파일에서 여러 클러스터, 사용자, context를 설정할 수 있다.

  • clusters : 접근 권한이 필요한 kubernetes 클러스터
  • users : 관리자, 개발자, 프로듀서 등 클러스터에 접근하는 사용자 계정
  • contexts : 사용자와 클러스터를 결합하여 클러스터에 접근할 사용자 계정 지정
apiVersion: v1
kind: Config
current-context: my-kube-admin@my-kube-playground # default-context
clusters:
- name: my-kube-playground
  cluster:
    certificate-authority: ca.crt # 절대 경로로 지정하는 것이 좋다.
    server: https://my-kube-playground:6443
contexts:
- name: my-kube-admin@my-kube-playground
  context:
    cluster: my-kube-playground
    user: my-kube-admin
    namespace: finance
users:
- name: my-kube-admin
  user:
    client-certificate: admin.crt
    client-key: admin.key