이 주제에서는 Kubernetes 네트워크 정책을 사용하여 Apigee Hybrid 클러스터 내에서 Cassandra 및 Redis 포드를 보호하는 방법을 설명합니다 .
개요
IP 주소 또는 포트 수준에서(OSI 레이어 3 또는 4) 트래픽 흐름을 제어하려는 경우 클러스터의 애플리케이션에 Kubernetes 네트워크 정책을 사용할 수 있습니다. 네트워크 정책은 포드가 클러스터의 다른 포드와 통신하는 방법을 지정할 수 있는 애플리케이션 중심 구조입니다.
Apigee Hybrid에서는 Kubernetes 네트워크 정책을 사용하여 런타임, 동기화 담당자, Mart 포드와 같이 Cassandra와 통신하려는 포드만 허용되도록 Cassandra 포드를 격리할 수 있습니다. Cassandra와 통신할 필요가 없는 인그레스 및 감시자 포드와 같은 클러스터의 다른 포드는 격리할 수 없습니다.
클러스터 내에서 상호작용할 수 있는 포드에 제한사항이 없으면 Kubernetes 네트워크 정책을 사용할 필요가 없습니다.
기본 요건
-
클러스터에서 네트워크 정책을 사용 설정합니다.
- GKE: 네트워크 정책 적용 사용 설정을 참조하세요.
- EKS: Calico 네트워크 정책 엔진 부가기능 설치를 참조하세요.
- AKS: Azure Kubernetes Service(AKS)의 네트워크 정책을 사용하여 포드 간 트래픽 보안을 참조하세요.
- 기타 플랫폼: 특정 플랫폼 공급업체의 클러스터에서 네트워크 정책을 사용 설정하는 방법을 찾아보세요.
- 현재 실행 중인 Apigee Hybrid 클러스터가 버전 1.8 이상이어야 합니다.
절차
Hybrid 버전 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 조직의 이름입니다.
- 다음 명령어를 사용하여 네임스페이스에 라벨을 지정합니다.
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