É possível ativar qualquer instância de máquina virtual (VM) para que ela possa ser acessada da rede externa ou de outra organização, o que é conhecido como entrada de VM. Uma carga de trabalho de VM em um projeto da organização pode alcançar a rede externa ou a VM atual exposta a serviços em outras organizações, conhecida como saída de VM.
É possível usar o VirtualMachineExternalAccess
(VMEA) para controlar a entrada e saída de VMs juntas. É possível encontrar os endereços IP de entrada e saída que você ativou para uma instância de VM na API VMM isolada do Google Distributed Cloud (GDC) ou no console do GDC.
Antes de começar
Para usar os comandos da interface de linha de comando (CLI) gdcloud
, verifique se você baixou, instalou
e configurou a CLI gdcloud
.
Todos os comandos do Distributed Cloud usam a CLI gdcloud
ou kubectl
e exigem um ambiente de sistema operacional (SO).
Extrair o caminho do arquivo kubeconfig
Para executar comandos no servidor da API Management, verifique se você tem os seguintes recursos:
Faça login e gere o arquivo kubeconfig para o servidor da API Management se você não tiver um.
Use o caminho para o arquivo kubeconfig do servidor da API Management para substituir
MANAGEMENT_API_SERVER
nestas instruções.
Solicitar permissões e acesso
Para executar as tarefas listadas nesta página, você precisa ter o papel de administrador de máquina virtual do projeto. Siga as etapas para
verificar
se você tem o papel de administrador de máquina virtual do projeto (project-vm-admin
) no namespace
do projeto em que a VM reside.
Para operações de VM usando o console do GDC ou a CLI gdcloud,
peça ao administrador do IAM do projeto para atribuir a você os papéis de
administrador de máquina virtual do projeto e leitor do projeto (project-viewer
).
Configurar o acesso externo da VM
O VirtualMachineExternalAccess
(VMEA) controla a entrada e a saída de VMs.
O VMEA não pode controlar a entrada e a saída de VMs separadamente. A entrada e a saída
de uma VM precisam ser ativadas ou desativadas juntas ao mesmo tempo.
É possível configurar e controlar o VMEA na UI ou na API Distributed Cloud VMM. Uma VM só pode ter um VMEA. Se uma VM não tiver uma VMEA, a entrada e a saída serão desativadas por padrão.
Ativar o acesso externo
Para ativar uma VM com acesso externo para transferência de dados de entrada e saída, configure a VMEA no console do GDC ou na API Virtual Machine Manager do Distributed Cloud (em inglês).
Por padrão, o tráfego de rede entre projetos é permitido, e você pode acessar diretamente sua VM dentro do projeto. Uma política de rede bloqueia todo o tráfego de entrada para a VM de fora do projeto. É necessário criar manualmente uma nova política de rede para permitir que seu endereço IP de origem acesse a VM por transferência de dados. Essa política de rede pode ser uma política de rede de tráfego entre projetos ou uma política de rede de tráfego entre organizações. A localização depende de onde você quer acessar a VM.
É possível ativar e desativar o acesso externo de uma VM especificando true
ou
false
no campo enabled
da especificação VMEA. Para o ingresso de VM, é possível
configurar a transferência de dados em portas especificando o nome, o protocolo e o número da porta
para cada porta que você quer adicionar no campo ports
da especificação VMEA.
Para ativar o acesso externo de uma VM criando uma nova VMEA, conclua as etapas a seguir:
Console
- Durante o processo de criação da VM usando o console, navegue até a página Detalhes da rede na página Criar instância de VM.
- Localize Rede no menu de navegação vertical da página.
- Marque Permitir acesso externo para ativar o acesso externo na VM.
API
Execute este comando:
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -n PROJECT -f - <<EOF
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachineExternalAccess
metadata:
name: VM_NAME
spec:
enabled: true
ports:
- name: PORT_NAME
protocol: PROTOCOL
port: PORT_NUMBER
EOF
Substitua as seguintes variáveis:
- MANAGEMENT_API_SERVER: o arquivo kubeconfig para o servidor da API Management.
- VM_NAME: o nome da VM.
- PORT_NAME: o nome da porta.
- PROTOCOL: o protocolo que você quer que o serviço
de entrada use. O nome do protocolo precisa estar em maiúsculas e ser um protocolo compatível com o Kubernetes, como
TCP
,UDP
ouSCTP
. - PORT_NUMBER: o número da porta.
Para ativar o acesso externo de uma VM editando uma VMEA atual usando a API VMM, execute o seguinte:
kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT
Desativar o acesso externo
Se uma VM não tiver um VMEA correspondente, a entrada e a saída serão
desativadas. Se uma VM tiver um VMEA correspondente, será possível desativá-lo
definindo o campo enabled
como false
ou excluindo o VMEA diretamente. É possível fazer
essas operações usando a API Distributed Cloud VMM.
Para desativar o acesso externo, siga estas etapas:
API
Desative o acesso externo excluindo uma VMEA:
kubectl --kubeconfig MANAGEMENT_API_SERVER delete virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT
Substitua:
- MANAGEMENT_API_SERVER: o arquivo kubeconfig para o servidor da API Management.
- VM_NAME: o nome da VM.
- PROJECT: o projeto do Distributed Cloud em que a VM reside.
Para desativar o acesso externo, edite uma VMEA:
kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT
Atualize o campo enabled
para false
.
Entrada
Ver endereços IP de entrada
Se uma VM estiver ativada com Entrada, um endereço IP do Ingress vai aparecer no console do GDC após a criação. Você também pode encontrar esse endereço IP de entrada na página Detalhes da VM no console do GDC.
Para buscar o endereço IP, use a API Distributed Cloud VMM. Faça o seguinte:
API
Extraia o endereço IP:
kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT -ojsonpath='{.status.ingressIP}'
Para uma VM com um sistema operacional (SO) diferente, use o comando ssh
para
entrar na VM com o endereço IP de entrada e a porta ativada com
TCP.
Editar entrada
Depois de ativar o VMEA para uma VM, é possível personalizar a entrada editando o
VMEA. É possível editar diretamente a especificação do ingresso da VM no
console do GDC. Também é possível usar a CLI kubectl
para editar o ingresso da VM
na especificação do VMEA.
Para editar o VMEA e personalizar o Ingress, faça o seguinte:
Por exemplo, use os comandos a seguir para adicionar a porta PORT_NUMBER a um ingresso de VM usando o protocolo TCP:
Console
Edite diretamente as portas no serviço de entrada da VM no console do GDC:
- No menu de navegação vertical, clique em Instâncias.
- Na página, role até Detalhes da rede.
Clique no ícone de edição em Portas de entrada para editar a porta de entrada.
API
kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT --type "json" -p '[{"op":"add","path":"/spec/ports/-","value": {"name":"PORT_NAME","port":PORT_NUMBER, "Protocol":"TCP"}}]'
Substitua:
- MANAGEMENT_API_SERVER: o arquivo kubeconfig para o servidor da API Management.
- VM_NAME: o nome da VM.
- PROJECT: o projeto do Distributed Cloud em que a VM reside.
- PORT_NAME: o nome da porta a ser adicionada.
- PORT_NUMBER: o número da porta.
Ativar a entrada com protocolo não TCP
O Distributed Cloud permite ativar o Ingress da VM com protocolos diferentes. Por padrão, um serviço de entrada de VM usa o protocolo TCP. Você pode adicionar seu próprio ingresso de protocolo não TCP para a VM. O Distributed Cloud é compatível com os seguintes protocolos:
- Protocolo de controle de transmissão (TCP).
- Protocolo de datagramas do usuário (UDP).
- Protocolo de controle de transmissão de fluxo (SCTP).
É possível ativar a transferência de dados com um protocolo não TCP especificando nomes de protocolo diferentes ao criar a VMEA.
Saída
Uma carga de trabalho de VM em um projeto da organização pode acessar a rede externa ou ser exposta a serviços em outras organizações. Se você ativar a transferência de dados para fora da VM, um endereço IP de saída será gerado. A VM se conecta aos serviços externos com esse endereço IP.
Para transferir esses dados de endereço IP para fora da rede externa, talvez seja necessário aplicar políticas de rede do projeto. Para mais informações, consulte Política de rede de tráfego de saída entre organizações.
Ver o endereço IP de saída
Se uma VM estiver ativada com saída, um endereço IP de saída vai aparecer no console do GDC após a criação. Também é possível encontrar esse endereço IP de saída na página Detalhes da VM.
Para conferir o endereço IP de saída, faça o seguinte:
API
Extraia o endereço IP:
kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT -ojsonpath='{.status.egressIP}'
Substitua:
- MANAGEMENT_API_SERVER: o arquivo kubeconfig para o servidor da API Management.
- VM_NAME: o nome da VM.
- PROJECT: o projeto do Distributed Cloud em que a VM reside.
A saída da VM é baseada em um projeto. As VMs no mesmo projeto têm o mesmo endereço IP de saída.
Controlar a saída
Em versões anteriores do Distributed Cloud, era necessário reiniciar a VM para refletir as mudanças de saída em uma VM em execução. Na versão 1.11, é possível ativar e desativar a saída da VM sem reiniciá-la. Essa mudança entra em vigor logo após a atualização da VMEA.