Configurar la entrada HTTPS

Puedes proteger la pasarela de entrada con HTTPS mediante TLS simple y habilitar las conexiones HTTPS a páginas web específicas. Además, puedes redirigir las conexiones HTTP a HTTPS.

HTTPS crea un canal seguro en una red no segura, lo que protege contra ataques man-in-the-middle y cifra el tráfico entre el cliente y el servidor. Para preparar un servidor web para que acepte conexiones HTTPS, un administrador debe crear un certificado de clave pública para el servidor. Este certificado debe estar firmado por una autoridad de certificación de confianza para que un navegador web lo acepte sin mostrar ninguna advertencia.

Edita la pasarela llamada external-gateway en el espacio de nombres kf con el editor de Kubernetes integrado:

kubectl edit gateway -n kf external-gateway
  1. Si tienes un certificado y una clave para tu servicio, crea un secreto de Kubernetes para la puerta de enlace de entrada. Asegúrate de que el nombre del secreto no empiece por istio ni prometheus. En este ejemplo, el secreto se llama myapp-https-credential.
  2. Menos de servers:
    1. Añade una sección para el puerto 443.
    2. En tls:, asigna a credentialName el nombre del secreto que acabas de crear.
    3. En hosts:, añade el nombre de host del servicio que quieras proteger con HTTPS. Se puede definir en todo un dominio mediante un comodín (por ejemplo, *.example.com) o limitarse a un solo nombre de host (por ejemplo, myapp.example.com).
  3. Ya debería haber una sección en servers: para el puerto 80 HTTP. Mantenga esta sección en la definición de Gateway si quiere que todo el tráfico llegue como HTTP.
  4. Para redirigir HTTP a HTTPS, añade el valor httpsRedirect: true en tls en la sección del servidor HTTP. Consulta la documentación de Istio Gateway. Ten en cuenta que, si añades este código en la sección donde hosts está configurado como *, significa que todo el tráfico se redirige a HTTPS. Si solo quiere redirigir el tráfico de HTTP a HTTPS en una aplicación o un dominio, añada una sección HTTP independiente en la que especifique la redirección.

A continuación, se muestra un ejemplo de una puerta de enlace spec que configura HTTPS para myapp.example.com y redirige HTTP a HTTPS para ese host:

spec:
  selector:
    istio: ingressgateway
  servers:
  - hosts:
    - myapp.example.com
    port:
      name: https
      number: 443
      protocol: HTTPS
    tls:
      credentialName: myapp-https-credential
      mode: SIMPLE
  - hosts:
    - myapp.example.com
    port:
      name: http-my-app
      number: 80
      protocol: HTTP
    tls:
      httpsRedirect: true
  - hosts:
    - '*'
    port:
      name: http
      number: 80
      protocol: HTTP