쿠버네티즈 ( 이하 쿠베 )에서 작업을 하다 보면, 외부의 서비스 혹은 서버에 접속해야 하는 경우가 발생 할 수 있다.
사실 완전히 외부 네트워크 ( 예를들면 구글이나 그러한 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
좋은 자료 감사합니다. 유용하겠네요