[CKS] 1-10. KubeConfig

KubeConfig는 kubectl 사용 시 번거로운 인증서 및 서버 정보 입력을 자동화하여 클러스터 접근을 효율화합니다.

[CKS] 1-10. KubeConfig
Photo by Ferenc Almasi / Unsplash

개요

사용자를 위한 인증서를 생성하는 방법을 확인했습니다.

인증서 파일과 키를 사용하기 위해 curl 요청을 보내면서 CA 인증서와 함께 키, 인증서 파일을 전송합니다.

kubectl 명령어를 사용할 때 마찬가지로 서버 도메인, 키, 인증서와 CA파일을 전송합니다.

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

KubeConfig

매번 이러한 것들을 입력하기엔 너무 귀찮습니다. 이를 자동화하기 위해 kubeconfig를 사용하며 기본적으로 .kube 디렉토리에서 config를 찾아 사용합니다.

KubeConfig File

클러스터

  • 클러스터 레벨로 접근이 필요한 경우
  • 개발, 테스트, 프로덕션 환경
  • 다른 조직이나 다른 클라우드 프로바이더에 존재하는 클러스터

컨텍스트

  • 클러스터와 유저를 합쳐서 구성

유저

  • 관리자, 개발, 프로덕션 유저
  • 어떤 사용자가 어떤 클러스터에 접근할 것인지를 명시

새로운 사용자를 만들거나 사용자 접근, 권한을 설정하는 것이 아닙니다.

사용자 인증서같은 자격 증명과 클러스터 명칭이 결합하여 Context를 구성하는 것 뿐입니다.

YAML 구성은 다음과 같습니다.

apiVersion: v1
kind: Config

current-context: admin@production

clusters:
- name: production
  cluster:
    certificate-authority: ca.crt
    server: https://172.17.0.51:6443
contexts:
- name: admin@production
  context:
    cluster: production
    user: admin
    namespace: finance
users:
- name: admin
  user:
    client-certificate: admin.crt
    client-key: admin.key
kubectl config view
kubectl config use-context <CONTEXTS>

Namespace의 경우 Context 필드에 특정 네임스페이스를 추가할 수 있으며 자동으로 특정 Namespace로 이동합니다.