Quando uma instância do Service Mesh (ASM) e um cluster do Container Service for Kubernetes (ACK) no plano de dados residem em diferentes virtual private clouds (VPCs) na mesma região, é necessária uma conectividade privada entre eles. O PrivateLink estabelece essa conectividade sem expor o tráfego à internet pública.
O ASM fornece a CustomResourceDefinition (CRD) ASMPvlConfig para automatizar a configuração do PrivateLink. Defina um único recurso YAML para que o ASM crie e gerencie os serviços de endpoint e endpoints subjacentes.
Como funciona
O plano de controle do ASM e o cluster de plano de dados do ACK se comunicam por dois canais separados. Ao aplicar o recurso ASMPvlConfig, o ASM cria uma conexão PrivateLink para cada canal:
|
Conexão |
Finalidade |
Localização do serviço de endpoint |
Localização do endpoint |
|
Servidor de API |
Permite que o plano de controle do ASM alcance o servidor de API do cluster ACK |
Instância do Server Load Balancer (SLB) do cluster ACK |
VPC do ASM |
|
Pilot |
Permite que os sidecars do plano de dados recebam configurações do plano de controle do ASM (Istio Pilot) |
Instância de SLB da instância do ASM |
VPC do ACK |
Cada conexão PrivateLink requer um endpoint na mesma zona de disponibilidade do serviço de endpoint de destino. Como o serviço de endpoint para o servidor de API do ACK está na zona da VPC do ACK, o endpoint do lado do ASM também deve estar nessa zona, e vice-versa. Por esse motivo, o recurso ASMPvlConfig usa IDs de zona cruzados entre as duas VPCs (detalhado em Configure o recurso ASMPvlConfig).
O tráfego do PrivateLink permanece dentro da rede da Alibaba Cloud e não atravessa a internet pública, garantindo que a comunicação entre o plano de controle e o plano de dados seja privada.
Pré-requisitos
Um cluster ACK foi criado na mesma região da instância do ASM, mas em uma VPC diferente
O kubectl está instalado e configurado com o arquivo kubeconfig da instância do ASM
Adicionar o cluster ACK à instância do ASM
Adicione o cluster ACK à instância do ASM.
Após adicionar o cluster, o status dele será exibido como Connected no console do ASM. Isso indica apenas que o cluster está registrado no ASM. A conectividade via PrivateLink ainda não foi estabelecida. Prossiga para a próxima seção para configurá-la.
Configure o recurso ASMPvlConfig
Os IDs de zona no YAML são intencionalmente cruzados. Em ackVpcEndpoint, defina zoneId como a zona do vSwitch da instância do ASM. Em asmVpcEndpoint, defina zoneId como a zona do vSwitch do cluster ACK. Esse cruzamento é obrigatório porque o PrivateLink cria um endpoint na VPC remota que deve estar na mesma zona de disponibilidade do serviço de endpoint de destino.
Crie um arquivo chamado asmpvlconfig.yaml com o seguinte conteúdo:
apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMPvlConfig
metadata:
name: default
spec:
ackVpcEndpoint:
- clusterId: <ack-cluster-id>
vSwitches:
- vSwitchId: <ack-vswitch-id>
zoneId: <asm-vswitch-zone-id>
asmVpcEndpoint:
vSwitches:
- vSwitchId: <asm-vswitch-id>
zoneId: <ack-vswitch-zone-id>
Substitua os placeholders pelos valores reais:
|
Placeholder |
Descrição |
Onde encontrar |
Exemplo |
|
|
ID do cluster ACK adicionado à instância do ASM |
Console do ACK ou lista de clusters no console do ASM |
cab9ace222210457a83f09fcd42e9\\\\ |
|
|
ID de um vSwitch na VPC do cluster ACK |
Console de VPC, página de vSwitch |
vsw-bp1jsgsanpvxpj32yai50 |
|
|
Zona do vSwitch da instância do ASM. Usado em |
Console de VPC, detalhes do vSwitch |
cn-hangzhou-i |
|
|
ID de um vSwitch na VPC da instância do ASM |
Console de VPC, página de vSwitch |
vsw-bp1l5hini55sstnwd2skf |
|
|
Zona do vSwitch do cluster ACK. Usado em |
Console de VPC, detalhes do vSwitch |
cn-hangzhou-j |
O campo metadata.name deve ser default. Outros nomes não são válidos.
Referência de campos
|
Campo |
Descrição |
|
|
Array de configurações do cluster ACK. Cada entrada contém um |
|
|
ID de um cluster ACK adicionado à instância do ASM. |
|
|
vSwitches disponíveis na VPC do cluster ACK. Cada vSwitch deve especificar |
|
|
vSwitches na VPC da instância do ASM. Cada vSwitch deve especificar |
Aplicar o recurso ASMPvlConfig
Conecte-se à instância do ASM com o kubectl e aplique o recurso:
kubectl apply -f asmpvlconfig.yaml
Verifique o status do PrivateLink
Aguarde alguns minutos para que o ASM provisione os recursos do PrivateLink e verifique o status:
kubectl get asmpvlconfig default -o yaml
Uma configuração bem-sucedida adiciona uma seção status à saída:
apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMPvlConfig
metadata:
name: default
spec:
ackVpcEndpoint:
- clusterId: cab9ace222210457a83f09fcd42****
vSwitches:
- vSwitchId: vsw-bp1jsgsanpvxpj32yai50
zoneId: cn-hangzhou-j
asmVpcEndpoint:
vSwitches:
- vSwitchId: vsw-bp1l5hini55sstnwd2skf
zoneId: cn-hangzhou-i
status:
clusters:
- clusterId: cab9ace222210457a83f09fcd42****
pvlEndpoint:
connectionStatus: Connected
domainName: ep-bp1i06bad79eb60c60cc.epsrv-bp1gqb8g1b8d7uactd.cn-hangzhou.privatelink.aliyuncs.com
id: ep-bp1i06bad79eb60c60
status: Active
pvlEndpointService:
id: epsrv-bp1gqb8g1b8d7uactd
name: com.aliyuncs.privatelink.cn-hangzhou.epsrv-bp1gqb8g1b8d7uactd
status: Active
pilot:
clusters:
- clusterId: cab9ace222210457a83f09fcd42****
pvlEndpoint:
connectionStatus: Connected
domainName: ep-bp1i52311b91a5a25e.epsrv-bp1cl4qwzkf747ug6tmy.cn-hangzhou.privatelink.aliyuncs.com
id: ep-bp1i52311b91a5a25e
status: Active
pvlEndpointService:
id: epsrv-bp1cl4qwzkf747ug6t
name: com.aliyuncs.privatelink.cn-hangzhou.epsrv-bp1cl4qwzkf747ug6tmy
status: Active
status: Available
Confirme se status.status é Available. Isso significa que as conexões do servidor de API e do Pilot foram estabelecidas. Qualquer outro valor indica um problema de configuração — revise seus IDs de vSwitch e IDs de zona.
Referência de campos de status
A seção status contém dois grupos que refletem as duas conexões PrivateLink:
**status.clusters** — Conexão PrivateLink para o servidor de API do cluster ACK:
|
Campo |
Descrição |
|
|
ID do cluster ACK. |
|
|
Estado da conexão. |
|
|
Nome de domínio do endpoint PrivateLink. Este valor é necessário em Adicionar o domínio PrivateLink ao certificado do servidor de API. |
|
|
ID do endpoint PrivateLink. |
|
|
Estado do endpoint. |
|
|
ID do serviço de endpoint na instância de SLB que expõe o servidor de API do cluster ACK. |
|
|
Nome do serviço de endpoint. |
|
|
Estado do serviço de endpoint. |
**status.pilot** — Conexão PrivateLink para o Istio Pilot no plano de controle do ASM:
|
Campo |
Descrição |
|
|
ID do cluster ACK. |
|
|
Estado da conexão. |
|
|
Nome de domínio do endpoint PrivateLink para o Pilot. |
|
|
ID do endpoint PrivateLink para o Pilot. |
|
|
Estado do endpoint. |
|
|
ID do serviço de endpoint na instância de SLB que expõe o Istio Pilot. |
|
|
Nome do serviço de endpoint para o Pilot. |
|
|
Estado do serviço de endpoint. |
**status.status** — Disponibilidade geral. Available indica que a conectividade entre VPCs está totalmente configurada.
Visualize os recursos do PrivateLink no console de VPC
Para inspecionar diretamente o serviço de endpoint e o endpoint:
Faça login no console de VPC.
No painel de navegação à esquerda, clique em Endpoints Service.
Na barra de navegação superior, selecione a região onde reside o serviço de endpoint.
Na página Endpoints Service, clique no ID da instância do serviço de endpoint de destino para visualizar seus detalhes.
No painel de navegação à esquerda, clique em Endpoints. Na página Endpoints, clique no ID da instância do endpoint de destino para visualizar seus detalhes.
Adicionar o domínio PrivateLink ao certificado do servidor de API
O plano de controle do ASM acessa o servidor de API do cluster ACK por meio do nome de domínio do endpoint PrivateLink. Para que a validação TLS seja bem-sucedida, esse nome de domínio deve constar como Subject Alternative Name (SAN) no certificado do servidor de API. Sem isso, o plano de controle não consegue estabelecer uma conexão confiável com o servidor de API.
Na saída de status em Verifique o status do PrivateLink, copie o valor de pvlEndpoint.domainName em clusters (por exemplo, ep-bp1i06bad79eb60c60cc.epsrv-bp1gqb8g1b8d7uactd.cn-hangzhou.privatelink.aliyuncs.com) e adicione-o ao campo SAN personalizado do certificado do servidor de API do cluster ACK.
Para obter instruções, consulte Personalizar o SAN do certificado do servidor de API ao criar um cluster ACK.
Confirme a conectividade entre VPCs
Verifique o status do cluster ACK no console do ASM. Se o cluster estiver no estado Running, a conectividade entre VPCs via PrivateLink foi estabelecida com sucesso.