Saiba como configurar o Knative Serving para usar os seus próprios certificados SSL/TLS.
Em alternativa, pode usar a funcionalidade de certificados TLS geridos, que cria e renova automaticamente certificados TLS através do Let's Encrypt
Para usar os seus próprios certificados, armazena os certificados TLS num segredo do Kubernetes e, em seguida, configura o gateway de entrada do Cloud Service Mesh para usar esse segredo.
Antes de começar
- Estas instruções pressupõem que já obteve os seus certificados TLS.
- Tem de configurar um domínio personalizado. Para ver detalhes, consulte o artigo Mapear domínios personalizados.
- Tem de configurar cada um dos seus serviços de publicação do Knative que usam o
gateway de entrada
para publicar tráfego externo. Se estes serviços virados para o exterior não estiverem configurados para usar os seus certificados TLS, os serviços não vão poder validar uma ligação HTTPS e, por isso, nunca vão atingir o estado
ready
.
Armazenar certificados TLS num secret do Kubernetes
Para armazenar os certificados num segredo:
Abra um terminal e navegue para o diretório onde se encontram os seus certificados TLS.
Use o seguinte comando para criar um segredo que armazena os seus certificados:
kubectl create --namespace INGRESS_NAMESPACE secret tls SECRET_NAME \ --key PRIVATE_KEY.pem \ --cert FULL_CHAIN.pem
Substituição:
- INGRESS_NAMESPACE com o espaço de nomes do seu serviço de entrada,
istio-ingressgateway
. Especifique oistio-system
namespace se instalou o Cloud Service Mesh com a configuração predefinida. - SECRET_NAME com o nome que quer usar para o seu segredo do Kubernetes.
- PRIVATE_KEY.pem com o nome do ficheiro que contém a chave privada do certificado.
- FULL_CHAIN.pem com o nome do ficheiro que contém o seu certificado público.
- INGRESS_NAMESPACE com o espaço de nomes do seu serviço de entrada,
Já pode configurar o gateway de entrada para usar o segredo que acabou de criar para o seu certificado TLS.
Configurar o gateway de entrada para usar os seus certificados
Modifique o gateway de entrada do Cloud Service Mesh para usar o segredo que criou para os seus certificados TLS:
Abra o YAML do gateway de entrada no modo de edição executando o seguinte comando:
kubectl edit gateway knative-ingress-gateway --namespace knative-serving
Exemplo da configuração do gateway de entrada predefinido:
apiVersion: networking.istio.io/v1beta1 kind: Gateway metadata: ... # other skipped configuration ... spec: selector: istio: ingressgateway servers: - hosts: - '*' port: name: http number: 80 protocol: HTTP
Configure o gateway de entrada para usar o seu segredo anexando os atributos
hosts
,port
etls
ao YAML existente.Para configurar todos os serviços para usar o mesmo segredo: anexe o seguinte à sua configuração YAML e especifique
"*"
como o valor do atributohosts
:... # other skipped configuration ... - hosts: - "*" port: name: https number: 443 protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET_NAME
Substitua SECRET_NAME pelo nome do segredo que criou.
Para configurar individualmente cada um dos seus serviços: anexe o seguinte à sua configuração YAML e especifique os valores dos atributos
hosts
usando o nome e o espaço de nomes do serviço:Para cada serviço, especifica valores para os atributos
hosts
,port
etls
:... # other skipped configuration ... - hosts: - SERVICE_NAME.SERVICE_NAMESPACE.CUSTOM_DOMAIN port: number: 443 name: https-SERVICE_NAME protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET_NAME
Substituição:
- SERVICE_NAME com o nome do serviço Knative serving. Todos os serviços que usam o gateway de entrada para publicar tráfego externo têm de ser configurados individualmente.
- SERVICE_NAMESPACE com o nome do espaço de nomes no qual o serviço está a ser executado.
- CUSTOM_DOMAIN com o domínio personalizado para o qual configurou o serviço para usar.
- SECRET_NAME com o nome do segredo que quer que o serviço use. Se criou vários segredos para diferentes conjuntos de certificados TLS, pode especificar que segredo cada serviço usa.
Guarde as alterações.
Já pode usar o protocolo HTTPS para aceder aos seus serviços Knative Serving implementados.
Exemplos
- Configurar todos os serviços:
Este exemplo demonstra como configurar todos os serviços para usar o segredo
TLSsecret
:apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: ... # other skipped configuration ... spec: selector: istio: ingressgateway servers: - hosts: - "*" port: name: http number: 80 protocol: HTTP - hosts: - "*" port: name: https number: 443 protocol: HTTPS tls: mode: SIMPLE credentialName: TLSsecret
- Configure serviços individuais:
Este exemplo demonstra como configurar individualmente todos os três serviços que estão a publicar tráfego da Internet:
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: ... # other skipped configuration ... spec: selector: istio: ingressgateway servers: - hosts: - "*" port: name: http number: 80 protocol: HTTP - hosts: - prodservice.prodnamespace.my-custom-domain.com port: number: 443 name: https-prodservice protocol: HTTPS tls: mode: SIMPLE credentialName: TLSsecret - hosts: - experiment.namespace.my-custom-domain.com port: number: 443 name: https-experiment protocol: HTTPS tls: mode: SIMPLE credentialName: TLSsecret - hosts: - fallbackservice.anothernamespace.my-custom-domain.com port: number: 443 name: https-fallbackservice protocol: HTTPS tls: mode: SIMPLE credentialName: anotherTLSsecret