Como configurar entradas HTTPS

É possível usar o TLS simples para proteger o gateway de entrada com HTTPS e ativar conexões HTTPS para páginas da Web específicas. Também é possível redirecionar conexões HTTP para HTTPS.

O HTTPS cria um canal seguro em uma rede não segura, protegendo contra ataques intermediários e criptografando o tráfego entre o cliente e o servidor. Para preparar um servidor da Web para aceitar conexões HTTPS, um administrador precisa criar um certificado de chave pública para o servidor. O certificado precisa ser assinado por uma autoridade de certificação confiável para que um navegador da Web aceite-o sem emitir avisos.

Edite o gateway chamado external-gateway no namespace kf usando o editor integrado do Kubernetes:

kubectl edit gateway -n kf external-gateway
  1. Pressupondo que você tem um certificado e uma chave para o serviço, crie um secret do Kubernetes para o gateway de entrada. Verifique se o nome do secret não começa com istio ou prometheus. Neste exemplo, o secret é chamado de myapp-https-credential.
  2. Em servers:
    1. Adicione uma seção para a porta 443.
    2. Em tls:, defina credentialName como o nome do secret que você acabou de criar.
    3. Em hosts:, adicione o nome do host do serviço que você quer proteger com HTTPS. Isso pode ser definido como todo o domínio usando um caractere curinga (por exemplo, *.example.com) ou com escopo definido apenas para um nome de host (por exemplo, myapp.example.com).
  3. É necessário que já exista uma seção em servers: para a porta 80 HTTP. Mantenha essa seção na definição do gateway se quiser que todo o tráfego entre como HTTP.
  4. Para redirecionar HTTP para HTTPS, adicione o valor httpsRedirect: true em tls na seção do servidor HTTP. Consulte a documentação do gateway do Istio para referência. A adição na seção em que hosts é definido como * significa que todo o tráfego é redirecionado para HTTPS. Se quiser redirecionar o HTTP para HTTPS em um único app/domínio, adicione uma seção HTTP separada para especificá-lo.

Veja abaixo um exemplo de um gateway spec que configura HTTPS para myapp.example.com e redireciona HTTP para HTTPS para esse 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