Section 7-2. KubeCofig
udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의 및 쿠버네티스 인 액션 (마르코 룩샤)를 참고하여 정리한 글입니다.
Section07. Security
KubeConfig
- 쿠버네티스의 설정 파일로 쿠버네티스 클러스터에 접속하기 위한 설정·인증서 정보를 저장하고 있는 파일이다.
- kubeconfig를 사용하지 않을 경우 쿠버네티스 클러스터에 접속하기 위해서는 인증서와 키를 옵션으로 전달해야한다.
1 2 3 4 5 6 7 8 9 10 11 12
#### curl 사용 #### $ curl https://my-kube-playground:6443/api/v1/pods \ --key admin.key --cert admin.crt --cacert ca.crt #### kubectl 사용 #### $ kubectl get pods --server my-kube-playground:6443 --client-key admin.key --client-certtificate admin.crt --certificate-authority ca.crt
- kubeconfig는 지정한 인증 정보를 파일로 저장한 뒤 해당 파일을 파라미터로 지정하여 사용할 수 있다.
1
$ kubectl get pods --kubeconfig {config 파일}
- kubeconfig를 사용하지 않을 경우 쿠버네티스 클러스터에 접속하기 위해서는 인증서와 키를 옵션으로 전달해야한다.
KubeConfig 파일의 기본 위치
- 기본적으로 kubectl은
$HOME/.kube/config
파일을 참조한다. kubeadm 등을 통하여 클러스터를 구축할 경우 기본적으로 이와 같이 설정 파일 경로를 기본값으로 구성하므로 사용자는 –kubeconfig 옵션을 추가하지 않고도 kubectl 명령어를 사용할 수 있다.
KubeConfig 구조
1
2
3
4
5
6
7
8
9
10
11
12
## 옵션 ## 들어가는 위치
--server my-kube-playground:6443 => clusters
--client-key admin.key => users
--client-certtificate admin.crt => users
--certificate-authority ca.crt => clusters
+--------------+ +-------------------+ +--------------+
| | | | | |
| Development | | Admin@Production | | Admin |
| Production | => | Dev@Google | <= | Dev User |
| Google | | | | Prod User |
| | | | | |
+-- Clusters --+ +----- Contexts ----+ +---- Users ---+
- clusters : 접속할 클러스터의 주소 정보
- contexts : 어떤 유저가 어떤 클러스터에 접속할지 정의한 정보 (clusters 필드와 users 필드를 매칭)
- users : 클러스터에 접속할 유저 정보
KubeConfig File 구조
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
apiVersion: v1
kind: Config
current-context: dev-user@google
clusters:
- name: my-kube-playground
cluster:
certificate-authority: ca.crt # 혹은 fullpath 입력 (/etc/kubernetes/pki/ca.crt)
server: https://my-kube-playground:6443
contexts:
- name: my-kube-admin@my-kube-playground
context:
cluster: my-kube-playground
user: admin
users:
- name: my-kube-admin
user:
client-certificate: admin.crt # 혹은 fullpath 입력 (/etc/kubernetes/pki/users/admin.crt)
client-key: admin.key # 혹은 fullpath 입력 (/etc/kubernetes/pki/users/admin.key)
- 여러 개의 cluster/user 가 존재하고 여러 개의 context 쌍이 서술될 수 있다.
- current-context 에는 현재 context 값이 저장되며, 만약 사용자가 kubectl config use-context 명령어로 context를 변경할 경우 이 파일의 값 또한 자동으로 변경된다.
- ca.crt, admin.crt, admin.key 파일을 상대 경로로 지정하였는데, 이 경로는 절대 경로로 지정할 수도 있다.
- cluster.certificate-authority에 특정 경로 대신 직접 파일 내용을 넣어줄 수도 있다.
$ cat ca.crt | base64
로 인코딩 한 값을 넣는다.
KubeConfig 내용 확인
1
$ kubectl config view
- 기본 경로에 설정한 config를 확인할 수 있다.
1
$ kubectl config view --kubeconfig=[경로]
- 기본 경로에 위치한 config가 아닌 경우 경로를 입력하여 확인할 수 있다.
context 변경
- 컨텍스트 목록 확인
1
$ kubectl config get-contexts
- 현재 컨텍스트 확인
1
$ kubectl config current-context
- 컨텍스트 변경
1
$ kubectl config use-context [컨텍스트]
This post is licensed under CC BY 4.0 by the author.