本主题介绍如何使用 Kubernetes 网络政策来保护 Apigee Hybrid 集群中的 Cassandra 和 Redis pod。
概览
如果要控制 IP 地址或端口级别的流量(OSI 第 3 层或第 4 层),则可以将 Kubernetes 网络政策用于集群中的应用。网络政策是以应用为中心的构造,可用于指定 Pod 如何与集群中的其他 Pod 通信。
在 Apigee Hybrid 中,您可以使用 Kubernetes 网络政策隔离 Cassandra Pod,以便仅允许与 Cassandra 通信的 Pod(例如运行时、同步器和 Mart Pod)。集群中不需要与 Cassandra 通信的其他 Pod(例如 Ingress 和 Watcher Pod)将被阻止执行此操作。
如果您对集群内的哪些 Pod 没有任何限制,则无需使用 Kubernetes 网络政策。
前提条件
-
在集群中启用网络政策。
- GKE:请参阅启用网络政策实施功能。
- EKS:请参阅安装 Calico 网络政策引擎插件。
- AKS:请参阅使用 Azure Kubernetes Service (AKS) 中的网络政策保护 Pod 之间的流量。
- 其他平台:查找有关在特定平台上供应商在集群上启用网络政策的说明。
- 当前正在运行的 Apigee Hybrid 集群 1.8 版或更高版本。
过程
如果您运行的是 Hybrid 1.8.x 版,请下载并解压缩最新的 Apigee 版本软件包。
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
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