Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-11-28 GMT+08:00

Políticas de rede

As políticas de rede são projetadas pelo Kubernetes para restringir o acesso ao pod. É equivalente a um firewall na camada de aplicação para melhorar a segurança da rede. As capacidades suportadas pelas políticas de rede dependem das capacidades dos suplementos de rede do cluster.

Por padrão, se um namespace não tiver nenhuma política, os pods no namespace aceitarão tráfego de qualquer origem e enviarão tráfego para qualquer destino.

As políticas de rede são classificadas nos seguintes tipos:

  • namespaceSelector: seleciona namespaces específicos para os quais todos os pods devem ser permitidos como fontes de ingress ou destinos de egress.
  • podSelector: seleciona pods específicos no mesmo namespace da política de rede que deve ser permitida como fontes de ingress ou destinos de egress.
  • ipBlock: seleciona blocos de IP específicos para permitir como fontes de ingress ou destinos de egress.

Restrições

  • Apenas os clusters que usam o modelo de rede de túnel suportam políticas de rede. As políticas de rede são classificadas nos seguintes tipos:
    • Ingress: todas as versões suportam este tipo.
    • Egress: este tipo de regra não pode ser definido atualmente.
  • O isolamento de rede não é suportado para endereços IPv6.

Usar regras de ingress

  • Usar o podSelector para especificar o escopo de acesso
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: test-network-policy
      namespace: default
    spec:
      podSelector:                  # The rule takes effect for pods with the role=db label.
        matchLabels:
          role: db
      ingress:                      # This is an ingress rule.
      - from:
        - podSelector:              # Only traffic from the pods with the "role=frontend" label is allowed.
            matchLabels:
              role: frontend
        ports:                      # Only TCP can be used to access port 6379.
        - protocol: TCP
          port: 6379

    A figura a seguir mostra como o podSelector funciona.

    Figura 1 podSelector
  • Usar namespaceSelector para especificar o escopo de acesso
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: test-network-policy
    spec:
      podSelector:                  # The rule takes effect for pods with the role=db label.
        matchLabels:
          role: db
      ingress:                      # This is an ingress rule.
      - from:
        - namespaceSelector:        # Only traffic from the pods in the namespace with the "project=myproject" label is allowed.
            matchLabels:
              project: myproject
        ports:                      # Only TCP can be used to access port 6379.
        - protocol: TCP
          port: 6379

    A figura a seguir mostra como o namespaceSelector funciona.

    Figura 2 namespaceSelector

Criar uma política de rede no console

  1. Efetue logon no console do CCE e clique no nome do cluster para acessar o console do cluster.
  2. Escolha Networking no painel de navegação, clique na guia Network Policies e o clique em Create Network Policy no canto direito superior.

    • Policy Name: especifique um nome de política de rede.
    • Namespace: selecione um namespace no qual a política de rede é aplicada.
    • Selector: insira um rótulo, selecione o pod a ser associado e clique em Add. Você também pode clicar em Reference Workload Label para fazer referência ao rótulo de uma carga de trabalho existente.
    • Inbound Rule: clique em para adicionar uma regra de entrada. Para obter detalhes sobre as configurações de parâmetros, consulte Tabela 1.

      Tabela 1 Adicionar uma regra de entrada

      Parâmetro

      Descrição

      Protocol & Port

      Selecione o tipo de protocolo e a porta. Atualmente, TCP e UDP são suportados.

      Source Namespace

      Selecione um namespace cujos objetos possam ser acessados. Se esse parâmetro não for especificado, o objeto pertence ao mesmo namespace da diretiva atual.

      Source Pod Label

      Permita o acesso aos pods com este rótulo. Se esse parâmetro não for especificado, todos os pods no namespace poderão ser acessados.

  3. Clique em OK.