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

Esta página fornece instruções para configurar políticas de rede de tráfego entre projetos no dispositivo isolado do Google Distributed Cloud (GDC).

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

Por predefinição, os serviços e as cargas de trabalho num projeto estão isolados de serviços e cargas de trabalho externos. No entanto, os serviços e as cargas de trabalho de diferentes espaços de nomes de projetos e dentro da mesma organização podem 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 intralocal, tem de ter o seguinte:

Crie uma política de tráfego entre projetos

Pode definir políticas de tráfego de entrada ou saída entre projetos para gerir a comunicação entre projetos.

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

Para que as cargas de trabalho ou os serviços do projeto permitam ligações de outras cargas de trabalho noutro projeto, tem de configurar uma regra de firewall de entrada para permitir o tráfego de entrada de outras cargas de trabalho do projeto.

Siga os passos seguintes para criar uma nova regra de firewall e permitir o tráfego de entrada de cargas de trabalho noutro projeto:

Consola

  1. Na consola do GDC do projeto que está a configurar, aceda a 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 nova regra de firewall.
  3. Na página Detalhes da regra de firewall, preencha as seguintes informações:

    1. No campo Nome, introduza um nome válido para a regra de firewall.
    2. Na secção Direção do tráfego, selecione Entrada para permitir o tráfego de entrada de cargas de trabalho noutros projetos.
    3. Na secção Segmentar, selecione uma das seguintes opções:
      • Todas as cargas de trabalho do utilizador: permite ligações às cargas de trabalho do projeto que está a configurar.
      • Serviço: indica que esta regra de firewall destina-se a um serviço específico no projeto que está a configurar.
    4. Se o seu alvo for um serviço de projeto, selecione o nome do serviço na lista de serviços disponíveis no menu pendente Serviço.
    5. Na secção De, selecione uma das seguintes opções:
      • Todos os projetos: permite ligações de cargas de trabalho em todos os projetos.
      • Outro projeto e Todas as cargas de trabalho do utilizador: permitem ligações de cargas de trabalho noutro projeto.
    6. Se quiser transferir cargas de trabalho apenas de outro projeto, selecione um projeto ao qual tenha acesso na lista de projetos no menu pendente ID do projeto.
    7. Se o destino for todas as cargas de trabalho do utilizador, selecione uma das seguintes opções na secção Protocolos e portas:
      • Permitir tudo: permitir ligações através de qualquer protocolo ou porta.
      • Protocolos e portas especificados: permitem ligações que usam apenas os protocolos e as portas que especificar nos campos correspondentes para a regra da firewall de entrada.
  4. Na página Detalhes da regra de firewall, clique em Criar.

Permitiu ligações de outras cargas de trabalho do projeto. Depois de criar a regra de firewall, esta fica visível numa tabela na página Firewall.

API

A seguinte política permite que as cargas de trabalho no projeto PROJECT_1 permitam ligaçõ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 ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Iniciar sessão para ver detalhes.

O comando anterior permite que PROJECT_2 aceda a PROJECT_1, mas não permite ligações iniciadas a partir de PROJECT_1 para PROJECT_2. Para este último, precisa de 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

As ligações são agora permitidas de e para PROJECT_1 e PROJECT_2.