Configurar políticas de red de Kubernetes

En este tema se explica cómo usar las políticas de red de Kubernetes para proteger los pods de Cassandra y Redis en un clúster de Apigee Hybrid .

Información general

Si quieres controlar el flujo de tráfico a nivel de dirección IP o de puerto (capa 3 u 4 de OSI), puedes usar las políticas de red de Kubernetes para las aplicaciones de tu clúster. Las políticas de red son un constructo centrado en las aplicaciones que puedes usar para especificar cómo se permite que un pod se comunique con otros pods de tu clúster.

En Apigee hybrid, puedes usar políticas de red de Kubernetes para aislar los pods de Cassandra de forma que solo se permita la comunicación con Cassandra a los pods que estén diseñados para ello, como los pods de Runtime, Synchronizer y Mart. Otros pods del clúster, como los pods de Ingres y Watcher, que no necesitan comunicarse con Cassandra, no pueden hacerlo.

Si no tienes restricciones sobre qué pods pueden interactuar en tu clúster, no necesitas usar políticas de red de Kubernetes.

Requisitos previos

Procedimiento

Descarga y extrae el paquete de lanzamiento de apigeectl.

Linux

curl -LO \
  https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.11.2/apigeectl_linux_64.tar.gz

macOS

curl -LO \
  https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.11.2/apigeectl_mac_64.tar.gz

Windows

curl -LO ^
   https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.11.2/apigeectl_windows_64.zip

Los archivos de configuración de las políticas de red de Kubernetes para Cassandra y Redis se encuentran en la siguiente estructura de directorios del directorio apigeectl:

  └── apigeectl
      └── examples
          └── network-policies
              └── securing-cassandra-redis-pods
                  ├── README.md
                  ├── base
                  │   └── cluster-scoped-communication
                  │       ├── cassandra
                  │       │   ├── kustomization.yaml
                  │       │   ├── networkpolicy-cassandra-allow-controller.yaml
                  │       │   ├── networkpolicy-cassandra-allow-intranode.yaml
                  │       │   ├── networkpolicy-cassandra-allow-mart.yaml
                  │       │   ├── networkpolicy-cassandra-allow-runtime.yaml
                  │       │   ├── networkpolicy-cassandra-alow-sync.yaml
                  │       │   ├── networkpolicy-cassandra-create-user.yaml
                  │       │   ├── networkpolicy-cassandra-monitoring.yaml
                  │       │   └── networkpolicy-cassandra-remove-dc.yaml
                  │       └── redis
                  │           ├── kustomization.yaml
                  │           ├── networkpolicy-redis-envoy.yaml
                  │           └── networkpolicy-redis.yaml
                  └── overlays
                      └── ORG_NAME
                          └── kustomization.yaml

Donde ORG_NAME es el nombre de tu organización de Apigee.

  1. Etiqueta el espacio de nombres con el siguiente comando:
    kubectl label namespace APIGEE_NAMESPACE app=apigee
  2. Aplica las políticas de red con el siguiente comando:
    kubectl apply -k ${APIGEECTL_HOME}/examples/network-policies/securing-cassandra-redis-pods/overlays/ORG_NAME
  3. Valida que las políticas de red se hayan aplicado con el siguiente comando:
    kubectl get netpol -n APIGEE_NAMESPACE

    Las siguientes políticas de red deben crearse en el espacio de nombres APIGEE_NAMESPACE:

          NAME                        POD-SELECTOR              AGE
          cassandra-from-mart         app=apigee-cassandra      4d5h
          cassandra-from-runtime      app=apigee-cassandra      4d5h
          cassandra-from-sync         app=apigee-cassandra      4d5h
          cassandra-to-cassandra      app=apigee-cassandra      4d5h
          controller-to-cassandra     app=apigee-cassandra      4d5h
          redis-from-redisenvoy       app=apigee-redis          3d18h
          redisenvoy-from-runtime     app=apigee-redis-envoy    3d18h