O gateway do ASM suporta o protocolo HTTPS e o carregamento dinâmico de certificados. Para acessar e gerenciar microsserviços criados com o Knative com segurança, use um gateway do ASM para ativar o acesso HTTPS. Essa configuração criptografa o tráfego para os endpoints de serviço, protege a comunicação entre serviços e aumenta a segurança e a confiabilidade da sua arquitetura.
Pré-requisitos
Crie um serviço do Knative no Knative on ASM. Para mais informações, consulte Implantar uma aplicação serverless no ASM com o Knative.
Configure o nome de domínio personalizado aliyun.com no Knative on ASM. Para mais informações, consulte Usar um nome de domínio personalizado no Knative on ASM.
Crie um certificado e uma chave privada
Antes de usar um nome de domínio, obtenha um registro de Provedor de Conteúdo da Internet (ICP) para ele. Este exemplo usa o nome de domínio aliyun.com para gerar um certificado e uma chave privada e os salva como um Secret.
Se você já tem um certificado válido e uma chave privada para aliyun.com, nomeie o arquivo de certificado como aliyun.com.crt e o arquivo de chave privada como aliyun.com.key.
Caso não tenha um certificado e uma chave privada para aliyun.com, use o OpenSSL para gerá-los seguindo estas etapas:
-
Execute o comando a seguir para criar 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 -
Execute os comandos a seguir para gerar um certificado e uma chave privada para o servidor aliyun.com:
openssl req -out aliyun.com.csr -newkey rsa:2048 -nodes -keyout aliyun.com.key -subj "/CN=aliyun.com/O=myexample organization" openssl x509 -req -days 365 -CA aliyun.root.crt -CAkey aliyun.root.key -set_serial 0 -in aliyun.com.csr -out aliyun.com.crt
Com o certificado e a chave privada prontos, execute o comando a seguir no contexto KubeConfig do cluster onde reside o pod do gateway de entrada. Esse comando cria um Secret que contém o certificado e a chave privada no namespace istio-system. Anote o nome do Secret.
kubectl create -n istio-system secret tls myexample-credential --key=aliyun.com.key --cert=aliyun.com.crt
Ative o acesso HTTPS
-
Salve o conteúdo a seguir como
default.yaml:apiVersion: istio.alibabacloud.com/v1beta1 kind: ASMKnativeConfig metadata: name: default spec: enabled: true useExisting: true tag: 1.4.0 domainConfig: domainName: aliyun.com # Replace this with your domain name. credentialName: myexample-credential # Replace this with the name of your Secret. -
Use o kubectl para se conectar ao Service Mesh e execute o comando a seguir:
kubectl apply -f default.yaml
Acesse o serviço via HTTPS
-
Atualize o arquivo hosts para adicionar um mapeamento para o novo nome de domínio.
Exemplo:
NotaSubstitua
xx.xx.xxx.xxpelo endereço IP real do seu gateway. Para obter o endereço IP do gateway, consulte Obter o endereço IP do gateway de entrada.xx.xx.xxx.xx helloworld-go.default.aliyun.com -
Acesse o serviço via HTTPS.
-
Acesso pela linha de comando
Execute o comando a seguir para acessar o serviço via HTTPS usando o certificado:
curl -k --cert aliyun.com.crt --key aliyun.com.key https://helloworld-go.default.aliyun.com # Expected output Hello Knative! -
Acesso pelo navegador
Insira
https://helloworld-go.default.aliyun.comna barra de endereços do navegador.Hello Knative!NotaComo o certificado é autoassinado, o navegador pode exibir um aviso de segurança ao acessar o serviço. Prossiga com segurança.
-
Operações relacionadas
O Knative on ASM oferece recursos de lançamento canário baseados em tráfego. Ao criar um serviço do Knative, o sistema gera automaticamente a primeira Revision. Sempre que a configuração do serviço muda, uma nova Revision é criada. Implemente um lançamento canário alterando a porcentagem de tráfego direcionado a diferentes Revisions. Para mais informações, consulte Realizar um lançamento canário baseado em tráfego para um serviço do Knative no Knative on ASM.
O Knative Serving injeta um contêiner queue-proxy em cada Pod. Esse contêiner relata métricas de concorrência do contêiner da aplicação para o Autoscaler. Após receber essas métricas, o Autoscaler habilita o dimensionamento automático ajustando o número de Pods no Deployment com base na quantidade de requisições simultâneas e no algoritmo de dimensionamento. Para mais detalhes, consulte Dimensionar automaticamente um serviço com base no número de requisições simultâneas.