nayoungs
항상 끈기있게
nayoungs
  • 분류 전체보기 (274)
    • Cloud (21)
      • AWS (15)
      • Azure (3)
      • NCP (2)
      • GCP (1)
    • DevOps (68)
      • Docker (16)
      • Kubernetes (50)
      • CICD (2)
    • IaC (25)
      • Ansible (17)
      • Terraform (8)
    • Certification (4)
    • 금융 IT (5)
    • AI (3)
    • Linux (47)
    • 미들웨어 (5)
    • Programming (7)
      • GoLang (3)
      • Spring (4)
    • CS (25)
      • 네트워크 (17)
      • 운영체제 (5)
      • Web (1)
      • 개발 상식 (2)
      • 데이터베이스 (0)
    • Algorithm (59)
      • 프로그래머스 (36)
      • 백준 (18)
      • 알고리즘 정리 (5)
    • ETC (5)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
nayoungs

항상 끈기있게

DevOps/Kubernetes

[Kubernetes] Kubeconfig파일이란?

2022. 5. 27. 02:26
728x90

 

kubeconfig 파일은 k8s의 설정 파일로,

kubectl 명령어로 apiserver에 접근할 때 사용할 인증 정보를 담고있다.

 

이 쿠버네티스 설정(kubeconfig)은 크게 3가지 부분으로 구성되어 있다.

  • clusters : 쿠버네티스 API 서버 정보(IP 또는 도메인)로, 여러 클러스터를 명시할 수 있다.
  • users : 쿠버네티스 API에 접속하기 위한 사용자 목록으로, 인증 방식에 따라 형태가 다를 수 있다.
  • context : user와 cluster 사이의 관계를 매핑한 것으로, 어떤 context를 사용하느냐에 따라 cluster와 user가 결정된다. context를 기반으로 “어떤 Cluster에 어떤 User가 인증을 통해 쿠버네티스를 사용한다.” 의미로 해석하면 된다.
    • context에는 여러 종류가 있을 수 있으며, 현재 사용하는 context를 current-context라 한다.

 

kubeconfig 파일의 위치

~/.kube/config 

 

 

kubeconfig 파일 내용 확인

다음 명령어를 통해 파일 내용을 확인할 수 있다.

$ kubectl config view           
apiVersion: v1
clusters: #쿠버네티스 클러스터 -> 여러개 가능
- cluster:
    certificate-authority-data: DATA+OMITTED  #CA인증서
    server: https://127.0.0.1:6443  #요청할 서버 : apiserver의 주소
  name: cluster.local
contexts:
- context:
    cluster: cluster.local
    user: kubernetes-admin
  name: kubernetes-admin@cluster.local
current-context: kubernetes-admin@cluster.local
kind: Config
preferences: {}
users: #사용자 -> 여려명 가능
- name: kubernetes-admin #계정
  user:
    client-certificate-data: REDACTED #클라이언트의 인증서(공개키)
    client-key-data: REDACTED  #개인키

/etc/kubernetes/pki에 인증서와 키가 존재하며, kubectl은 항상 ~/.kube/config을 가장 먼저 찾는다.

위치가 홈 디렉토리가 아니라면 KUBECONFIG 환경 변수를 설정하거나,

--kubeconfig 옵션을 사용하여 다른 kubeconfig 파일을 사용할 수 있다.

 

예시

$ kubectl config view --kubeconfig=ny-kubeconfig

 

실제로 /.kube/config 파일만 있다면, 즉 서버의 위치만 알려준다면, 쿠버네티스 클러스터에 접근할 수 있다.

다음은 윈도우에 kubeconfig 파일을 추가하고 kube get nodes 명령을 실행한 결과이다.

PS C:\Users\USER> ls ~/.kube/config


    디렉터리: C:\Users\USER\.kube


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----      2022-05-26   오후 2:25           5668 config


PS C:\Users\USER> kubectl get nodes
NAME    STATUS   ROLES                  AGE   VERSION
node1   Ready    control-plane,master   11d   v1.22.8
node2   Ready    <none>                 11d   v1.22.8
node3   Ready    <none>                 9d    v1.22.8

서버를 찾아서 정상적으로 결과가 출력되는 것을 확인할 수 있다.

 

 

context 확인하기

  • context 목록 확인하기

CURRENT가 *인 것은, 현재 사용하고있는 current-context라는 의미이다.

$ kubectl config get-contexts
CURRENT   NAME                             CLUSTER         AUTHINFO           NAMESPACE
*         kubernetes-admin@cluster.local   cluster.local   kubernetes-admin
  • current-context 확인하기
$ kubectl config current-context

 

cluster 목록 확인하기

$ kubectl config get-clusters

 

context 전환하기⭐

kubeconfig 파일에 임의로 cluster와 user, 그리고 context를 추가해보자.

- cluster:
    server: https://1.1.1.1
  name: mycluster
  ...
- context:
    cluster: mycluster
    user: myadmin
  name: myadmin@mycluster 
  ...
users:
- name: myadmin  

저장 후 확인하면 cluster와 context가 추가된 것을 확인할 수 있다.

$ kubectl config get-clusters
NAME
cluster.local
mycluster
$ kubectl config get-contexts
CURRENT   NAME                             CLUSTER         AUTHINFO           NAMESPACE
*         kubernetes-admin@cluster.local   cluster.local   kubernetes-admin   monitor
          myadmin@mycluster                mycluster       myadmin

context를 전환하는 방법은,

kubeconfig 파일 내에 다음과 같이 직접 선언하거나

current-context: kubernetes-admin@cluster.local

명령형 커맨드를 통해 current-context를 전환할 수 있다.

$ kubectl config use-context myadmin@mycluster

그리고 또 다른 방법으로 kubectx가 있다.

$ kubectx myadmin@mycluster

kubectx는 손쉽게 cluster context를 변경할 수 있는 툴로, 실제로 많이 사용된다.

 

 

새로운 Context 만들기

$ kubectl config set-context new-context --cluster=local-kubernetes --user=nayoungs

 

그 외

current-context  -- Display the current-context
delete-cluster   -- Delete the specified cluster from the kubeconfig
delete-context   -- Delete the specified context from the kubeconfig
delete-user      -- Delete the specified user from the kubeconfig
get-clusters     -- Display clusters defined in the kubeconfig
get-contexts     -- Describe one or many contexts
get-users        -- Display users defined in the kubeconfig
rename-context   -- Rename a context from the kubeconfig file
set              -- Set an individual value in a kubeconfig file
set-cluster      -- Set a cluster entry in kubeconfig
set-context      -- Set a context entry in kubeconfig
set-credentials  -- Set a user entry in kubeconfig
unset            -- Unset an individual value in a kubeconfig file
use-context      -- Set the current-context in a kubeconfig file
view             -- Display merged kubeconfig settings or a specified kubeconfig file

설명한 것 이외에도 다양한 커맨드 명령들이 존재한다.



 

참고

더보기
  • https://jonnung.dev/kubernetes/2020/06/18/kubernetes-user-authorizations/

 

 

728x90
저작자표시 비영리
    'DevOps/Kubernetes' 카테고리의 다른 글
    • [Kubernetes] kubectx, kubens 설치 및 powerlevel10 커스터마이징
    • [Kubernetes] k8s Authentication(인증)과 RBAC(인가) + 실습
    • [Kubernetes] k8s Taint와 Toleration
    • [Kubernetes] k8s Cordon과 Drain
    nayoungs
    nayoungs
    안되면 될 때까지

    티스토리툴바