本主題說明如何使用 Kubernetes 網路政策,保護 Apigee Hybrid 叢集中的 Cassandra 和 Redis Pod。
總覽
如要在 IP 位址或通訊埠層級 (OSI 第 3 或 4 層) 控制流量,可以為叢集中的應用程式使用 Kubernetes 網路政策。網路政策是以應用程式為中心的建構體,可用於指定 Pod 在叢集中與其他 Pod 通訊的方式。
在 Apigee Hybrid 中,您可以使用 Kubernetes 網路政策隔離 Cassandra Pod,只允許預期與 Cassandra 通訊的 Pod (例如 Runtime、Synchronizer 和 Mart Pod) 進行通訊。叢集中的其他 Pod (例如 Ingres 和 Watcher Pod) 無須與 Cassandra 通訊,因此會遭到封鎖。
如果叢集內可互動的 Pod 沒有任何限制,則不需要使用 Kubernetes 網路政策。
必要條件
-
在叢集中啟用網路政策。
- GKE: 請參閱啟用強制執行網路政策功能。
- EKS:請參閱「安裝 Calico 網路政策引擎外掛程式」。
- AKS:請參閱「在 Azure Kubernetes 服務 (AKS) 中使用網路政策,確保 Pod 之間的流量安全 」。
- 其他平台:請向特定平台供應商索取叢集網路政策的啟用說明。
- 目前執行的 Apigee Hybrid 叢集,版本為 1.8 以上。
程序
下載並解壓縮 apigeectl
發布套件。
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
Cassandra 和 Redis 的 Kubernetes 網路政策設定檔位於 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
其中 ORG_NAME
是 Apigee 機構的名稱。
- 使用下列指令為命名空間加上標籤:
kubectl label namespace APIGEE_NAMESPACE app=apigee
- 使用下列指令套用網路政策:
kubectl apply -k ${APIGEECTL_HOME}/examples/network-policies/securing-cassandra-redis-pods/overlays/ORG_NAME
- 執行下列指令,驗證網路政策是否已套用:
kubectl get netpol -n APIGEE_NAMESPACE
應在 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