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
- 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
nemprometheus
. Para este exemplo, o segredo tem o nomemyapp-https-credential
. - Inferior a
servers:
- Adicione uma secção para a porta 443.
- Em
tls:
, defina ocredentialName
com o nome do segredo que acabou de criar. - 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
).
- 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. - Para redirecionar HTTP para HTTPS, adicione o valor
httpsRedirect: true
emtls
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 ondehosts
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