[CKS] 1-10. KubeConfig
KubeConfig는 kubectl 사용 시 번거로운 인증서 및 서버 정보 입력을 자동화하여 클러스터 접근을 효율화합니다.
개요
사용자를 위한 인증서를 생성하는 방법을 확인했습니다.
인증서 파일과 키를 사용하기 위해 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로 이동합니다.