지금 AWS 쿠버네티스, GCP 쿠버네티스를 사용중인다.
쿠버네티스에 접근하려면 kubeconfig 파일이 필요하다.
이 파일에 쿠버네티스 접근하기 위한 클러스터 정보, 인증 정보들이 들어 있다.
아래는 kubeconfig 예시이다.
클러스터 1개, 유저 1개가 있고 이걸 context로 묶어놨다.
여기에서 중요한 건 current-context: aws-context 이 부분이다.
kubectl 같은 명령어를 사용하면 저기에 설정된 클러스터로 명령을 보낸다.
apiVersion: v1
kind: Config
clusters:
- name: my-aws-cluster
cluster:
server: https://ABCD1234.gr7.us-west-2.eks.amazonaws.com
certificate-authority-data: LS0tLS1...
users:
- name: aws-user
user:
exec:
apiVersion: "client.authentication.k8s.io/v1beta1"
command: "aws"
args:
- "eks"
- "get-token"
- "--cluster-name"
- "my-aws-cluster"
contexts:
- name: aws-context
context:
cluster: my-aws-cluster
user: aws-user
current-context: aws-context
만약 내가 kubeconfig에 여러 개의 클러스터 정보를 넣었다고 하자.
AWS, GCP, AZURE 정보를 넣었다.(값은 대충 넣었으니 참고만 할 것)
아래처럼 클러스터, 유저를 여러 개 넣을 수 있고 이것을 조합해서 context를 만들 수 있다.
current-context: aws-context 부분을 current-context: gcp-context와 같이 다르게 넣고
저장하면 gcp 클러스터로 접속하는 구조이다.
apiVersion: v1
kind: Config
clusters:
- name: my-aws-cluster
cluster:
server: https://ABCD1234.gr7.us-west-2.eks.amazonaws.com
certificate-authority-data: LS0tLS1...
clusters:
- name: my-gcp-cluster
cluster:
server: https://ABCD1234.gr7.us-west-2.eks.amazonaws.com
certificate-authority-data: LS0tLS1...
clusters:
- name: my-azure-cluster
cluster:
server: https://ABCD1234.gr7.us-west-2.eks.amazonaws.com
certificate-authority-data: LS0tLS1...
users:
- name: aws-user
user:
exec:
apiVersion: "client.authentication.k8s.io/v1beta1"
command: "aws"
args:
- "eks"
- "get-token"
- "--cluster-name"
- "my-aws-cluster"
users:
- name: gpc-user
user:
exec:
apiVersion: "client.authentication.k8s.io/v1beta1"
command: "gcp"
args:
- "eks"
- "get-token"
- "--cluster-name"
- "my-aws-cluster"
users:
- name: azure-user
user:
exec:
apiVersion: "client.authentication.k8s.io/v1beta1"
command: "azure"
args:
- "eks"
- "get-token"
- "--cluster-name"
- "my-aws-cluster"
contexts:
- name: aws-context
context:
cluster: my-aws-cluster
user: aws-user
contexts:
- name: gcp-context
context:
cluster: my-gcp-cluster
user: gcp-user
contexts:
- name: azure-context
context:
cluster: my-azure-cluster
user: azure-user
current-context: aws-context
근데 매번 이 kubeconfig를 바꿀 수는 없다.
그래서 kubeconfig를 서로 다르게 여러 개 만들어서 사용하면 훨씬 편하게 작업할 수 있다.
먼저 kubeconfig에서 current-context 부분을 다르게 만들어서 3개 파일을 만들자.
예를 들어, kubeconfig_aws, kubeconfig_gcp, kubeconfig_azure와 같이 클라우드 공급자에 따라 파일을 다르게 만들어 준다.
각 파일은 current-context: aws-context, current-context: gcp-context, current-context: azure-context처럼 current-context만 다른 상태이다.
가장 기본적인 방법은 --kubeconfig 옵션 사용을 사용하는 방법이다.
명령어를 입력할 때마다 kubeconfig 파일 경로를 지정한다.
# GCP 클러스터에 접근
kubectl --kubeconfig ~/.kube/config-gcp get pods
# AWS 클러스터에 접근
kubectl --kubeconfig ~/.kube/config-aws get pods
근데 이 방법은 너무 귀찮다.
맥북에서 alias를 이용해서 간단하게 사용할 수 있다.
iterm에서 아래 명령어로 alias를 지정한다.
물론 kubeconfig 경로는 자기 경로에 맞게 지정해야 한다.
맥북에서 파일 경로 확인법
파일을 선택 후 Command (⌘) + Option (⌥) + C 누른 후 다른 곳에 붙여넣기 하면 경로가 복사된다.
alias kaws='kubectl --kubeconfig ~/.kube/config-aws'
alias kgcp='kubectl --kubeconfig ~/.kube/config-gcp'
지정하고 난 다음에는 간단하게 사용 가능하다.
이렇게 하면 iterm을 새로 열면 해당 내용이 없다.
따라서 alias를 쉘 설정 파일에 추가해야 한다.
# vi로 설정 파일 수정하기
vi ~/.zshrc
# 아래 2줄을 추가한다.
alias kaws='kubectl --kubeconfig ~/.kube/config-aws'
alias kgcp='kubectl --kubeconfig ~/.kube/config-gcp'
# 변경 사항을 적용한다.
source ~/.zshrc
이렇게하면 새로운 iterm을 열어도 사용 가능하다.
아래 명령어가 잘 되는지 확인하기.
kaws get nodes
kgcp get pods
'배운 내용 > Kubernetes' 카테고리의 다른 글
NGINX 인증서 교체(인증서 만료 날짜 확인) (0) | 2025.04.01 |
---|---|
upbound로 gcp provider 설치하기 (1) | 2025.04.01 |
쿠버네티스 configmap 파일 yaml으로 저장하기 (0) | 2024.08.23 |
pod에 파일 넣기 (0) | 2024.08.21 |
deployment 수정 후 pod가 2개 뜨는 문제 (0) | 2024.07.22 |