Configurazione di Ingress HTTPS

Puoi proteggere il gateway di ingresso con HTTPS utilizzando TLS semplice e attivare 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 connessioni HTTPS, un amministratore deve creare un certificato di chiave pubblica per il server. Affinché un browser web lo accetti senza avviso, questo certificato deve essere firmato da un'autorità di certificazione attendibile.

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

kubectl edit gateway -n kf external-gateway
  1. Supponendo di avere un certificato e una chiave per il servizio, crea un secret Kubernetes per il gateway di ingresso. Assicurati che il nome del secret non inizi con istio o prometheus. Per questo esempio, il secret si chiama myapp-https-credential.
  2. Meno di servers:
    1. Aggiungi una sezione per la porta 443.
    2. In tls:, imposta credentialName sul nome del secret appena creato.
    3. In hosts:, aggiungi il nome host del servizio che vuoi proteggere con HTTPS. Può essere impostato su un intero dominio utilizzando un carattere jolly (ad es. *.example.com) o limitato a un solo nome host (ad es. myapp.example.com).
  3. In servers: dovrebbe già essere presente una sezione per la porta HTTP 80. Mantieni questa sezione nella definizione del gateway se vuoi che tutto il traffico venga inviato come HTTP.
  4. Per reindirizzare HTTP ad HTTPS, aggiungi il valore httpsRedirect: true in tls nella sezione del server HTTP. Per riferimento futuro, consulta la documentazione di Istio Gateway. Tieni presente che l'aggiunta di questo parametro nella sezione in cui hosts è impostato su * significa che tutto il traffico viene reindirizzato a HTTPS. Se vuoi reindirizzare solo da HTTP a HTTPS per una singola app/un singolo dominio, aggiungi una sezione HTTP separata che specifichi il reindirizzamento.

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