|
| 1 | +--- |
| 2 | +title: kubeconfig 파일을 사용하여 클러스터 접근 구성하기 |
| 3 | +content_template: templates/concept |
| 4 | +weight: 60 |
| 5 | +--- |
| 6 | + |
| 7 | +{{% capture overview %}} |
| 8 | + |
| 9 | +kubeconfig 파일들을 사용하여 클러스터, 사용자, 네임스페이스 및 인증 메커니즘에 대한 정보를 관리하자. |
| 10 | +`kubectl` 커맨드라인 툴은 kubeconfig 파일을 사용하여 |
| 11 | +클러스터의 선택과 |
| 12 | +클러스터의 API 서버와의 통신에 필요한 정보를 찾는다. |
| 13 | + |
| 14 | +{{< note >}} |
| 15 | +클러스터에 대한 접근을 구성하는 데 사용되는 파일을 *kubeconfig 파일* 이라 한다. |
| 16 | +이는 구성 파일을 참조하는 일반적인 방법을 의미한다. |
| 17 | +`kubeconfig`라는 이름의 파일이 있다는 의미는 아니다. |
| 18 | +{{< /note >}} |
| 19 | + |
| 20 | +기본적으로 `kubectl`은 `$HOME/.kube` 디렉터리에서 `config`라는 이름의 파일을 찾는다. |
| 21 | +`KUBECONFIG` 환경 변수를 설정하거나 |
| 22 | +[`--kubeconfig`](/docs/reference/generated/kubectl/kubectl/) 플래그를 지정해서 |
| 23 | +다른 kubeconfig 파일을 사용할 수 있다. |
| 24 | + |
| 25 | +kubeconfig 파일을 생성하고 지정하는 단계별 지시사항은 |
| 26 | +[다중 클러스터로 접근 구성하기](/docs/tasks/access-application-cluster/configure-access-multiple-clusters)를 참조한다. |
| 27 | + |
| 28 | +{{% /capture %}} |
| 29 | + |
| 30 | + |
| 31 | +{{% capture body %}} |
| 32 | + |
| 33 | +## 다중 클러스터, 사용자와 인증 메커니즘 지원 |
| 34 | + |
| 35 | +여러 클러스터가 있고, 사용자와 구성 요소가 다양한 방식으로 인증한다고 가정하자. |
| 36 | +예를 들면 다음과 같다. |
| 37 | + |
| 38 | +- 실행 중인 kubelet은 인증서를 이용하여 인증할 수 있다. |
| 39 | +- 사용자는 토큰으로 인증할 수 있다. |
| 40 | +- 관리자는 개별 사용자에게 제공하는 인증서 집합을 가지고 있다. |
| 41 | + |
| 42 | +kubeconfig 파일을 사용하면 클러스터와 사용자와 네임스페이스를 구성할 수 있다. |
| 43 | +또한 컨텍스트를 정의하여 |
| 44 | +빠르고 쉽게 클러스터와 네임스페이스 간에 전환할 수 있다. |
| 45 | + |
| 46 | +## 컨텍스트 |
| 47 | + |
| 48 | +kubeconfig에서 *컨텍스트* 요소는 편리한 이름으로 접속 매개 변수를 묶는데 사용한다. |
| 49 | +각 컨텍스트는 클러스터, 네임스페이스와 사용자라는 세 가지 매개 변수를 가진다. |
| 50 | +기본적으로 `kubectl` 커맨드라인 툴은 *현재 컨텍스트* 의 매개 변수를 |
| 51 | +사용하여 클러스터와 통신한다. |
| 52 | + |
| 53 | +현재 컨택스트를 선택하려면 다음을 실행한다. |
| 54 | +``` |
| 55 | +kubectl config use-context |
| 56 | +``` |
| 57 | + |
| 58 | +## KUBECONFIG 환경 변수 |
| 59 | + |
| 60 | +`KUBECONFIG` 환경 변수는 kubeconfig 파일 목록을 보유한다. |
| 61 | +Linux 및 Mac의 경우 이는 콜론(:)으로 구분된 목록이다. |
| 62 | +Windows는 세미콜론(;)으로 구분한다. `KUBECONFIG` 환경 변수가 필수는 아니다. |
| 63 | +`KUBECONFIG` 환경 변수가 없으면, |
| 64 | +`kubectl`은 기본 kubeconfig 파일인 `$HOME/.kube/config`를 사용한다. |
| 65 | + |
| 66 | +`KUBECONFIG` 환경 변수가 존재하면, `kubectl`은 |
| 67 | +`KUBECONFIG` 환경 변수에 나열된 파일을 병합한 결과 형태의 |
| 68 | +효과적 구성을 이용한다. |
| 69 | + |
| 70 | +## kubeconfig 파일 병합 |
| 71 | + |
| 72 | +구성을 보려면, 다음 커맨드를 입력한다. |
| 73 | + |
| 74 | +```shell |
| 75 | +kubectl config view |
| 76 | +``` |
| 77 | + |
| 78 | +앞서 설명한 것처럼, 이 출력 내용은 단일 kubeconfig 파일이나 |
| 79 | +여러 kubeconfig 파일을 병합한 결과 일 수 있다. |
| 80 | + |
| 81 | +다음은 kubeconfig 파일을 병합할 때에 `kubectl`에서 사용하는 규칙이다. |
| 82 | + |
| 83 | +1. `--kubeconfig` 플래그를 설정했으면, 지정한 파일만 사용한다. 병합하지 않는다. |
| 84 | + 이 플래그는 오직 한 개 인스턴스만 허용한다. |
| 85 | + |
| 86 | + 그렇지 않고, `KUBECONFIG` 환경 변수를 설정하였다면 |
| 87 | + 병합해야 하는 파일의 목록으로 사용한다. |
| 88 | + `KUBECONFIG` 환경 변수의 나열된 파일은 |
| 89 | + 다음 규칙에 따라 병합한다. |
| 90 | + |
| 91 | + * 빈 파일명은 무시한다. |
| 92 | + * 역 직렬화 불가한 파일 내용에 대해서 오류를 일으킨다. |
| 93 | + * 특정 값이나 맵 키를 설정한 첫 번째 파일을 우선한다. |
| 94 | + * 값이나 맵 키를 변경하지 않는다. |
| 95 | + 예: `현재 컨텍스트`를 설정할 첫 번째 파일의 컨택스트를 유지한다. |
| 96 | + 예: 두 파일이 `red-user`를 지정했다면, 첫 번째 파일의 `red-user` 값만을 사용한다. |
| 97 | + 두 번째 파일의 `red-user` 하위에 충돌하지 않는 항목이 있어도 버린다. |
| 98 | + |
| 99 | + `KUBECONFIG` 환경 변수 설정의 예로, |
| 100 | + [KUBECONFIG 환경 변수 설정](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/#set-the-kubeconfig-environment-variable)를 참조한다. |
| 101 | + |
| 102 | + 그렇지 않다면, 병합하지 않고 기본 kubecofig 파일인 `$HOME/.kube/config`를 사용한다. |
| 103 | + |
| 104 | +1. 이 체인에서 첫 번째를 기반으로 사용할 컨텍스트를 결정한다. |
| 105 | + |
| 106 | + 1. 커맨드라인 플래그의 `--context`를 사용한다. |
| 107 | + 1. 병합된 kubeconfig 파일에서 `current-context`를 사용한다. |
| 108 | + |
| 109 | + 이 시점에서는 빈 컨텍스트도 허용한다. |
| 110 | + |
| 111 | +1. 클러스터와 사용자를 결정한다. 이 시점에서는 컨텍스트가 있을 수도 있고 없을 수도 있다. |
| 112 | + 사용자에 대해 한 번, 클러스터에 대해 한 번 총 두 번에 걸친 |
| 113 | + 이 체인에서 첫 번째 것을 기반으로 클러스터와 사용자를 결정한다. |
| 114 | + |
| 115 | + 1. 커맨드라인 플래그가 존재하면, `--user` 또는 `--cluster`를 사용한다. |
| 116 | + 1. 컨텍스트가 비어있지 않다면, 컨텍스트에서 사용자 또는 클러스터를 가져온다. |
| 117 | + |
| 118 | + 이 시점에서는 사용자와 클러스터는 비워둘 수 있다. |
| 119 | + |
| 120 | +1. 사용할 실제 클러스터 정보를 결정한다. |
| 121 | + 이 시점에서 클러스터 정보가 있을 수 있고 없을 수도 있다. |
| 122 | + 이 체인을 기반으로 클러스터 정보를 구축한다. 첫 번째 것을 사용한다. |
| 123 | + |
| 124 | + 1. 커맨드라인 플래그가 존재하면, `--server`, `--certificate-authority`, `--insecure-skip-tls-verify`를 사용한다. |
| 125 | + 1. 병합된 kubeconfig 파일에서 클러스터 정보 속성이 있다면 사용한다. |
| 126 | + 1. 서버 위치가 없다면 실패한다. |
| 127 | + |
| 128 | +1. 사용할 실제 사용자 정보를 결정한다. |
| 129 | + 사용자 당 하나의 인증 기법만 허용하는 것을 제외하고는 |
| 130 | + 클러스터 정보와 동일한 규칙을 사용하여 사용자 정보를 작성한다. |
| 131 | + |
| 132 | + 1. 커맨드라인 플래그가 존재하면, `--client-certificate`, `--client-key`, `--username`, `--password`, `--token`을 사용한다. |
| 133 | + 1. 병합된 kubeconfig 파일에서 `user` 필드를 사용한다. |
| 134 | + 1. 충돌하는 두 가지 기법이 있다면 실패한다. |
| 135 | + |
| 136 | +1. 여전히 누락된 정보는 기본 값을 사용하고 |
| 137 | + 인증 정보를 묻는 메시지가 표시될 수 있다. |
| 138 | + |
| 139 | +## 파일 참조 |
| 140 | + |
| 141 | +kubeconfig 파일에서 파일과 경로 참조는 kubeconfig 파일의 위치와 관련 있다. |
| 142 | +커맨드라인 상에 파일 참조는 현재 디렉터리를 기준으로 한다. |
| 143 | +`$HOME/.kube/config`에서 상대 경로는 상대적으로, 절대 경로는 |
| 144 | +절대적으로 저장한다. |
| 145 | + |
| 146 | +{{% /capture %}} |
| 147 | + |
| 148 | + |
| 149 | +{{% capture whatsnext %}} |
| 150 | + |
| 151 | +* [다중 클러스터 접근 구성하기](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) |
| 152 | +* [`kubectl config`](/docs/reference/generated/kubectl/kubectl-commands#config) |
| 153 | + |
| 154 | +{{% /capture %}} |
| 155 | + |
| 156 | + |
0 commit comments