Lo habilité en mi backend tls. Así que todo tráfico debe pasar por "https: // .....". Puedo acceder a él localmente o con Port-Forwarding en Kubernetes. Pero no puedo acceder a él a través del DNS (por ejemplo, https: //hostname.net/backend / ... .).

Obtengo como respuesta:

Bad Request
This combination of host and port requires TLS.

Leí que los certificados podrían estar equivocados, pero con el reenvío de puertos todo funciona, así que no creo que este sea el problema. Los certificados están autofirmados. Solo tengo certificados en mi servidor.

Antes de agregar tls, todo funciona bien.

Aquí está mi servicio y mi ingreso:

apiVersion: v1
kind: Service
metadata:
  name: app-Core
  namespace: namespace
spec:
  clusterIP: xxx.xxx.xxx.xxx
  ports:
  - name: http
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app.kubernetes.io/instance: core
    app.kubernetes.io/name: app
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}
----------------------------------
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  name: core-app-core
  namespace: namespace
spec:
  rules:
  - host: hostname
    http:
      paths:
      - backend:
          serviceName: app-Core
          servicePort: 8080
        path: /backend(/|$)(.*)
      - backend:
          serviceName: app-Core
          servicePort: 8080
        path: /camunda(/|$)(.*)
status:
  loadBalancer:
    ingress:
    - ip: xxx.xxx.xxx.xxx


0
goku736 1 sep. 2020 a las 15:40

1 respuesta

La mejor respuesta

Intente agregar la anotación nginx.ingress.kubernetes.io/backend-protocol: https a su definición de ingreso.

El uso de anotaciones backend-protocol es posible para indicar cómo NGINX debe comunicarse con el servicio de backend. Por defecto, NGINX usa HTTP.

Eche un vistazo: ingress-tls, backend-protocol.

1
Malgorzata 2 sep. 2020 a las 10:34