콤퓨우터/필기: KodeKloud CKA 강의

155. Kubeconfig와 context

파란화면 2024. 5. 17. 00:35
반응형

기본적으로 쿠버 컴포넌트 간의 통신은 모두 TLS Client Certificate를 요구한다. curl로 직접 API에 엑세스한다면,
curl https://controlplane:6443/api/v1/pods --key admin.key --cert admin.crt --cacert ca.crt 같은 식으로 인증서를 제공해야 한다.

kubectl에서도 마찬가지이다. 실제로
kubectl get pods --server controlplane --client-key admin.key --client-certificate admin.crt --certificate-authority ca.crt
같은 식으로, 파라미터를 통해 적절한 인증서를 공급할 수 있다.

물론 이 파라미터를 다 치고 있는 것은 몹시 귀찮은 일이므로, 설정파일로 빼서 일일이 타이핑할 필요 없게 만들자는 것이다.

기본적으로 kubeconfig 파일의 참조 기본값은 $HOME/.kube/config이다.

구조

kubeconfig 파일은 cluster, context, user의 3가지 구성요소로 구성

Cluster와 User를 짝지어놓은 것을 Context라고 한다.
어떤 클러스터에 접근하기 위해 어떤 사용자를 사용할 것인가... 를 미리 짝지어 놓고, kubeclt --context 뭐시기만으로 간편하게 리용하자는것이다.

  • Cluster에는 --server controlplane:6443, --certificate-authority ca.crt같은 정보가 들어감
  • User에는 --client-certificate, client-key같은 정보가 들어감
apiVersion: v1
kind: Config

current-context: context-기본값

clusters:
- my-kube-playground
  cluster:
    certificate-authority: /path/to/ca.crt
    server: https://controlplane:6443

contexts:
- name: my-kube-admin@my-kube-playground
  context:
    cluster: my-kube-playground
    user: my-kube-admin
    namespace: finance # 네임스페이스 필드를 선언하지 않을 경우 default 네임스페이스 사용

users:
- name: my-kube-admin
  user:
    client-certificate: /path/to/client.crt
    client-key: /path/to/key.crt

KubeConfig Object는 kubectl create -f로 생성하지 않는다. 그냥 적당한 위치(기본값은 $HOME/.kube/config)에 놓으면 kubectl에서 알아서 읽는다.

kubectl에서 이용

  • kubectl config view로 사용하고 있는 kubeconfig를 볼 수 있다.
  • --kubeconfig=로 다른 kubeconfig를 지정할 수 있다.
    • `kubectl config current-context --kubeconfig /root/my-kube-config

Current Context의 변경

kubectl config use-context prod-user@production 같은 식으로 변경할 수 있다.

  • 이렇게 변경한 context는 실제 KubeConfig Object 설정파일에도 반영된다.

clusterrs.cluster.certificate-authority: 경로 식으로 주지 않고, 그냥 clusterrs.cluster.certificate-authority: (BASE64된-인증서) 식으로, kubeconfig 파일 내부에 인증서를 때려넣을수도 있다.

반응형