>

현재 응용 프로그램을 도킹하고 kubernetes 클러스터에 배포하고 있습니다. 서비스 A와 서비스 B의 두 가지 서비스가 있습니다. 당사의 서비스 중 하나 (예 : service-A)는 웹 소켓을 사용합니다. 우리는 또한 항상 포트 443 그러나 진입 컨트롤러 경로 서비스-B를하는 대신에 웹 소켓 요청에 서비스-B 노선 다른 요청에 규칙이 포트 8080에 대한 서비스-A와 직접 연결 웹 소켓 요청을 유입에 규칙을 구성한 서비스 A 로의 라우팅

따라서 service-B 규칙을 수신에서 제거했지만 여전히 tls 요청 및 요청으로 라우팅됩니다. http 요청 대신 TLS로 다시 라우팅 된 이유가 웹 소켓 연결로 업그레이드 된 이유를 잘 모르겠습니다.

아래에서 수신 구성을 찾으십시오 :

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    field.cattle.io/publicEndpoints: '[{"addresses":[""],"port":443,"protocol":"HTTPS","serviceName":"cluster42:service-B","ingressName":"cluster42:my-ingress","hostname":"cluster42-phase-0 ","path":"/","allNodes":false},{"addresses":[""],"port":443,"protocol":"HTTPS","serviceName":"cluster42:service-A","ingressName":"cluster42:my-ingress","hostname":"cluster42-phase-0 ","path":"/ws-service","allNodes":false}]'
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{"nginx.ingress.kubernetes.io/rewrite-target":"/","nginx.ingress.kubernetes.io/ssl-passthrough":"true"},"labels":{"app":"ingress","chart":" myapplication-chart","heritage":"Tiller","release":"installation-cluster42"},"name":"my-ingress","namespace":"cluster42"},"spec":{"rules":[{"host":"cluster42-phase-0 ","http":{"paths":[{"backend":{"serviceName":"service-B","servicePort":443},"path":"/"}]}}],"tls":[{"hosts":["cluster42-phase-0 "]}]}}
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
    nginx.org/websocket-services: "service-A"
  creationTimestamp: "2019-05-24T11:46:40Z"
  generation: 31
  labels:
    app: ingress
    chart:  myapplication-chart
    heritage: Tiller
    release: installation-cluster42
  name: my-ingress
  namespace: cluster42
  resourceVersion: "57549362"
  selfLink: /apis/extensions/v1beta1/namespaces/cluster42/ingresses/my-ingress
  uid: 98784b1f-7e19-11e9-b2f1-005056b0b58e
spec:
  rules:
  - host: cluster42-phase-0 
    http:
      paths:
      - backend:
          serviceName: service-B
          servicePort: 443
        path: /
      - backend:
          serviceName: service-A
          servicePort: 8080
        path: /ws-service
  tls:
  - hosts:
    - cluster42-phase-0 
status:
  loadBalancer:
    ingress:
    - {}

요청이 service-B 대신 service-A로 라우팅 될 것으로 예상합니다. 구성에 문제가 있거나 잘못된 일이 있으면 알려주세요.

고맙습니다.


  • 답변 # 1

    대상 포트를 사용 열리고하지 않을 경우 확인합니다.

    그런 다음 kube-system 네임 스페이스에 틸러로 액세스 할 수있는 권한이 있는지 확인하십시오. 그렇지 않으면 RBAC와 특별 서비스를 만들어야합니다. 더 많은 정보는 여기에서 찾을 수 있습니다 : tiller-rbac .

    사양 섹션의 수신 구성 파일에 약간의 실수가 있습니다.

    현재 Ingress는 단일 TLS 포트443만 지원하며 TLS 종료를 가정합니다. 따라서 대상 서비스는 포트 443의 서비스 B가 될 것입니다. 따라서 구성 파일에서 tls 섹션을 삭제할 수 있습니다.

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      annotations:
        field.cattle.io/publicEndpoints: '[{"addresses":[""],"port":443,"protocol":"HTTPS","serviceName":"cluster42:service-B","ingressName":"cluster42:my-ingress","hostname":"cluster42-phase-0 ","path":"/","allNodes":false},{"addresses":[""],"port":443,"protocol":"HTTPS","serviceName":"cluster42:service-A","ingressName":"cluster42:my-ingress","hostname":"cluster42-phase-0 ","path":"/ws-service","allNodes":false}]'
        kubectl.kubernetes.io/last-applied-configuration: |
          {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{"nginx.ingress.kubernetes.io/rewrite-target":"/","nginx.ingress.kubernetes.io/ssl-passthrough":"true"},"labels":{"app":"ingress","chart":" myapplication-chart","heritage":"Tiller","release":"installation-cluster42"},"name":"my-ingress","namespace":"cluster42"},"spec":{"rules":[{"host":"cluster42-phase-0 ","http":{"paths":[{"backend":{"serviceName":"service-B","servicePort":443},"path":"/"}]}}],"tls":[{"hosts":["cluster42-phase-0 "]}]}}
        nginx.ingress.kubernetes.io/rewrite-target: /
        nginx.ingress.kubernetes.io/ssl-passthrough: "true"
        nginx.org/websocket-services: "service-A"
      creationTimestamp: "2019-05-24T11:46:40Z"
      generation: 31
      labels:
        app: ingress
        chart:  myapplication-chart
        heritage: Tiller
        release: installation-cluster42
      name: my-ingress
      namespace: cluster42
      resourceVersion: "57549362"
      selfLink: /apis/extensions/v1beta1/namespaces/cluster42/ingresses/my-ingress
      uid: 98784b1f-7e19-11e9-b2f1-005056b0b58e
    spec:
      rules:
      - host: cluster42-phase-0 
        http:
          paths:
          - path: /
            backend:
              serviceName: service-B
              servicePort: 443
          - path: /ws-service
            backend:
              serviceName: service-A
              servicePort: 8080
    status:
      loadBalancer:
        ingress:
        - {}
    
    

  • 이전 AWS Amazon Linux (EC2) AMI에 PostgreSQL 클라이언트 v10 설치
  • 다음 python - Netcdf 데이터를 배열에 포함시킨 후 Nan의 모든 것을 얻는 이유는 무엇입니까?