Criar políticas de rede de tráfego entre projetos

Nesta página, você encontra instruções para configurar políticas de rede de tráfego entre projetos no dispositivo com isolamento físico do Google Distributed Cloud (GDC).

O tráfego entre projetos se refere à comunicação entre serviços e cargas de trabalho de namespaces de projetos diferentes, mas dentro da mesma organização.

Por padrão, os serviços e as cargas de trabalho em um projeto são isolados de serviços e cargas de trabalho externos. No entanto, serviços e cargas de trabalho de namespaces de projetos diferentes e dentro da mesma organização podem se comunicar entre si aplicando políticas de rede de tráfego entre projetos.

Antes de começar

Para configurar políticas de rede de tráfego entre projetos, você precisa ter o seguinte:

Criar uma política de tráfego entre projetos

É possível definir políticas de tráfego de entrada ou saída entre projetos para gerenciar a comunicação entre eles.

Criar uma regra de firewall de entrada para tráfego entre projetos

Para que as cargas de trabalho ou os serviços do projeto permitam conexões de outras cargas de trabalho em outro projeto, configure uma regra de firewall de entrada para permitir o tráfego de entrada de outras cargas de trabalho do projeto.

Siga as etapas abaixo para criar uma regra de firewall e permitir o tráfego de entrada de cargas de trabalho em outro projeto:

Console

  1. No console do GDC do projeto que você está configurando, acesse Rede > Firewall no menu de navegação para abrir a página Firewall.
  2. Clique em Criar na barra de ações para começar a criar uma regra de firewall.
  3. Na página Detalhes da regra de firewall, preencha as seguintes informações:

    1. No campo Nome, insira um nome válido para a regra de firewall.
    2. Na seção Direção do tráfego, selecione Entrada para permitir o tráfego de entrada de cargas de trabalho em outros projetos.
    3. Na seção Segmentar, selecione uma das seguintes opções:
      • Todas as cargas de trabalho do usuário:permite conexões com as cargas de trabalho do projeto que você está configurando.
      • Serviço:indica que essa regra de firewall tem como destino um serviço específico no projeto que você está configurando.
    4. Se o destino for um serviço do projeto, selecione o nome dele no menu suspenso Serviço.
    5. Na seção De, selecione uma das seguintes opções:
      • Todos os projetos:permite conexões de cargas de trabalho em todos os projetos.
      • Outro projeto e Todas as cargas de trabalho do usuário:permitem conexões de cargas de trabalho em outro projeto.
    6. Se você quiser transferir cargas de trabalho apenas de outro projeto, selecione um projeto a que você tenha acesso na lista de projetos do menu suspenso ID do projeto.
    7. Se o destino for todas as cargas de trabalho do usuário, selecione uma das seguintes opções na seção Protocolos e portas:
      • Permitir tudo:permite conexões usando qualquer protocolo ou porta.
      • Protocolos e portas especificados:permitem conexões usando apenas os protocolos e portas especificados nos campos correspondentes da regra de firewall de entrada.
  4. Na página Detalhes da regra de firewall, clique em Criar.

Agora você permitiu conexões de outras cargas de trabalho do projeto. Depois de criar a regra de firewall, ela fica visível em uma tabela na página Firewall.

API

A política a seguir permite que as cargas de trabalho no projeto PROJECT_1 aceitem conexões de cargas de trabalho no projeto PROJECT_2, bem como o tráfego de retorno para os mesmos fluxos. Aplique a política:

kubectl --kubeconfig API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  namespace: PROJECT_1
  name: allow-inbound-traffic-from-PROJECT_2
spec:
  policyType: Ingress
  subject:
    subjectType: UserWorkload
  ingress:
  - from:
    - projectSelector:
        projects:
          matchNames:
          - PROJECT_2
EOF

Substitua API_SERVER pelo caminho kubeconfig do servidor da API. Se você ainda não gerou um arquivo kubeconfig para o servidor da API, consulte Fazer login para mais detalhes.

O comando anterior permite que PROJECT_2 acesse PROJECT_1, mas não permite conexões iniciadas de PROJECT_1 para PROJECT_2. Para o último, é preciso ter uma política recíproca no projeto PROJECT_2. Aplique a política de reciprocidade:

kubectl --kubeconfig API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  namespace: PROJECT_2
  name: allow-inbound-traffic-from-PROJECT_1
spec:
  policyType: Ingress
  subject:
    subjectType: UserWorkload
  ingress:
  - from:
    - projectSelector:
        projects:
          matchNames:
          - PROJECT_1
EOF

Agora, as conexões são permitidas de e para PROJECT_1 e PROJECT_2.