O Service Mesh (ASM) melhora a segurança do gateway de entrada com suporte a HTTPS e carregamento dinâmico de certificados. Você pode vincular um certificado à instância do Classic Load Balancer (CLB) associada ao seu gateway de entrada e crie um listener HTTPS. Essa configuração delega a terminação TLS à instância do CLB. A instância descriptografa as requisições HTTPS recebidas e as encaminha como requisições HTTP para o pod do gateway de backend. Este tópico mostra como vincular um certificado e crie um listener HTTPS para a instância de CLB de um gateway de entrada do ASM.
Pré-requisitos
Etapa 1: Preparar um certificado do CLB
Use um certificado e uma chave privada existentes
Caso já tenha um certificado válido e uma chave privada para aliyun.com, nomeie a chave privada como aliyun.com.key e o certificado como aliyun.com.crt.
Gere um novo certificado e uma nova chave privada
Caso não tenha um certificado e uma chave privada, use o OpenSSL para gerar um certificado autoassinado e uma chave privada para aliyun.com.
-
execute o comando a seguir e crie um certificado raiz e uma chave privada.
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=myexample Inc./CN=aliyun.com' -keyout aliyun.root.key -out aliyun.root.crt -
crie um certificado SSL.
No console do Classic Load Balancer (CLB), escolha Classic Load Balancer (CLB) > Certificate Management no painel de navegação à esquerda.
Na página Certificates, clique em Add Certificate.
No painel Add Certificate, selecione Alibaba Cloud Certificates e, em seguida, clique em Create SSL Certificate na parte inferior da lista de certificados.
Na página Certificate Management Service, escolha no painel de navegação à esquerda.
Na aba Uploaded, clique em Uploaded Certificates. Defina o Certificate Name como aliyun.com. Carregue o certificado raiz gerado em Certificate File e a chave privada em Certificate Key. clique em OK e ignore o aviso sobre a cadeia de certificados.
Para obter mais informações sobre como criar um certificado no console do Classic Load Balancer (CLB), consulte selecione Alibaba Cloud Issued Certificate.
Etapa 2: crie um listener HTTPS
O ASM permite personalizar o service do gateway de entrada ao definir parâmetros em um arquivo de configuração yaml. Para obter mais informações, consulte gerencie um gateway de entrada usando KubeAPI.
-
Adicione o seguinte conteúdo ao seu arquivo ingressgateway.yaml.
spec: .... ports: - name: http-0 port: 80 protocol: HTTP targetPort: 80 - name: https-1 port: 443 protocol: HTTPS targetPort: 80 .... serviceAnnotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}" service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: 'https:443' .... serviceType: LoadBalancerO campo
serviceAnnotationsconfigura uma instância do CLB com um listener HTTPS. A instância do CLB recebe e termina as requisições HTTPS enviadas para a porta 443. Em seguida, ela descriptografa essas requisições e as encaminha como requisições HTTP para a porta 80 do pod do gateway de backend. No arquivo yaml, substitua${YOUR_CERT_ID}pelo ID do certificado obtido na Etapa 1. -
execute o comando a seguir para implantar o gateway de entrada.
kubectl apply -f ingressgateway.yaml
Etapa 3: verifique o acesso HTTPS
Acesse o console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha .
-
Na página Ingress Gateway, localize o Service address do gateway de destino.
O Service address é o endereço ip do gateway.
-
execute o comando a seguir para acessar o service productpage via HTTPS.
Substitua
${INGRESS_GATEWAY_IP}pelo endereço ip do gateway obtido na etapa anterior.curl -k -H Host:a.aliyun.com --resolve a.aliyun.com:443:${INGRESS_GATEWAY_IP} https://a.aliyun.com/productpage -IExemplo de saída:
HTTP/2 200 date: Fri, 13 Jan 2023 07:11:45 GMT content-type: text/html; charset=utf-8 content-length: 5294 vary: Accept-Encoding x-envoy-upstream-service-time: 23A saída mostra que a instância do CLB descriptografou o tráfego criptografado com sucesso e o encaminhou para o cluster. Isso confirma que o listener HTTPS está configurado corretamente.