4th Street Bar Hive-Bar

Hive-Bar Powered by Hive beta-fdb5b5b

Community post

Google Kubernetes Engine 에서 Private Network 접속하기

쿠버네티즈 ( 이하 쿠베 )에서 작업을 하다 보면, 외부의 서비스 혹은 서버에 접속해야 하는 경우가 발생 할 수 있다.
사실 완전히 외부 네트워크 ( 예를들면 구글이나 그러한 Public IP 에 있는 곳들.. )에 접속하는것은 크게 무리가 없는데,
Private IP ( 예를들면 동일한 프로젝트 안에 MySQL 서버를 둔다거나, Redis 서버를 둔다거나..등등 ) 를 사용하려고 하면..
조금 많이 복잡해진다.

덕분에 엄청나게 고생을 했었던.. ( 거의 2일을 날렸다. )

결론 부터 말하자면, 간단히 Network 설정만으로도 간단히 해결된다.
( 만약에 이미 있는 쿠베 클러스터는 설정 변경하는 방법은 잘 모른다. 새 클러스터만 가능하다 )

screenshot 2018-04-11 15.22.46.png

클러스터를 생성하는 화면에서 맨 하단으로 내려가면 [ More ] 가 보인다.
여기를 클릭하면 훨씬 많은 메뉴를 볼 수 있는데, 우선 클릭을 한다.

screenshot 2018-04-11 15.27.00.png

매우 많은 메뉴들이 있는데, 그중에서 [ Private cluster ( beta ) ] 를 찾는다.
( 현재 내 프로젝트는 영어로 설정이 되어 있다 한글의 경우 조금 다를 수 있다.

이 부분을 Disabled 에서 Enabled 로 변경을 하면 새로 많은 메뉴들이 추가된것을 확인 할 수 있다.

Master IP range 는 예시에 있는것 처럼 172.16.0.0/28로 한다.
( 나머지는 비워둠 )

해당 프로젝트에서 내부적으로 내부 IP를 이용하여 다른 서버에 접속할때 사용하면 정상적으로 접속이 된다.

역으로 Private Network상의 다른 서버에서 쿠베 내부의 서비스에 접속하려면 다음과 같은 2가지 방법이 있다.

$ kubectl describe svc nginx-service
Name:                     nginx-service
Namespace:                default
Labels:                   app=nginx
Annotations:              <none>
Selector:                 app=nginx
Type:                     NodePort
IP:                       10.0.31.7
Port:                     <unset>  80/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  30056/TCP
Endpoints:                10.4.0.10:80,10.4.1.9:80,10.4.2.11:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

위와 같은 식으로 정보를 얻어내면 Endpoints 가 개별 접속 주소이다. 네트워크상의 다른 서버에서

# curl 10.4.0.10

와 같은 식으로 하면 접속을 확인할 수 있다.

좀더 자세한 설명은 구글의 GCP 페이지를 통해서 알 수 있다.

https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters

7 upvotes $0.04

Replies (2)

Review before signing

Posting as . Signing with . Keychain permission: Posting. Hive Keychain will ask you to approve this action next.


  
Technical details

Operation fingerprint: