Esta página descreve como configurar o Cloud Run for Anthos para usar certificados SSL/TLS próprios nos casos em que você não quer utilizar o recurso de certificados TLS gerenciados.
O gateway de entrada do Istio é compatível com o protocolo TLS fornecido pelo certificado depois que você o armazena em um secret do Kubernetes e o especifica na especificação do gateway de entrada do Istio.
Antes de começar
Para seguir estas instruções, é necessário ter seus próprios certificados TLS.
Como armazenar um certificado TLS/chave particular em um secret do Kubernetes
Para armazenar os certificados em um Secret, siga estas etapas:
Copie os certificados no diretório atual.
Use o comando a seguir para criar um secret que armazene os certificados, em que
privkey.pem
contenha sua chave particular de certificado efullchain.pem
contenha o certificado público:kubectl create --namespace gke-system secret tls SECRET_NAME \ --key privkey.pem \ --cert fullchain.pem
Como especificar o certificado TLS para o gateway de entrada do Istio
Modifique a especificação do gateway de entrada do Istio para usar o secret do Kubernetes que contém o certificado TLS:
Abra a especificação do gateway compartilhado para edição:
kubectl edit gateway gke-system-gateway --namespace knative-serving
Especifique o certificado TLS usando o secret criado anteriormente. Basta adicionar a seguinte seção à especificação do gateway:
- hosts: - "*" port: name: https number: 443 protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET_NAME
As especificações do gateway ficarão assim:
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: # ... skipped ... 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: SECRET_NAME
Se você estiver adicionando vários certificados TLS para dois serviços diferentes em diferentes namespaces, a especificação do gateway poderá ser parecida com o seguinte:
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: # ... skipped ... spec: selector: istio: ingressgateway servers: - hosts: - "*" port: name: http number: 80 protocol: HTTP - port: number: 443 name: https-SERVICE1_NAME protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET1_NAME hosts: - SERVICE1_NAME.NAMESPACE1.example.com - port: number: 443 name: https-SERVICE2_NAME protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET2_NAME hosts: - SERVICE2_NAME.NAMESPACE2.example.com
Salve as alterações.
Após essa alteração, use o protocolo HTTPS para acessar seus serviços implantados.