Configurar políticas de red de varias redes


En esta página se explica cómo puedes mejorar la seguridad de la red y el control del tráfico en tu clúster configurando políticas de red de varias redes que se apliquen específicamente a una red de pods designada. Estas políticas de red de varias redes controlan el tráfico mediante reglas de cortafuegos a nivel de pod y el flujo de tráfico entre pods y servicios.

Para saber cómo funcionan las políticas de red de varias redes, consulta cómo funcionan las políticas de red con redes de pods.

Requisitos

Para usar políticas de red de varias redes, debes cumplir los siguientes requisitos:

  • Versión 459 o posterior de la CLI de Google Cloud.
  • Debes tener un clúster de GKE que ejecute una de las siguientes versiones:
    • 1.28.5-gke.1293000 o posterior
    • 1.29.0-gke.1484000 o posterior
  • Tu clúster debe usar GKE Dataplane V2.

Limitaciones

No se admiten las políticas de red FQDN ni las políticas de red CiliumClusterWide: si usas una política de red FQDN y una política de red CiliumClusterWide en un pod que esté conectado a varias redes, las políticas afectarán a todas las conexiones del pod, incluidas las conexiones en las que no se apliquen las políticas.

Configurar políticas de red de varias redes

Para usar políticas de red de varias redes, siga estos pasos:

  1. Crea un clúster de GKE con varias redes habilitadas .
  2. Crea un grupo de nodos y una red de pods.
  3. Consulta la red de pods.
  4. Crea una política de red que se aplique y que haga referencia a la misma red de pods que utiliza la carga de trabajo.

Antes de empezar

Antes de empezar, asegúrate de que has realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando gcloud components update.

Crear política de red

  1. Para crear una política de red que aplique reglas en la misma red de pods que tu carga de trabajo, haz referencia a la red de pods específica en la definición de la política de red.

  2. Para definir las reglas de tráfico de entrada seleccionadas y los pods de destino en función de las etiquetas u otros selectores, cree una política de red estándar.

    Guarda el siguiente archivo de manifiesto de ejemplo como sample-ingress-network-policy1.yaml:

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: sample-network-policy
      namespace: default
      annotations:
        networking.gke.io/network: blue-pod-network  # GKE-specific annotation for network selection
    spec:
      podSelector:
        matchLabels:
          app: test-app-2  # Selects pods with the label "app: test-app-2"
      policyTypes:
      - Ingress  # Specifies the policy applies only to incoming traffic
      ingress:
      - from:  # Allow incoming traffic only from...
        - podSelector:
            matchLabels:
              app: test-app-1  # ...pods with the label "app: test-app-1"
    
  3. Aplica el manifiesto sample-ingress-network-policy1.yaml:

    kubectl apply -f sample-ingress-network-policy1.yaml
    
  4. Para definir las reglas de tráfico de salida seleccionadas y los pods de destino en función de las etiquetas u otros selectores, cree una política de red estándar.

    Guarda el siguiente archivo de manifiesto de ejemplo como sample-egress-network-policy2.yaml:

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: sample-network-policy-2
      namespace: default
      annotations:
        networking.gke.io/network: blue-pod-network  # GKE-specific annotation (optional)
    spec:
      podSelector:
        matchLabels:
          app: test-app-2
      policyTypes:
        - Egress  # Only applies to outgoing traffic
      egress:
        - to:
            - podSelector:
                matchLabels:
                  app: test-app-3
    
  5. Aplica el manifiesto sample-egress-network-policy2.yaml:

    kubectl apply -f sample-egress-network-policy2.yaml
    

Solucionar problemas de políticas de red de varias redes

Si tienes problemas con las políticas de red, tanto si se aplican a redes de pods específicas como si no, puedes diagnosticar y solucionar el problema ejecutando los siguientes comandos:

  1. kubectl get networkpolicy: muestra todos los objetos de directiva de red e información sobre ellos.
  2. iptables-save: recupera y muestra todas las cadenas de tablas de direcciones IP de un nodo concreto. Debes ejecutar este comando en el nodo como administrador.
  3. cilium bpf policy get <endpoint-id>: recupera y muestra las direcciones IP permitidas de la asignación de políticas de cada endpoint.
  4. cilium policy selectors: imprime las identidades y las políticas asociadas que las han seleccionado.
  5. cilium identity list: muestra las asignaciones de identidad a dirección IP.

Siguientes pasos