本主題說明如何使用 Kubernetes 網路政策,保護 Apigee Hybrid 叢集內的 Cassandra 和 Redis Pod。
總覽
如要以 IP 位址或通訊埠層級 (OSI 層級 3 或 4) 控管流量,您可以為叢集中的應用程式使用 Kubernetes 網路政策。網路政策是一種以應用程式為中心的建構,可用來指定 Pod 如何與叢集中的其他 Pod 通訊。
在 Apigee hybrid 中,您可以使用 Kubernetes Network Policy 隔離 Cassandra pod,這樣一來,只有與 Cassandra 通訊的 pod 才會允許通訊,例如 Runtime、Synchronizer 和 Mart pod。叢集中的其他 Pod (例如 Ingres 和 Watcher Pod) 不需要與 Cassandra 通訊,因此會遭到封鎖。
如果您不限制叢集中的 Pod 可以互動,則不需要使用 Kubernetes 網路政策。
先決條件
-
在叢集中啟用網路政策。
- GKE:請參閱「啟用網路政策強制執行功能」。
- EKS:請參閱「安裝 Calico 網路政策引擎外掛程式」。
- AKS:請參閱「使用 Azure Kubernetes Service (AKS) 中的網路政策保護 Pod 之間的流量 」。
- 其他平台:請向特定平台供應商尋找在叢集中啟用網路政策的操作說明。
- 目前執行中的 Apigee Hybrid 叢集,版本為 1.8 以上。
程序
如果您執行的是混合型 1.8.x 版本,請下載並解壓縮最新的 Apigee 版本套件。
Linux
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.9.4/apigeectl_linux_64.tar.gz
Mac OS
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.9.4/apigeectl_mac_64.tar.gz
Windows
curl -LO ^ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.9.4/apigeectl_windows_64.zip
Cassandra 和 Redis 的 Kubernetes 網路政策設定檔位於 $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
其中 ORG_NAME
是 Apigee 機構的名稱。
- 使用下列指令為命名空間加上標籤:
kubectl label namespace apigee app=apigee
kubectl label namespace apigee-system app=apigee-system
- 使用下列指令套用聯播網政策:
kubectl apply -k ${APIGEECTL_HOME}/examples/network-policies/securing-cassandra-redis-pods/overlays/ORG_NAME
- 請使用下列指令驗證網路政策是否已套用:
kubectl get netpol -n apigee
請在
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