쿠버네티즈 ( 이하 쿠베 )에서 작업을 하다 보면, 외부의 서비스 혹은 서버에 접속해야 하는 경우가 발생 할 수 있다.
사실 완전히 외부 네트워크 ( 예를들면 구글이나 그러한 Public IP 에 있는 곳들.. )에 접속하는것은 크게 무리가 없는데,
Private IP ( 예를들면 동일한 프로젝트 안에 MySQL 서버를 둔다거나, Redis 서버를 둔다거나..등등 ) 를 사용하려고 하면..
조금 많이 복잡해진다.
덕분에 엄청나게 고생을 했었던.. ( 거의 2일을 날렸다. )
결론 부터 말하자면, 간단히 Network 설정만으로도 간단히 해결된다.
( 만약에 이미 있는 쿠베 클러스터는 설정 변경하는 방법은 잘 모른다. 새 클러스터만 가능하다 )
클러스터를 생성하는 화면에서 맨 하단으로 내려가면 [ More ] 가 보인다.
여기를 클릭하면 훨씬 많은 메뉴를 볼 수 있는데, 우선 클릭을 한다.
매우 많은 메뉴들이 있는데, 그중에서 [ 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
Congratulations @calmlake79! You have completed some achievement on Steemit and have been rewarded with new badge(s) :
Award for the number of posts published
Click on any badge to view your own Board of Honor on SteemitBoard.
To support your work, I also upvoted your post!
For more information about SteemitBoard, click here
If you no longer want to receive notifications, reply to this comment with the word
STOP
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
좋은 자료 감사합니다. 유용하겠네요
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit