Configurazione dei criteri di rete di Kubernetes

Questo argomento spiega come utilizzare i criteri di rete di Kubernetes per proteggere i pod Cassandra e Redis in un cluster ibrido Apigee .

Panoramica

Se vuoi controllare il flusso di traffico a livello di indirizzo IP o di porta (livello 3 o 4 OSI), puoi utilizzare i criteri di rete di Kubernetes per le applicazioni nel tuo cluster. I criteri di rete sono un costrutto incentrato sulle applicazioni che puoi utilizzare per specificare in che modo un pod può comunicare con altri pod nel cluster.

In Apigee hybrid puoi utilizzare i criteri di rete di Kubernetes per isolare i pod Cassandra in modo da consentire solo i pod destinati a comunicare con Cassandra, ad esempio i pod Runtime, Sincronizzatore e Mart. Gli altri pod nel cluster, come i pod Ingres e Watcher, che non hanno bisogno di comunicare con Cassandra, non possono farlo.

Se non esistono limitazioni relative ai pod che possono interagire all'interno del cluster, non è necessario utilizzare i criteri di rete di Kubernetes.

Prerequisiti

Procedura

Se esegui la versione ibrida 1.8.x, scarica ed estrai il pacchetto di release Apigee più recente.

Linux

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

Mac OS

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

I file di configurazione per i criteri di rete di Kubernetes per Cassandra e Redis si trovano nella seguente struttura di directory all'interno della directory $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

Dove ORG_NAME è il nome della tua organizzazione Apigee.

  1. Etichetta gli spazi dei nomi con il comando seguente:
    kubectl label namespace apigee app=apigee
    kubectl label namespace apigee-system app=apigee-system
  2. Applica i criteri di rete con il comando seguente:
    kubectl apply -k ${APIGEECTL_HOME}/examples/network-policies/securing-cassandra-redis-pods/overlays/ORG_NAME
  3. Verifica che i criteri di rete siano stati applicati con il seguente comando:
    kubectl get netpol -n apigee

    I seguenti criteri di rete devono essere creati nello spazio dei nomi 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