このトピックでは、Kubernetes ネットワーク ポリシーを使用して、Apigee ハイブリッド クラスタ内で Cassandra Pod と Redis Pod を保護する方法について説明します。
概要
IP アドレスレベルまたはポートレベル(OSI レイヤ 3 または 4)でトラフィック フローを制御する場合は、クラスタ内のアプリケーションに Kubernetes ネットワーク ポリシーを使用できます。ネットワーク ポリシーは、アプリケーションを中心とした構造で、Pod がクラスタ内の他の Pod と通信する方法を指定するのに使用できます。
Apigee ハイブリッドでは、Kubernetes ネットワーク ポリシーを使用して Cassandra Pod を分離し、ランタイム、Synchronizer、Mart Pod などの Cassandra との通信を目的とした Pod のみを許可できます。Cassandra との通信を必要としない Ingres や Watcher の Pod など、クラスタ内の他の Pod は通信がブロックされます。
クラスタ内で通信できる Pod に制限がない場合は、Kubernetes ネットワーク ポリシーを使用する必要はありません。
前提条件
-
クラスタでネットワーク ポリシーを有効にします。
- GKE: ネットワーク ポリシーの適用を有効にするをご覧ください。
- EKS: Calico ネットワーク ポリシー エンジン アドオンをインストールするをご覧ください。
- AKS: Azure Kubernetes Service(AKS)のネットワーク ポリシーを使用して Pod 間のトラフィックを保護するをご覧ください。
- 他のプラットフォーム: 特定のプラットフォーム ベンダーから、クラスタでネットワーク ポリシーを有効にする手順を確認します。
- 現在実行されている Apigee ハイブリッド クラスタ、バージョン 1.8 以降。
手順
ハイブリッド バージョン 1.8.x を実行している場合は、最新の Apigee リリース パッケージをダウンロードして解凍します。
Linux
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.11.2/apigeectl_linux_64.tar.gz
MacOS
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_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 組織の名前です。
- 次のコマンドを使用して、Namespace にラベルを付けます。
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
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