Configurazione di Ingress HTTPS

Puoi proteggere il gateway in entrata con HTTPS utilizzando semplici protocolli TLS e attiva le connessioni HTTPS a pagine web specifiche. Inoltre, puoi reindirizzare le connessioni HTTP a HTTPS.

HTTPS crea un canale sicuro su una rete non sicura, proteggendo dagli attacchi man in the middle e criptando il traffico tra il client e il server. Per preparare un server web ad accettare le connessioni HTTPS, un amministratore deve creare un certificato di chiave pubblica per il server. Questo certificato deve essere firmato da un'autorità di certificazione attendibile affinché un browser web lo accetti senza avviso.

Modifica il gateway denominato gateway esterno nello spazio dei nomi kf utilizzando l'editor Kubernetes integrato:

kubectl edit gateway -n kf external-gateway
  1. Supponendo che tu disponga di un certificato e di una chiave per il tuo servizio, crea un secret di Kubernetes per il gateway in entrata. Assicurati che il nome del secret non inizi con istio o prometheus. Per questo esempio, il secret è denominato myapp-https-credential.
  2. Meno di servers:
    1. Aggiungi una sezione per la porta 443.
    2. In tls:, imposta credentialName sul nome del secret che hai appena creato.
    3. In hosts:, aggiungi il nome host del servizio che vuoi proteggere con HTTPS. È possibile impostare un intero dominio utilizzando un carattere jolly (ad esempio *.example.com) o un solo nome host (ad esempio myapp.example.com).
  3. Dovrebbe già essere presente una sezione in servers: per la porta 80 HTTP. Mantieni questa sezione nella definizione del gateway se vuoi che tutto il traffico arrivi come HTTP.
  4. Per reindirizzare HTTP a HTTPS, aggiungi il valore httpsRedirect: true nella sezione tls del server HTTP. Per informazioni, consulta la documentazione di Istio Gateway. Tieni presente che aggiungendolo alla sezione dove hosts è impostato su *, tutto tutto il traffico viene reindirizzato a HTTPS. Se vuoi reindirizzare HTTP a HTTPS solo per una singola app/dominio, aggiungi una sezione HTTP separata che specifichi il reindirizzamento.

Di seguito è riportato un esempio di gateway spec che configura HTTPS per myapp.example.com e reindirizza HTTP a HTTPS per l'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