Criar políticas de rede no nível da carga de trabalho

Nesta página, você encontra instruções para configurar políticas de rede no nível da carga de trabalho no Google Distributed Cloud (GDC) com isolamento físico.

As políticas de rede no nível da carga de trabalho oferecem controle granular sobre a comunicação entre cargas de trabalho individuais em um projeto. Essa granularidade permite um controle mais rígido do acesso à rede, melhorando a segurança e o uso de recursos.

As políticas de rede no nível da carga de trabalho podem aplicar o PNP em uma única zona. Rótulos específicos podem ser adicionados a cargas de trabalho em uma única zona, permitindo controlar a comunicação entre cargas de trabalho individuais em um projeto ou em projetos diferentes para essa zona. Para mais informações, consulte Política de rede no nível da carga de trabalho de uma única zona.

Criar uma política de tráfego intraprojeto no nível da carga de trabalho

É possível criar uma política de tráfego intraprojeto no nível da carga de trabalho para ativar ou desativar o acesso à rede para o tráfego entre cargas de trabalho em um projeto.

Política de rede de tráfego intraprojeto no nível da carga de trabalho de entrada

Ao criar um projeto, você cria implicitamente um recurso ProjectNetworkPolicy básico padrão que permite a comunicação entre todas as cargas de trabalho dentro do projeto. Essa política permite o tráfego de entrada de outras cargas de trabalho no mesmo projeto.

Para criar uma política de tráfego intraprojeto no nível da carga de trabalho, primeiro é necessário excluir a política de base padrão. Caso contrário, pode ocorrer um comportamento inesperado.

  1. Para excluir a política de base padrão, execute o seguinte comando:

    kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
    
  2. Para criar uma política de rede de tráfego intraprojeto no nível da carga de trabalho de entrada, crie e aplique o seguinte recurso personalizado:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT
      name: allow-intra-project-inbound-traffic-from-target-to-subject
    spec:
      policyType: Ingress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      ingress:
      - from:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
    EOF
    

    Substitua:

    • GLOBAL_API_SERVER: o caminho do kubeconfig do servidor de API global. Para mais informações, consulte Servidores de API globais e zonais. Se você ainda não gerou um arquivo kubeconfig para o servidor da API, consulte Fazer login para mais detalhes.
    • PROJECT: o nome do projeto em que você quer permitir o tráfego de entrada intraprojeto no nível da carga de trabalho.
    • SUBJECT_LABEL_KEY: a chave do rótulo usado para selecionar as cargas de trabalho de origem. Por exemplo, app, tier ou role.
    • SUBJECT_LABEL_VALUE: o valor associado ao SUBJECT_LABEL_KEY. Ele especifica quais cargas de trabalho são a origem do tráfego permitido. Por exemplo, se SUBJECT_LABEL_KEY for app e SUBJECT_LABEL_VALUE for backend, as cargas de trabalho com o rótulo app: backend serão a origem do tráfego.
    • TARGET_LABEL_KEY: a chave do rótulo usado para selecionar as cargas de trabalho de destino.
    • TARGET_LABEL_VALUE: o valor associado ao TARGET_LABEL_KEY. Ele especifica quais cargas de trabalho são o destino do tráfego permitido.

Criar uma política de tráfego entre projetos no nível da carga de trabalho

É possível criar uma política de tráfego entre projetos no nível da carga de trabalho para ativar ou desativar o acesso à rede para o tráfego entre cargas de trabalho em projetos diferentes.

Política de rede de tráfego entre projetos no nível da carga de trabalho de saída

  • Para criar uma política de rede de tráfego entre projetos no nível da carga de trabalho de saída, crie e aplique o seguinte recurso personalizado:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT_1
      name: allow-cross-project-outbound-traffic-to-subject-from-target
    spec:
      policyType: Egress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      egress:
      - to:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT_2
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
    EOF
    

    Substitua:

    • GLOBAL_API_SERVER: o caminho do kubeconfig do servidor de API global. Para mais informações, consulte Servidores de API globais e zonais. Se você ainda não gerou um arquivo kubeconfig para o servidor da API, consulte Fazer login para mais detalhes.
    • PROJECT_1: o nome do projeto em que você quer permitir o tráfego de saída entre projetos no nível da carga de trabalho.
    • PROJECT_2: o nome do projeto em que você quer enviar o tráfego de saída entre projetos no nível da carga de trabalho.
    • SUBJECT_LABEL_KEY: a chave do rótulo usado para selecionar as cargas de trabalho de origem. Por exemplo, app, tier ou role.
    • SUBJECT_LABEL_VALUE: o valor associado ao SUBJECT_LABEL_KEY. Ele especifica quais cargas de trabalho são a origem do tráfego permitido. Por exemplo, se SUBJECT_LABEL_KEY for app e SUBJECT_LABEL_VALUE for backend, as cargas de trabalho com o rótulo app: backend serão a origem do tráfego.
    • TARGET_LABEL_KEY: a chave do rótulo usado para selecionar as cargas de trabalho de destino.
    • TARGET_LABEL_VALUE: o valor associado ao TARGET_LABEL_KEY. Ele especifica quais cargas de trabalho são o destino do tráfego permitido.

Criar uma política de tráfego intraprojeto no nível da carga de trabalho de uma única zona

É possível criar uma política de tráfego intraprojeto no nível da carga de trabalho de uma única zona para ativar ou desativar o acesso à rede para o tráfego entre cargas de trabalho em um projeto em uma zona específica.

Política de rede de tráfego intraprojeto no nível da carga de trabalho de entrada de zona única

Ao criar um projeto, você cria implicitamente um recurso ProjectNetworkPolicy básico padrão que permite a comunicação entre todas as cargas de trabalho dentro do projeto. Essa política permite o tráfego de entrada de outras cargas de trabalho no mesmo projeto.

Para criar uma política de rede de tráfego intraprojeto no nível da carga de trabalho de entrada de uma única zona, primeiro é preciso excluir a política básica padrão. Caso contrário, pode ocorrer um comportamento inesperado.

  1. Para excluir a política de base padrão, execute o seguinte comando:

    kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
    
  2. Para criar uma política de rede de tráfego intraprojeto no nível da carga de trabalho de entrada de uma única zona, crie e aplique o seguinte recurso personalizado:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT
      name: allow-single-zone-intra-project-inbound-traffic-from-target-to-subject
    spec:
      policyType: Ingress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
            ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE
      ingress:
      - from:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
                ZONE_TARGET_LABEL_KEY: ZONE_TARGET_LABEL_VALUE
    EOF
    

    Substitua:

    • GLOBAL_API_SERVER: o caminho do kubeconfig do servidor de API global. Para mais informações, consulte Servidores de API globais e zonais. Se você ainda não gerou um arquivo kubeconfig para o servidor da API, consulte Fazer login para mais detalhes.
    • PROJECT: o nome do projeto em que você quer permitir o tráfego de entrada intraprojeto no nível da carga de trabalho de uma única zona.
    • SUBJECT_LABEL_KEY: a chave do rótulo usado para selecionar as cargas de trabalho de origem. Por exemplo, app, tier ou role.
    • SUBJECT_LABEL_VALUE: o valor associado ao SUBJECT_LABEL_KEY. Ele especifica quais cargas de trabalho são a origem do tráfego permitido. Por exemplo, se SUBJECT_LABEL_KEY for app e SUBJECT_LABEL_VALUE for backend, as cargas de trabalho com o rótulo app: backend serão a origem do tráfego.
    • TARGET_LABEL_KEY: a chave do rótulo usado para selecionar as cargas de trabalho de destino.
    • TARGET_LABEL_VALUE: o valor associado ao TARGET_LABEL_KEY. Ele especifica quais cargas de trabalho são o destino do tráfego permitido.
    • ZONE_SUBJECT_LABEL_KEY: a chave do rótulo usada para selecionar a zona de origem. Por exemplo, zone ou region.
    • ZONE_SUBJECT_LABEL_VALUE: o valor associado ao ZONE_SUBJECT_LABEL_KEY. Ela especifica qual zona é a origem do tráfego permitido. Por exemplo, se ZONE_SUBJECT_LABEL_KEY for zone e ZONE_SUBJECT_LABEL_VALUE for us-central1-a, as cargas de trabalho com o rótulo zone: us-central1-a serão a origem do tráfego.
    • ZONE_TARGET_LABEL_KEY: a chave do rótulo usado para selecionar a zona de destino.
    • ZONE_TARGET_LABEL_VALUE: o valor associado ao ZONE_TARGET_LABEL_KEY. Ela especifica qual zona é o destino do tráfego permitido.

Criar uma política de tráfego entre projetos no nível da carga de trabalho de uma única zona

É possível criar uma política de tráfego entre projetos no nível da carga de trabalho de uma única zona para ativar ou desativar o acesso à rede para tráfego entre cargas de trabalho em projetos diferentes em uma zona específica.

Política de rede de tráfego entre projetos no nível da carga de trabalho de saída de uma única zona

  • Para criar uma política de rede de tráfego intraprojeto no nível da carga de trabalho de saída de uma única zona, crie e aplique o seguinte recurso personalizado:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT_1
      name: allow-single-zone-cross-project-outbound-traffic-to-subject-from-target
    spec:
      policyType: Egress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
            ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE
      egress:
      - to:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT_2
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
                ZONE_TARGET_LABEL_KEY: ZONE_TARGET_LABEL_VALUE
    EOF
    

    Substitua:

    • GLOBAL_API_SERVER: o caminho do kubeconfig do servidor de API global. Para mais informações, consulte Servidores de API globais e zonais. Se você ainda não gerou um arquivo kubeconfig para o servidor da API, consulte Fazer login para mais detalhes.
    • PROJECT_1: o nome do projeto em que você quer permitir o tráfego de saída entre projetos no nível da carga de trabalho de uma única zona.
    • PROJECT_2: o nome do projeto em que você quer enviar o tráfego de saída entre projetos no nível da carga de trabalho de uma única zona.
    • SUBJECT_LABEL_KEY: a chave do rótulo usado para selecionar as cargas de trabalho de origem. Por exemplo, app, tier ou role.
    • SUBJECT_LABEL_VALUE: o valor associado ao SUBJECT_LABEL_KEY. Ele especifica quais cargas de trabalho são a origem do tráfego permitido. Por exemplo, se SUBJECT_LABEL_KEY for app e SUBJECT_LABEL_VALUE for backend, as cargas de trabalho com o rótulo app: backend serão a origem do tráfego.
    • TARGET_LABEL_KEY: a chave do rótulo usado para selecionar as cargas de trabalho de destino.
    • TARGET_LABEL_VALUE: o valor associado ao TARGET_LABEL_KEY. Ele especifica quais cargas de trabalho são o destino do tráfego permitido.
    • ZONE_SUBJECT_LABEL_KEY: a chave do rótulo usada para selecionar a zona de origem. Por exemplo, zone ou region.
    • ZONE_SUBJECT_LABEL_VALUE: o valor associado ao ZONE_SUBJECT_LABEL_KEY. Ela especifica qual zona é a origem do tráfego permitido. Por exemplo, se ZONE_SUBJECT_LABEL_KEY for zone e ZONE_SUBJECT_LABEL_VALUE for us-central1-a, as cargas de trabalho com o rótulo zone: us-central1-a serão a origem do tráfego.
    • ZONE_TARGET_LABEL_KEY: a chave do rótulo usado para selecionar a zona de destino.
    • ZONE_TARGET_LABEL_VALUE: o valor associado ao ZONE_TARGET_LABEL_KEY. Ela especifica qual zona é o destino do tráfego permitido.