쿠버네티스를 사용하다 보면 비단 로컬 환경뿐만이 아니라 EKS, GKE, on-premise 등 다양한 환경에서 사용하게 된다. 이때 로컬 환경도 사용하고 싶고 다른 환경도 같이 사용하고 싶을 때 쉽게 전환하기 위해 K8s에서는 use-context라는 명령어를 지원하고 있다.
이번 글에서는 여러 클러스터의 config 정보를 하나로 합쳐서 use-context를 통해 쉽게 전환할 수 있는 방법을 소개하려고 한다.
사전에 필요한 것들
위 글은 쿠버네티스 구축에 대한 이야기를 담고 있지 않기 때문에 사전에 내 쿠버네티스 환경에 추가할 외부 클러스터 config를 아래와 같이 준비한다.
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: <값>
server: <주소>
name: on-premise
contexts:
- context:
cluster: on-premise
namespace: <기본으로 사용할 네임스페이스 지정 가능>
user: on-premise
name: on-premise
current-context: on-premise
kind: Config
preferences: {}
users:
- name: on-premise
user:
client-certificate-data: <값>
client-key-data: <값>
+) 추가로 해당 config 파일에서 namespace 속성에 특정 namespace 값을 넣어 default namespace를 변경할 수도 있다.
~/.ssh/config에 정보를 추가
적용할 외부 클러스터와 통신하기 위해 ~/.ssh/config에 관련 정보를 입력해준다.
예시
Host "Cluster-1"
HostName <주소>
User nemne
기존 config 파일과 합치기
적용할 외부 클러스터에 대해 config 파일이 있듯이 현재 내 로컬 클러스터에 관한 config 파일도 존재하는데
이는 cat ~/.kube/config 에서 확인이 가능하다.
이제 서로 합치기 전에 혹시 모를 상황에 대비해 기존 config를 백업시킨다.
cp ~/.kube/config ~/.kube/config.bak
그리고 서로 합칠 config를 별도의 폴더를 생성하여 모아둔다.
cd ~/.kube
mkdir clusters
mv ~/on-premise-config ./clusters
mv ./config ./clusters
KUBECONFIG에 아래와 같이 할당한 후에 kubectl config view —flatten을 실행시키고 해당 결과 값을 저장한다.
KUBECONFIG=~/.kube/clusters/on-premise.config:~/.kube/clusters/config-bak.config kubectl config view --flatten > ~/config
최종 config를 ~/.kube/config에 덮어 씌운다.
mv ~/config ~/.kube/config
최종적으로 잘 적용된 것을 확인할 수 있다.
현재 글에서는 안다루지만 Service Account나 Resource Quota를 통해 논리적으로 독립적이게 하여 특정 네임스페이스만을 사용하게 할 수도 있다.
참고
'DevOps' 카테고리의 다른 글
쿠버네티스 패키지 매니저 Helm (0) | 2022.08.17 |
---|---|
Skaffold와 Cloud Code (0) | 2022.07.04 |
chroot로 컨테이너 환경 간접 체험하기 (0) | 2022.06.06 |
Minikube 환경에서 NodePort 사용하기 (0) | 2022.05.21 |
Docker Image와 Dockerfile로 알아보는 Image Layer (0) | 2022.04.03 |