本主题介绍如何使用 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 版或更高版本。
过程
下载并解压缩 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