티스토리 뷰
이번 글에서는 kubectl을 설치하고 kubeconfig 파일에 설정을 추가하여 kubectl로 해당 환경에 접근하는 것까지 해보겠습니다.
kubectl 설치 및 시작하기
sudo yum install kubectl //kubectl 설치
sudo kubectl config ivew //클러스터 접근 정보 확인
kubeconfig 파일을 이용하여 클러스터 접근
kubconfig 파일을 사용하여 클러스터, 사용자, 네임스페이스 및 인증 메커니즘에 대한 정보를 관리할 수 있습니다. kubectl 커멘드라인 툴은 kubeconfig 파일을 사용하여 클러스터의 선택과 클러스터의 API 서버와의 통신에 필요한 정보를 찾습니다.
- kubeconfig : 클러스터에 대한 접근을 구성하는데 사용되는 파일을 보통 kubeconfig 라고 말합니다. 실제 파일 이름이 kubeconfig이라는 얘기는 아닙니다.
기본적으로 kubectl 은 $HOME/.kube 디렉토리에서 config라는 이름의 파일을 kubeconfig 파일로 사용하여 클러스터 접근을 위한 정보로 사용하게 됩니다. KUBECONFIG 환경 변수로 설정하여 사용하거나 --kubeconfig 플래그를 사용하여 다른 kubeconfig 파일을 사용할 수 있습니다.
다중 클러스터 접근 구성
kubeconfig 파일을 사용하여 다수의 클러스터에 접근할 수 있도록 설정할 수 있습니다. 클러스터, 사용자, 컨텍스트가 하나 이상의 구성파일에 정의된 다음 kubectl config use-context 명령어를 사용하여 클러스터를 변경할 수 있습니다.
클러스터, 사용자, 컨텍스트 정의 예시
만약 제가 개발 작업을 위한 클러스터와 스크래치 작업을 위한 클러스터를 가지고 있는 상황이라고 가정을 해봅시다.
- devlopment 클러스터에서는 프론트엔드 개발자들이 frontend라는 네임스페이스에서 작업을 하고 있고, 스토리지 개발자들은 storage라는 네임스페이스에서 작업을 하고 있습니다.
- scratch 클러스터에서는 개발자들이 default 네임스페이스에서 개발하거나 필요에 따라 보조 네임스페이스들을 생성하고 있습니다.
- development 클러스터에 접근하려면 인증서로 인증을 해야하고 scratch 클러스터에 접근하려면 사용자 네임과 패스워드로 인증을 해야합니다.
config-exercise 라는 디렉토리를 먼저 생성하고, config-exercise 디렉토리에 다음 내용을 가진 config-demo를 생성합니다.
apiVersion: v1
kind: Config
preferences: {}
clusters:
- cluster:
name: development
- cluster:
name: scratch
users:
- name: developer
- name: experimenter
contexts
- context:
name: dev-frontend
- context:
name: dev-storage
- context:
name: exp-scratch
config-demo 파일은 두 클러스터들과 두 사용자들, 세 컨텍스트를 기술하기 위한 프레임워크를 가지고 있습니다.
config-exercise 디렉터리로 이동한 후, 다음 커멘드를 실행하여 kubeconfig 파일에 클러스터의 세부사항들을 추가합니다.
kubectl config --kubeconfig=config-demo set-cluster development --server=https://1.2.3.4 --certificate-authority=fake-ca-file
kubectl config --kubeconfig=config-demo set-cluster scratch --serve=https://5.6.7.8 --insecure-skip-tls-verify
다음 커맨드를 실행하여 kubeconfig 파일에 사용자의 세부사항들을 추가합니다.
kubectl config --kubeconfig=config-demo set-credentials developer --client-certificate=fake-cert-file --client-key=fake-key-seefile
kubectl config --kubeconfig=config-demo set-credentials experimenter --username=exp --password=some-password
다음 커맨드를 실행하여 kubeconfig 파일에 컨텍스트의 세부사항들을 추가합니다.
kubectl config --kubeconfig=config-demo set-context dev-frontend --cluster=devlopment --namespace=frontend --user=developer
kubectl config --kubeconfig=config-demo set-context dev-storage --cluster=devlopment --namespace=storage --user=developer
kubectl config --kubeconfig=config-demo set-context dev-scratch --cluster=scratch --namespace=default --user=experimenter
config-demo 파일을 열어서 세부사항들이 추가되었는지 확인합니다. config-demo 파일을 열어보는 것 대신에 config view 명령어를 사용할 수도 있습니다.
kubectl config --kubeconfig=config-demo view
출력결과는 다음과 같습니다.
apiVersion: v1
clusters:
- cluster:
certificate-authority: fake-ca-file
server: https://1.2.3.4
name: development
- cluster:
insecure-skip-tls-verify: true
server: https://5.6.7.8
name: scratch
contexts
- context:
cluster: devlopment
namespace: frontend
user: developer
name: dev-frontend
- context:
cluster: devlopment
namespace: storage
user: developer
name: dev-storage
- context:
cluster: scratch
namespace: default
user: experimenter
name: exp-scratch
current-context: ""
kind: Config
preference: {}
users:
- name: developer
user:
client-certificate: fake-cert-file
client-key: fake-key-file
- name: experimenter
user:
password: some-password
username: exp
위 fake-ca-file, fake-cert-file, fake-key-file은 인증서 파일들의 실제 경로 이름을 위한 플레이스홀더 입니다. 당신의 환경에 맞게 이들을 실제 인증서 경로로 변경해야합니다.
만약 인증서 파일의 경로 대신 여기에 포함된 base64로 인코딩된 데이터를 사용하고자 한다면, 이 경우는 키에 -data 접미사를 추가해야 합니다. 예를 들면 certificate-authority-data, client-certificate-data, client-key-data 와 같이 사용할 수 있습니다.
새로 생성한 kubeconfig는 기존 kubeconfig 경로에 덮어쓰거나, 다음과 같이 설정할 수 있습니다.
kubectl config --kubeconfig=config-demo
exp-scratch 컨텍스트로 변경은 아래와 같이 할 수 있습니다.
kubectl config --kubeconfig=config-demo use-context exp-scratch
KUBECONFIG 환경변수 설정
export KUBECONFIG="${KUBECONFIG}:config1:config2"
$HOME/.kube/config를 KUBECONFIG 환경 변수에 추가
$HOME/.kube/config 파일을 가지고 있지만 KUBECONFIG 환경 변수에 나타나지 않는 경우, KUBECONFIG 환경 변수에 추가가 필요할 수 있습니다.
export KUBECONFIG="${KUBECONFIG}:${HOME}/.kube/config"
'infra > kubernetes' 카테고리의 다른 글
[쿠버네티스] Label & Selector (0) | 2024.02.07 |
---|---|
[쿠버네티스] 워크 로드(1) / Pod (0) | 2024.01.26 |
쿠버네티스 아키텍쳐 및 구성요소의 기초 (0) | 2024.01.25 |
쿠버네티스의 기초 (4) | 2024.01.18 |
K8S deployment 파일 구조 알아보기 (0) | 2024.01.08 |
- Total
- Today
- Yesterday