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
-
Aktivieren Sie Netzwerkrichtlinien in Ihrem Cluster.
- GKE: Siehe Erzwingung von Netzwerkrichtlinien.
- EKS: Siehe Add-on für Calico-Netzwerkrichtlinien-Engine installieren.
- AKS: Siehe Traffic zwischen Pods mithilfe von Netzwerkrichtlinien in Azure Kubernetes Service (AKS) schützen .
- Andere Plattformen: Suchen Sie nach Anleitungen zum Aktivieren von Netzwerkrichtlinien für Cluster von Ihrem spezifischen Plattformanbieter.
- Ein derzeit ausgeführter Apigee Hybrid-Cluster der Version 1.8 oder höher.
Vorgehensweise
Laden Sie das Release-Paket apigeectl
herunter und extrahieren Sie es.
Linux
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.11.2/apigeectl_linux_64.tar.gz
Mac OS
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
Die Konfigurationsdateien für die Kubernetes-Netzwerkrichtlinien für Cassandra und Redis befinden sich in der folgenden Verzeichnisstruktur im apigeectl
-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.
- Versehen Sie den Namespace mit einem Label. Führen Sie dazu den folgenden Befehl aus:
kubectl label namespace APIGEE_NAMESPACE app=apigee
- Wenden Sie die Netzwerkrichtlinien mit dem folgenden Befehl an:
kubectl apply -k ${APIGEECTL_HOME}/examples/network-policies/securing-cassandra-redis-pods/overlays/ORG_NAME
- Prüfen Sie mit dem folgenden Befehl, ob die Netzwerkrichtlinien angewendet wurden:
kubectl get netpol -n APIGEE_NAMESPACE
Die folgenden Netzwerkrichtlinien sollten im Namespace APIGEE_NAMESPACE 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