Kubernetes-Netzwerkrichtlinien konfigurieren

In diesem Thema wird erlรคutert, wie Sie Cassandra- und Redis-Pods mithilfe von Kubernetes-Netzwerkrichtlinien in einem Apigee Hybrid-Cluster schรผtzen.

รœbersicht

Wenn Sie den Trafficfluss auf IP-Adressen- oder Portebene (OSI-Ebene 3 oder 4) steuern mรถchten, kรถnnen Sie Kubernetes-Netzwerkrichtlinien fรผr Anwendungen in Ihrem Cluster verwenden. Netzwerkrichtlinien sind ein anwendungsorientiertes Konstrukt, mit dem Sie angeben kรถnnen, wie ein Pod mit anderen Pods in Ihrem Cluster kommunizieren darf.

In Apigee Hybrid kรถnnen Sie Kubernetes-Netzwerkrichtlinien verwenden, um Cassandra-Pods zu isolieren, sodass nur Pods, die mit Cassandra kommunizieren sollen, zulรคssig sind, z. B. die Runtime-, Synchronizer- und Mart-Pods. Andere Pods im Cluster wie Ingres- und Watcher-Pods, die nicht mit Cassandra kommunizieren mรผssen, werden daran gehindert.

Wenn Sie keine Einschrรคnkungen fรผr die Interaktion von Pods in Ihrem Cluster haben, mรผssen Sie keine Kubernetes-Netzwerkrichtlinien verwenden.

Vorbereitung

Vorgehensweise

Wenn Sie die Hybrid-Version 1.8.x ausfรผhren, laden Sie das neueste Apigee-Releasepaket herunter und extrahieren Sie es.

Linux

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

Mac OS

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

Windows

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

Die Konfigurationsdateien fรผr die Kubernetes-Netzwerkrichtlinien fรผr Cassandra und Redis befinden sich in der folgenden Verzeichnisstruktur in Ihrem $APIGEECTL_HOME-Verzeichnis:

  โ””โ”€โ”€ 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

Dabei ist ORG_NAME der Name Ihrer Apigee-Organisation.

  1. Versehen Sie die Namespaces mit einem Label. Fรผhren Sie dazu den folgenden Befehl aus:
    kubectl label namespace apigee app=apigee
    kubectl label namespace apigee-system app=apigee-system
  2. Wenden Sie die Netzwerkrichtlinien mit dem folgenden Befehl an:
    kubectl apply -k ${APIGEECTL_HOME}/examples/network-policies/securing-cassandra-redis-pods/overlays/ORG_NAME
  3. Prรผfen Sie mit dem folgenden Befehl, ob die Netzwerkrichtlinien angewendet wurden:
    kubectl get netpol -n apigee

    Die folgenden Netzwerkrichtlinien sollten im Namespace apigee erstellt werden:

          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