GKE 클러스터를 GCE VM에서 접근하기 (kubectl)

2021. 9. 27. 21:49Cloud

GKE 클러스터를 만드는 것은 대단히 쉽다. 또한 일단 클러스터가 완성되면 Cloud Shell 을 통해 별도의 설정없이 kubectl 로 쉽게 접근할 수도 있다. 

 

 

하지만 Cloud Shell이 만약 본인의 GCE VM 에서 이 GKE Cluster 에 접근하고 싶은 경우도 있을 것이다. 나같은 경우에는 배포에 필요한 YAML 파일들을 Repository 에 저장해서 배포를 하고 있고, 또 GKE에 배포해보면서 YAML 파일들을 수정해야 할 경우도 많이 생긴다. 사실 Cloud Shell 에서 Repository 를 받아서 할 수 있는 경우도 있지만,,, 음 Cloud Shell 이 사라질 수도 있다는 묘한 찝찝함이랄까? 그냥 내 GCE VM에서 작업하고 싶었다. 

 

그렇다면 본인의 GCE VM에서 GKE 클러스터에 접근하기 위해서는 어떻게 해야할까? 우선 나는 GKE 클러스터에 접근한다는 의미는 GCE VM 에서 kubectl 명령어를 사용할 수 있다는 것으로 정의하겠다.

 

일단 별다른 설정없이 만든 GCE VM에서는 GKE 클러스터로 접근할 수 없다. 아마 아래와 같은 Scope 에 대한 권한문제로 접근이 되지 않을 것이다. 

원인은 무엇일까? 결론부터 얘기하자면 해당 GCE VM이 접근할 수 있는 GCP의 다양한 API가 있는데 GKE에 접근하기 위한 API 호출권한이 없기 때문이다. 이건 GCE VM을 만들때 (혹은 만든 후에 수정을 할 수 있는데, 수정이 안되는 항목도 있다) 설정이 가능하지만 보통 바쁜 개발자들은 여기까지 잘 안보고 바로 VM 생성버튼을 누르기 때문에 놓치게 된다. 참고로 말하자면 아래와 같이 GCE VM 생성 옵션에서 API 권한을 조정할 수 있다. 

API access 권한을 조정하는 곳

 

그렇다면 어떻게 해야 할까?

 

 

Solution

 

GKE 클러스터로 접근하기 위한 GCE VM을 생성할 때, Identity and API access > Set access for each API 클릭 > Cloud Platform > Enabled 해주고 생성하자. 주의할 점은 이미 생성된 GCE VM 에서는 이 Cloud Platform API 설정을 변경할 수가 없다. (이미 만들어진 GCE VM에서도 가능한 방법이 있다는데 나는 좀 복잡하고 어려워서 그냥 포기했다)

 

그리고 해당 GKE 클러스터의 연결 메뉴에서 gloud ~ 명령어를 복사해서 해당 GCE VM에서 실행해주자.  

Cloud Shell 을 통해서 GKE에 접근하는 경우

 

만약 GCE VM 에 kubectl 이 설치되어 있지 않다면 아래 명령어로 설치해주자.

 

sudo apt-get install kubectl

 

아래와 같이 GKE 클러스터로 잘 접근할 수 있음을 알 수 있다.

 

이라는