O CloudBox é um serviço de nuvem totalmente gerenciado que integra hardware e software da Alibaba Cloud — incluindo recursos de computação, armazenamento e rede — ao seu data center on-premises. Essa integração oferece segurança de dados, processamento local e acesso de baixa latência. Ao adicionar um cluster ACK com um pool de nós CloudBox ao Service Mesh (ASM), o ASM gerencia o tráfego entre os pools de nós da nuvem pública e do CloudBox com roteamento unificado, políticas de segurança e observabilidade.
As seções a seguir detalham como implantar um gateway de entrada ASM em uma zona CloudBox e verificar a conectividade de ponta a ponta com uma aplicação de exemplo.
Visão geral da implantação
A configuração consiste em três etapas:
Implantar um gateway de entrada na zona CloudBox -- Crie um recurso
IstioGatewaycom anotações de zona para garantir que tanto a instância do Classic Load Balancer (CLB) quanto o pod do gateway fiquem na zona CloudBox.Implantar uma aplicação e configurar o roteamento -- Agende a aplicação httpbin nos nós CloudBox e direcione o tráfego pelo gateway de entrada.
Verificar a conectividade -- Envie requisições de teste pelo gateway para confirmar que o tráfego chega à aplicação.
Restrições de rede do CloudBox
O CloudBox impõe restrições ao funcionamento de Services do tipo LoadBalancer em comparação com as zonas de nuvem pública. Instâncias CLB em uma zona CloudBox aceitam apenas instâncias Elastic Compute Service (ECS) do CloudBox como backends, enquanto instâncias CLB em zona de nuvem pública aceitam apenas instâncias ECS da nuvem pública. Como as instâncias CLB do CloudBox não suportam associação de Elastic IP Address (EIP), não é possível criar um CLB com acesso público nessa zona.
|
Capacidade |
Zona de nuvem pública |
Zona CloudBox |
|
Nós de backend do LoadBalancer |
Apenas instâncias ECS da nuvem pública |
Apenas instâncias ECS do CloudBox |
|
Associação de EIP ao CLB |
Suportado |
Não suportado |
|
CLB com acesso público |
Suportado |
Não suportado |
Devido a essas restrições, o CLB do gateway e o pod do gateway devem residir na mesma zona. Um CLB na zona de nuvem pública não consegue rotear tráfego para pods na zona CloudBox, e vice-versa.
Pré-requisitos
Antes de começar, certifique-se de ter:
Um cluster ACK com um pool de nós CloudBox. Para mais informações, consulte Usar recursos do CloudBox em um cluster ACK
Uma instância ASM com o cluster ACK adicionado. Para mais informações, consulte Criar uma instância ASM e Adicionar um cluster a uma instância ASM
Implantar um gateway de entrada na zona CloudBox
Para posicionar o gateway na zona CloudBox, configure dois campos na especificação do IstioGateway:
**
serviceAnnotations** -- Fixa a instância CLB na zona e no virtual switch do CloudBox.**
nodeSelector** -- Agenda o pod do gateway em nós da zona CloudBox. Alternativamente, use o campoaffinitypara regras de agendamento mais avançadas.
O YAML abaixo cria um gateway de entrada com acesso via intranet na zona CloudBox:
apiVersion: istio.alibabacloud.com/v1beta1
kind: IstioGateway
metadata:
name: ingressgateway
namespace: "istio-system"
spec:
clusterIds:
- <your-ack-cluster-id>
externalTrafficPolicy: Local
gatewayType: ingress
ports:
- name: http
port: 80
targetPort: 80
- name: https
port: 443
targetPort: 443
replicaCount: 2
resources:
limits:
cpu: '2'
memory: 2G
requests:
cpu: 200m
memory: 256Mi
serviceType: LoadBalancer
serviceAnnotations:
service.beta.kubernetes.io/alicloud-loadbalancer-address-type: intranet
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id: <cloudbox-vswitch-id>
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid: <cloudbox-zone-id>
nodeSelector:
topology.kubernetes.io/zone: <cloudbox-zone-id>
rollingMaxSurge: "100%"
rollingMaxUnavailable: "25%"
Substitua os placeholders abaixo pelos seus valores reais:
|
Placeholder |
Descrição |
Exemplo |
|
|
ID do cluster ACK |
c1a2b3c4d5e6f7890 |
|
|
ID do virtual switch na zona CloudBox |
vsw-abc123def456 |
|
|
ID da zona do recurso CloudBox |
cn-hangzhou-cloudbox-a |
Aplique o YAML usando um destes métodos:
kubectl com kubeconfig do ASM: Salve o YAML em um arquivo e execute
kubectl apply -f <file>.yamlusando o kubeconfig da instância ASM.Console do ASM: Crie o gateway via YAML no console do ASM. Para mais informações, consulte Usar KubeAPI para gerenciar um gateway de entrada.
Verificar o gateway
Após aplicar o YAML, confirme se o pod do gateway está em execução e se o CLB foi provisionado:
# Check gateway pod status
kubectl get pods -n istio-system -l istio=ingressgateway
# Check the gateway Service and its external IP
kubectl get svc -n istio-system ingressgateway
O pod do gateway deve estar no estado Running e o Service deve ter um IP externo atribuído pelo CLB na zona CloudBox.
Implantar a aplicação e configurar o roteamento
O gateway criado na etapa anterior é exclusivo para intranet e inacessível pela internet pública. Certifique-se de que seu ambiente de teste tenha conectividade com a rede VPC antes de prosseguir.
Siga as etapas em Implantar a aplicação httpbin para:
Implantar a aplicação httpbin no cluster ACK, nos nós CloudBox.
Criar um
Gatewaye umVirtualServicepara rotear o tráfego pelo gateway de entrada.
Verificar a conectividade de ponta a ponta
Depois de implantar a aplicação e as regras de roteamento, envie uma requisição de teste pelo gateway:
# Get the gateway IP
GATEWAY_IP=$(kubectl get svc -n istio-system ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
# Send a test request
curl -I http://$GATEWAY_IP/status/200
Uma resposta bem-sucedida retorna HTTP 200, confirmando que o tráfego flui do gateway para a aplicação httpbin nos nós CloudBox.
Solução de problemas
|
Sintoma |
Causa possível |
Resolução |
|
Pod do gateway permanece no estado |
Nenhum nó na zona CloudBox corresponde ao |
Verifique se o pool de nós CloudBox está íntegro e se o ID da zona no |
|
CLB não provisionado |
O ID do virtual switch ou da zona em |
Confirme se |
|
Requisição |
Falta de conectividade VPC entre o ambiente de teste e o CLB de intranet |
Conecte-se à VPC por VPN, Express Connect ou um jump server dentro da VPC |
|
HTTP 503 do gateway |
Pod httpbin não está em execução ou injeção de sidecar desativada |
Verifique se o pod httpbin possui um contêiner sidecar e está no estado |
Tópicos relacionados
Configurar políticas de gerenciamento de tráfego para roteamento granular entre workloads da nuvem pública e do CloudBox
Ativar observabilidade para monitorar tráfego entre zonas
Configurar mTLS para proteger a comunicação entre serviços em diferentes zonas