Ativar endereços IP

É 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:

  1. Faça login e gere o arquivo kubeconfig para o servidor da API Management se você não tiver um.

  2. 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

  1. 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.
  2. Localize Rede no menu de navegação vertical da página.
  3. Marque Permitir acesso externo para ativar o acesso externo na VM.

Ativar o acesso externo na criação da 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 ou SCTP.
  • 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:

  1. No menu de navegação vertical, clique em Instâncias.
  2. Na página, role até Detalhes da rede.
  3. Clique no ícone de edição em Portas de entrada para editar a porta de entrada.

    Interface do console mostrando a lista de detalhes da rede com o ícone de edição nas portas 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.