티스토리 뷰

728x90


이번 글에서는 kubectl을 설치하고 kubeconfig 파일에 설정을 추가하여 kubectl로 해당 환경에 접근하는 것까지 해보겠습니다.

728x90


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"
728x90
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크