개발하자

Kubernetes: 동일한 포트에서 실행되는 마이크로 서비스?

Cuire 2022. 11. 26. 06:10
반응형

Kubernetes: 동일한 포트에서 실행되는 마이크로 서비스?

나는 (지금까지) 마이크로서비스 풀스택 웹 애플리케이션을 구축하고 있다.

ReactJS(클라이언트 마이크로서비스) : 3000으로 수신

인증(Auth microservice) : 3000// 동일한 포트가 잘못 할당되어 수신 대기

엄밀히 말하면, 내가 지금까지 들은/배운 것은 우리 두 포드가 에서 작동한다는 것이다. 나는 정말 혼란스럽다.

ingress-nginx 구성:

apiVersion: extensions/v1beta1
kind: Ingress
metadata: 
    name: ingress-service 
    annotations: 
        kubernetes.io/ingress.class: nginx 
        nginx.ingress.kubernetes.io/use-regex: 'true'
spec: 
    ## our custom routing rules  
    rules: 
        - host: ticketing.dev 
          http: 
            paths:
                - path: /api/users/?(.*) 
                  backend: 
                    serviceName: auth-srv 
                    servicePort: 3000
                - path: /?(.*)
                  backend: 
                    serviceName: client-srv
                    servicePort: 3000 

정말 궁금한데, 내가 여기서 뭔가 빠뜨린 게 있나요?




백엔드에는 auth-srv와 client-srv라는 두 가지 다른 서비스가 있습니다. 따라서 두 개의 서로 다른 주소를 가진 다음 각 주소에서 원하는 포트를 사용할 수 있습니다. 즉, 두 개의 서로 다른 서비스에서 동일한 포트를 사용할 수 있습니다.




각 포드에는 고유한 네트워크 네임스페이스와 고유한 IP 주소가 있지만, 포드별 IP 주소는 클러스터 외부에서 연결할 수 없고 클러스터 내부에서 실제로 검색할 수 없습니다. 각 포드에는 고유한 IP 주소가 있기 때문에 모두가 동일한 포트를 수신하는 데 필요한 만큼의 포드를 가질 수 있습니다.

각 서비스에는 고유한 IP 주소도 있습니다. 다시 말해, 애플리케이션이 찾을 수 있도록 DNS 이름을 가지고 있지만 클러스터 외부에서 연결할 수 없습니다. 각 서비스에는 고유한 IP 주소가 있기 때문에 모두가 동일한 포트를 수신하는 데 필요한 만큼의 서비스를 사용할 수 있습니다. 서비스 포트는 포드 포트와 같거나 다를 수 있습니다.

수신 컨트롤러는 HTTP를 통해 클러스터 외부에서 연결할 수 있습니다. 표시된 입력 사양은 HTTP 라우팅 규칙을 정의합니다. TLD를 사용하여 DNS 서비스를 설정하고 입력 컨트롤러에서 해당 지점에 대한 A 레코드를 정의하면 클러스터 내에서 에 전달되고 로 이동합니다. 그들은 그들이 연결된 포드로 전송될 것이다.

여러 포드 또는 서비스가 동일한 포트를 갖는 것에 대한 특별한 금지 사항은 없습니다. 개별 포드가 포트 3000, 8000, 8080 등에서 수신하더라도 표준 HTTP 포트이기 때문에 모든 HTTP 서비스를 포트 80에서 수신하도록 설정하는 것을 좋아하는 경향이 있습니다.


반응형