2.8. NodePort를 사용하여 수신 클러스터 트래픽 구성
OpenShift Container Platform에서는 클러스터에서 실행되는 서비스와 클러스터 외부에서 통신할 수 있습니다. 이 방법에서는 NodePort
를 사용합니다.
2.8.1. NodePort를 사용하여 클러스터로 트래픽 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
클러스터의 모든 노드에서 특정 포트에 서비스를 노출하려면 NodePort
유형의 서비스
리소스를 사용하십시오. 포트는 Service
리소스의 .spec.ports[*].nodePort
필드에 지정됩니다.
노드 포트를 사용하려면 추가 포트 리소스가 필요합니다.
NodePort
는 서비스를 노드 IP 주소의 정적 포트에 노출합니다. NodePort
는 기본적으로 30000
~32767
범위에 있으며, 서비스에서 의도한 포트와 NodePort
가 일치하지 않을 수 있습니다. 예를 들어, 포트 8080
은 노드에서 포트 31020
으로 노출될 수 있습니다.
관리자는 외부 IP 주소가 노드로 라우팅되는지 확인해야 합니다.
NodePort
및 외부 IP는 독립적이며 둘 다 동시에 사용할 수 있습니다.
이 섹션의 절차에는 클러스터 관리자가 수행해야 하는 사전 요구 사항이 필요합니다.
2.8.2. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차를 시작하기 전에 관리자는 다음을 수행해야 합니다.
- 요청이 클러스터에 도달할 수 있도록 외부 포트를 클러스터 네트워킹 환경으로 설정합니다.
클러스터 관리자 역할의 사용자가 한 명 이상 있는지 확인합니다. 이 역할을 사용자에게 추가하려면 다음 명령을 실행합니다.
oc adm policy add-cluster-role-to-user cluster-admin <user_name>
$ oc adm policy add-cluster-role-to-user cluster-admin <user_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 클러스터에 대한 네트워크 액세스 권한이 있는 마스터와 노드가 클러스터 외부에 각각 1개 이상씩 있는 OpenShift Container Platform 클러스터가 있어야 합니다. 이 절차에서는 외부 시스템이 클러스터와 동일한 서브넷에 있다고 가정합니다. 다른 서브넷에 있는 외부 시스템에 필요한 추가 네트워킹은 이 주제에서 다루지 않습니다.
2.8.3. 프로젝트 및 서비스 생성 링크 복사링크가 클립보드에 복사되었습니다!
공개하려는 프로젝트와 서비스가 존재하지 않는 경우 프로젝트를 생성한 다음 서비스를 생성하세요.
프로젝트와 서비스가 이미 존재하는 경우 서비스를 노출하여 경로를 생성하는 절차로 건너뜁니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치하고 클러스터 관리자로 로그인합니다.
프로세스
oc new-project
명령을 실행하여 서비스에 대한 새 프로젝트를 만듭니다.oc new-project <project_name>
$ oc new-project <project_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc new-app
명령을 사용하여 서비스를 생성합니다.oc new-app nodejs:12~https://github.com/sclorg/nodejs-ex.git
$ oc new-app nodejs:12~https://github.com/sclorg/nodejs-ex.git
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 서비스가 생성되었는지 확인하려면 다음 명령을 실행하세요.
oc get svc -n <project_name>
$ oc get svc -n <project_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nodejs-ex ClusterIP 172.30.197.157 <none> 8080/TCP 70s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nodejs-ex ClusterIP 172.30.197.157 <none> 8080/TCP 70s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고기본적으로 새 서비스에는 외부 IP 주소가 없습니다.
2.8.4. 경로를 생성하여 서비스 노출 링크 복사링크가 클립보드에 복사되었습니다!
oc expose
명령을 사용하여 서비스를 경로로 노출할 수 있습니다.
사전 요구 사항
- OpenShift Container Platform에 로그인했습니다.
프로세스
노출하려는 서비스가 있는 프로젝트에 로그인합니다.
oc project <project_name>
$ oc project <project_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션에 대한 노드 포트를 노출하려면 다음 명령을 입력하여 서비스의 사용자 정의 리소스 정의(CRD)를 수정합니다.
oc edit svc <service_name>
$ oc edit svc <service_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 노드 포트가 노출된 상태로 서비스를 사용할 수 있는지 확인하려면 다음 명령을 입력합니다.
oc get svc -n myproject
$ oc get svc -n myproject
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nodejs-ex ClusterIP 172.30.217.127 <none> 3306/TCP 9m44s nodejs-ex-ingress NodePort 172.30.107.72 <none> 3306:31345/TCP 39s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nodejs-ex ClusterIP 172.30.217.127 <none> 3306/TCP 9m44s nodejs-ex-ingress NodePort 172.30.107.72 <none> 3306:31345/TCP 39s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항:
oc new-app
명령에서 자동 생성한 서비스를 제거하려면 다음 명령을 입력합니다.oc delete svc nodejs-ex
$ oc delete svc nodejs-ex
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
서비스 노드 포트가
30000-32767
범위의 포트로 업데이트되었는지 확인하려면 다음 명령을 입력하세요.oc get svc
$ oc get svc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예제 출력에서 업데이트된 포트는
30327
입니다.출력 예
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE httpd NodePort 172.xx.xx.xx <none> 8443:30327/TCP 109s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE httpd NodePort 172.xx.xx.xx <none> 8443:30327/TCP 109s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow