Hice el tutorial del controlador de ingreso nginx de github y tablero de instrumentos de kubernetes expuesto

kubernetes-dashboard   NodePort    10.233.53.77    <none>        443:31925/TCP   20d

Ingreso creado

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    ingress.kubernetes.io/ssl-passthrough: "true"
    nginx.org/ssl-backends: "kubernetes-dashboard"
    kubernetes.io/ingress.allow-http: "false"
  name: dashboard-ingress
  namespace: kube-system
spec:
  tls:
  - hosts:
    - serverdnsname
    secretName: kubernetes-dashboard-certs
  rules:
  - host: serverdnsname
    http:
      paths:
      - path: /dashboard
        backend:
          serviceName: kubernetes-dashboard
          servicePort: 443

ingress-nginx   ingress-nginx          NodePort    10.233.21.200   <none>        80:30827/TCP,443:32536/TCP   5h

https: // serverdnsname: 32536 / dashboard pero el panel arroja un error

2018/01/18 14:42:51 http: TLS handshake error from ipWhichEndsWith.77:52686: tls: first record does not look like a TLS handshake

Y registros del controlador de ingreso

2018/01/18 14:42:51 [error] 864#864: *37 upstream sent no valid HTTP/1.0 header while reading response header from upstream, client: 10.233.82.1, server: serverdnsname, request: "GET /dashboard HTTP/2.0", upstream: "http://ipWhichEndsWith.249:8443/dashboard", host: "serverdnsname:32536"
10.233.82.1 - [10.233.82.1] - - [18/Jan/2018:14:42:51 +0000] "GET /dashboard HTTP/2.0" 009 7 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36 OPR/49.0.2725.64" 25 0.001 [kube-system-kubernetes-dashboard-443] ipWhichEndsWith.249:8443 7 0.001 200

En mi opinión, está relacionado con la redirección de nginx hacia arriba: " http: //ipWhichEndsWith.249: 8443 / dashboard ". intentó actualizar la versión de la imagen del controlador a 0.9.0-beta.19 - no ayudó

Gracias por cualquier ayuda.

12
Jevgenij Alterman 18 ene. 2018 a las 18:26

3 respuestas

La mejor respuesta

Como señaló, parece que nginx está enviando su solicitud https a ipWhichEndsWith.249:8443, que es un punto final HTTPS, utilizando http como protocolo.

Debe agregar la siguiente anotación a su PodSpec:

ÚLTIMA

Esta anotación se agregó para reemplazar la anotación en desuso desde 0.18.0

# 2871 Agregar soporte para el protocolo AJP

nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"

DEPRECADO

Esta anotación quedó en desuso en 0.18.0 y se eliminó después del lanzamiento de 0.20.0

# 3203 Eliminar anotaciones grpc-backend y secure-backend ya en desuso

nginx.ingress.kubernetes.io/secure-backends: "true"

Esto debería hacer que nginx reenvíe su solicitud a los pods con https.

Fuente: https : //github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md#backend-protocol

Documentos: https: //kubernetes.github. io / ingress-nginx / user-guide / nginx-configuration / annotations / # backend-protocol

25
J J B 27 mar. 2019 a las 14:44

Solo por referencia de código. Hay 2 gtochas. Establecer las anotaciones adecuadas ya que el panel habla https y usa el espacio de nombre correcto para el ingreso. tls config es opcional.

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: dashboard-google
  namespace: kube-system
  annotations:
    nginx.ingress.kubernetes.io/secure-backends: "true"
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
spec:
  tls:
    - hosts:
      - kube.mydomain.com
      secretName: tls-secret
  rules:
    - host: kube.mydomain.com
      http:
        paths:
        - path: /
          backend:
            serviceName: kubernetes-dashboard
            servicePort: 443
4
CESCO 14 mar. 2019 a las 15:22

También puedes usar los gráficos de timón disponibles aquí

https://github.com/helm/charts/tree/master/stable/kubernetes-dashboard

Luego configure su archivo values.yaml para anular las partes ingress como habilitarlo y agregar hosts disponibles.

1
kiedis 17 dic. 2018 a las 10:06