Configurar o HTTPS Ingress

Pode proteger o gateway de entrada com HTTPS através de TLS simples e ativar ligações HTTPS a páginas Web específicas. Além disso, pode redirecionar as ligações HTTP para HTTPS.

O HTTPS cria um canal seguro numa rede não segura, protegendo contra ataques de intrusos e encriptando o tráfego entre o cliente e o servidor. Para preparar um servidor Web para aceitar ligações HTTPS, um administrador tem de criar um certificado de chave pública para o servidor. Este certificado tem de ser assinado por uma autoridade de certificação fidedigna para que um navegador de Internet o aceite sem aviso.

Edite o gateway denominado external-gateway no espaço de nomes kf usando o editor do Kubernetes integrado:

kubectl edit gateway -n kf external-gateway
  1. Partindo do princípio de que tem um certificado e uma chave para o seu serviço, crie um segredo do Kubernetes para o gateway de entrada. Certifique-se de que o nome do segredo não começa com istio nem prometheus. Para este exemplo, o segredo tem o nome myapp-https-credential.
  2. Inferior a servers:
    1. Adicione uma secção para a porta 443.
    2. Em tls:, defina o credentialName com o nome do segredo que acabou de criar.
    3. Em hosts:, adicione o nome do anfitrião do serviço que quer proteger com HTTPS. Isto pode ser definido para um domínio inteiro através de um caráter universal (por exemplo, *.example.com) ou limitado a apenas um nome de anfitrião (por exemplo, myapp.example.com).
  3. Já deve existir uma secção em servers: para a porta 80 HTTP. Mantenha esta secção na definição do gateway se quiser que todo o tráfego seja recebido como HTTP.
  4. Para redirecionar HTTP para HTTPS, adicione o valor httpsRedirect: true em tls na secção do servidor HTTP. Consulte a documentação do Istio Gateway para referência. Tenha em atenção que adicionar isto na secção onde hosts está definido como * significa que todo o tráfego é redirecionado para HTTPS. Se quiser redirecionar HTTP para HTTPS apenas para uma única app/domínio, adicione uma secção HTTP separada que especifique o redirecionamento.

Abaixo, encontra um exemplo de um Gateway spec que configura o HTTPS para myapp.example.com e redireciona o HTTP para HTTPS para esse anfitrião:

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