Configura las 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 dentro de un clúster de Apigee Hybrid.

Descripción general

Cuando quieras controlar el flujo de tráfico a nivel de la dirección IP o del puerto (OSI capa 3 o 4), puedes usar las políticas de red de Kubernetes para las aplicaciones en tu clúster. Las políticas de red son una construcción centrada en la aplicación que puedes usar para especificar cómo un pod puede comunicarse con otros pods en tu clúster.

En Apigee Hybrid, puedes usar las políticas de red de Kubernetes para aislar los pods de Cassandra a fin de que solo los pods que están destinados a comunicarse con Cassandra puedan hacerlo, como los entornos de ejecución, Synchronizer y MART. Otros pods en el clúster, como los de Ingres y Watcher que no necesitan comunicarse con Cassandra están bloqueados para hacerlo.

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

Requisitos previos

Procedimiento

Si ejecutas la versión 1.8.x de Hybrid, descarga y extrae el paquete de versión más reciente de Apigee.

Linux

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

macOS

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

Windows

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

Los archivos de configuración para las políticas de red de Kubernetes para Cassandra y Redis están en la siguiente estructura de directorio dentro de tu directorio $APIGEECTL_HOME:

  └── 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

En el ejemplo anterior, ORG_NAME es el nombre de tu organización de Apigee.

  1. Etiqueta los espacios de nombres con el siguiente comando:
    kubectl label namespace apigee app=apigee
    kubectl label namespace apigee-system app=apigee-system
  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. Usa el siguiente comando para validar que las políticas de red se hayan aplicado:
    kubectl get netpol -n apigee

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

          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