Recomendamos o uso de ALB Ingresses para rotear o tráfego de Serviços do Knative em aplicações web de grande escala, aplicações que exigem roteamento de tráfego refinado ou Auto Scaling e aplicações com requisitos complexos de roteamento para requisições HTTP/HTTPS. O ALB opera na camada de aplicação e suporta protocolos como HTTP, HTTPS e Quick UDP Internet Connections (QUIC). O ALB oferece alta elasticidade e processa grandes volumes de tráfego de rede na Camada 7. Os ALB Ingresses funcionam como um gateway totalmente gerenciado, livre de O&M, com suporte a Auto Scaling e múltiplas regras de canary release.
Pré-requisitos
O Knative está implantado no cluster. Para mais informações, consulte Implantar e gerenciar componentes do Knative.
O controlador de ALB Ingress está instalado. Para mais informações, consulte Gerencie o controlador de ALB Ingress.
-
Em clusters que utilizam o plugin de rede Flannel, exponha os serviços do Knative via tipo de serviço NodePort. Para ativar esse comportamento, adicione o parâmetro
eni: falseno ConfigMapconfig-network.-
Abra o arquivo
config-network.yamlpara edição.kubectl -n knative-serving edit configmap config-network -
No editor aberto, adicione a linha
eni: falseabaixo da seçãodata, conforme mostrado abaixo:apiVersion: v1 data: ... eni: false # Add this configuration. ... kind: ConfigMap metadata: name: config-network namespace: knative-serving ...
-
Etapa 1: Implantar um ALB Ingress
Ao implantar um ALB Ingress no Knative, use a instância de ALB criada automaticamente pelo Knative ou especifique uma instância de ALB existente.
Método 1: Crie automaticamente uma instância de ALB ao implantar um ALB Ingress
Configure um ALB Ingress durante a implantação do Knative. Caso o Knative já esteja implantado, modifique o arquivo de configuração do Knative para definir um ALB Ingress.
Configure um ALB Ingress ao implantar o Knative
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em .
-
Na aba Components, clique em Deploy Knative. Na página Deploy Knative, selecione ALB e escolha pelo menos dois vSwitches. Siga as instruções na página para implantar o Knative.
Para mais informações sobre como criar vSwitches, consulte Criar e gerenciar um vSwitch.
Modifique o arquivo de configuração do Knative para configurar um ALB Ingress
Se o Knative já estiver implantado, modifique o arquivo de configuração do Knative para especificar um ALB Ingress. Para mais informações sobre como implantar o Knative, consulte Implantar o Knative em um cluster ACK e Implantar o Knative em um cluster ACK Serverless.
-
Execute o comando a seguir para modificar o arquivo
config-network.yaml:kubectl -n knative-serving edit configmap config-network -
Utilize o modelo a seguir para modificar e salvar o arquivo
config-network.yaml.Modifique
ingress.class: alb.ingress.networking.knative.dev, configure o parâmetrovswitch-ids, salve o arquivoconfig-networke saia. Para mais informações sobre as regiões e zonas que suportam ALB Ingresses, consulte Regiões e zonas do ALB.apiVersion: v1 data: ... ingress.class: alb.ingress.networking.knative.dev # Specify the ALB Ingress controller. vswitch-ids: vsw-uf6kbvc7mccqia2pi****,vsw-uf66scyuw2fncpn38**** # Replace with the IDs of the two vSwitches that you created in different zones. The system automatically binds the vSwitches when you create an ALB instance. intranet: "true" # Create an internal ALB instance. ... kind: ConfigMap metadata: name: config-network namespace: knative-serving ...
Método 2: Usar uma instância de ALB existente para configurar um ALB Ingress
Modifique o arquivo de configuração do Knative para configurar um ALB Ingress utilizando uma instância de ALB existente.
-
Execute o comando a seguir para modificar o arquivo config-network.yaml:
kubectl -n knative-serving edit configmap config-network -
Modifique e salve o arquivo config-network.yaml com base no modelo a seguir.
Altere
ingress.class: alb.ingress.networking.knative.devno arquivo de configuração e definaalbconfigcomo um ALB Ingress existente. Não é necessário configurar o parâmetrovswitch-ids.apiVersion: v1 data: ... ingress.class: alb.ingress.networking.knative.dev # Specify the ALB Ingress controller. albconfig: alb-dev-albconfig # Specify the name of an existing, public-facing ALB instance to reuse. ... kind: ConfigMap metadata: name: config-network namespace: knative-serving ...
Etapa 2: Usar o ALB Ingress para acessar um Serviço
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em .
-
Na aba Services da página Knative, selecione default na lista suspensa Namespace, clique em Create from Template, copie o conteúdo YAML a seguir para o editor de código e clique em Create.
O modelo cria um Serviço chamado
helloworld-go.apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go spec: template: spec: containers: - image: registry-vpc.cn-beijing.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 # Replace the sample region with your actual region. env: - name: TARGET value: "Knative" Na página Services, anote o nome de domínio e o endereço IP do gateway do Serviço
helloworld-gonas colunas Default Domain e Gateway, respectivamente.-
Execute o comando a seguir para acessar o Serviço chamado
helloworld-go:curl -H "Host: helloworld-go.default.example.com" http://alb-******.cn-beijing.alb.aliyuncs.com # Replace the IP address and domain name with the actual values.Saída esperada:
Hello Knative!
(Opcional) Etapa 3: Visualize o painel de monitoramento do Knative
O Knative oferece recursos de monitoramento prontos para uso. Na página Knative, clique na aba Monitoring Dashboards para visualizar os dados de monitoramento do Serviço especificado. Para mais informações sobre como ativar o painel de monitoramento do Knative, consulte Visualizar o painel de monitoramento de serviços do Knative.
Etapas relacionadas
Configure acesso via HTTPS
Para proteger seus Serviços do Knative com Transport Layer Security (TLS), especifique um certificado no ALBConfig. Ative o acesso TLS em um Serviço do Knative usando a anotação knative.k8s.alibabacloud/tls: "true". Exemplo:
Para gerenciar um certificado como Secret, consulte Configure acesso HTTPS.
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld
namespace: default
annotations:
knative.k8s.alibabacloud/tls: "true"
spec:
template:
spec:
containers:
- image: registry-vpc.cn-shenzhen.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 # Replace the sample region with your actual region.
env:
- name: TARGET
value: "Knative"
Execute o comando a seguir para acessar o Serviço HTTPS:
curl -H "Host: helloworld.default.knative.top" https://alb-ppcate4ox6ge9m1wik.cn-shenzhen.alb.aliyuncs.com -k
Saída esperada:
Hello Knative!
Redirecionar requisições HTTP para a porta HTTPS 443
Redirecione requisições HTTP para a porta HTTPS 443 em um Serviço do Knative usando a anotação networking.knative.dev/http-protocol. Exemplo:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
annotations:
networking.knative.dev/http-protocol: redirected
spec:
template:
spec:
containers:
- image: registry-vpc.cn-beijing.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 # Replace the sample region with your actual region.
env:
- name: TARGET
value: "Knative"
Adicionar um registro CNAME
Para facilitar o acesso aos recursos de rede, utilize um registro CNAME para mapear um nome de domínio personalizado ao nome de domínio de uma instância de ALB. Para mais informações, consulte Configure um registro CNAME para uma instância de ALB.
Referências
Defina nomes de domínio personalizados para Serviços do Knative. Para mais informações, consulte Configure domínios e caminhos personalizados.
Configure um certificado para acessar Serviços do Knative via HTTPS. Para mais informações, consulte Configure acesso HTTPS.
Implante um Serviço gRPC no Knative para melhorar a eficiência da rede. Para mais informações, consulte Implantar um serviço gRPC no Knative.
Configure probes para monitorar a integridade e a disponibilidade dos Serviços do Knative. Para mais informações, consulte Configure sondagem de porta no Knative.
Para conectar uma instância de contêiner elástica à Internet, associe um endereço IP elástico (EIP) à instância. Para mais informações, consulte Associar um EIP à instância de contêiner elástica onde um Serviço do Knative é executado.