쿠버네티스 클러스터를 전환하거나 Defalut 네임스페이스를 `kubectl` 실행할 때마다 `--namespace` 옵션을 지정하지 않고 사용하는 방법
1. kubeconfig 파일 위치 설정
- kubectl 설정은 ~/.kube/config 파일에 저장
- 파일 위치를 변경하고자 할 때는 KUBECONFIG 환경 변수에 해당 위치 정보 입력
- KUBECONFIG 파일에 콜론(:)으로 구분해서 여러 설정 파일 지정 가능(kubectl에 한 번에 모두 적용)
2. kubeconfig 파일 구조
kubeconfig 파일은 "클러스터 목록", "사용자 목록", "컨텍스트 목록", "현재 컨텍스트 이름" 네 부분으로 구성된다.
apiVersion: v1
kind: Config
clusters:
- name: [CLUSTER_NAME]
cluster:
server: https://[CLUSTER_IP]:[PORT]
certificate-authority-data: [BASE64_ENCODED_CA_DATA]
users:
- name: [USER_NAME]
user:
client-certificate-data: [CLIENT_CERT_DATA]
client-key-data: [CLIENT_KEY_DATA]
contexts:
- name: [CONTEXT_NAME]
context:
cluster: [CLUSTER_NAME]
user: [USER_NAME]
namespace: [DEFAULT_NAME_SPACE]
current-context: [CONTEXT_NAME]
- clusters : 쿠버네티스 클러스터의 정보를 나타내는 필드 (API 서버와 통신하기 위해 필요한 정보로 구성)
- users : API와 통신할 때 사용할 자격증명을 정의하는 필드 (사용자의 인증정보가 포함됨)
- contexts : kubectl 이 명령을 수행할 때 사용할 clusters, users, namespace 정보를 구성해주는 필드
- current context : contexts에 여러 값이 설정되어 있을 때 사용할 컨텍스트를 지정하는 필드
3. kubeconfig 파일 수정
3.1 Cluster 정보 추가
kubectl config set-cluster [CLUSTER_NAME] \
--server=https://[CLUSTER_IP]:[PORT] \
--certificate-authority=[BASE64_ENCODED_CA_DATA]
# --certificate-authority=/PATH/TO/CA_FILE
3.2 Users 자격 증명 추가
3.2.1 토큰 방식 자격 증명 사용자 추가
kubectl config set-credentials [USER_NAME] --token=[TOKEN_INFORMATION]
3.2.2 키, 인증서 방식 자격 증명 사용자 추가
kubectl config set-credentials [USER_NAME] \
--client-certificate=/PATH/TO/CERT_FILE.crt \
# --client-certificate=$(cat /PATH/TO/CERT_FILE.crt | base64 -w 0) \
--client-KEY=/PATH/TO/KEY_FILE.key
# --client-KEY=$(cat /PATH/TO/KEY_FILE.key | base64 -w 0)
3.2.3 AWS EKS 환경에서 IAM 인증 정보 추가
aws eks update-kubeconfig --name [cluster_name] --region [region-code] --profile [profile]
3.3 Context 정보 추가
3.3.1 Context 추가
kubectl config set-context [CONTEXT_NAME] \
--cluster=[CLUSTER_NAME] \
--user=[USER_NAME] \
--namespace=[NAMESPACE_NAME]
3.3.2 Context 전환
kubectl config use-context [CONTEXT_NAME]
3.3.3 Context에 지정된 네임스페이스 변경
kubectl config set-context [CONTEXT_NAME] --namespace=[NAMESPACE_NAME]
3.3.4 Context 변경을 쉽게 설정하기 위한 alias 설정
현재 사용중인 컨텍스트에 설정된 네임스페이스를 쉽게 변경하기 위해서 bash의 alias를 활용하는 방법
# /etc/profile
alias kcd='kubectl config set-context $(kubectl config current-context) --namespace'
source /etc/profile
kcd [NAMESPACE_NAME]
4. kubeconfig 파일 정보 출력
kubeconfig 파일에 정의된 모든 Context 값을 출력하는 명령
kubectl config get-contexts
'Infrastructure & Systems > Kubernetes' 카테고리의 다른 글
[Kubernetes] Secret 이용 Private Registry 인증정보 설정 (0) | 2025.04.02 |
---|---|
[Kubernetes] Kubespray로 k8s 설치 (0) | 2025.03.31 |
[Kubernetes] StatefulSets and PersistentVolume YAML Sample (0) | 2025.03.24 |
[Kubernetes] DaemonSet YAML Sample (0) | 2025.03.24 |
[Kubernetes] Deployments YAML Sample (0) | 2025.03.24 |