기본적으로 쿠버 컴포넌트 간의 통신은 모두 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 파일 내부에 인증서를 때려넣을수도 있다.
'콤퓨우터 > 필기: KodeKloud CKA 강의' 카테고리의 다른 글
160-164. Authorisation, RBAC and Cluster Roles (0) | 2024.05.17 |
---|---|
159. API Groups (0) | 2024.05.17 |
147-152. View Certificate Details and Certificates API (0) | 2024.05.17 |
146. TLS in Kubernetes (0) | 2024.05.17 |
131. Backup and Restore (0) | 2024.05.17 |