Kubernetes 네트워크 정책 구성

이 주제에서는 Kubernetes 네트워크 정책을 사용하여 Apigee Hybrid 클러스터 내에서 Cassandra 및 Redis 포드를 보호하는 방법을 설명합니다 .

개요

IP 주소 또는 포트 수준에서(OSI 레이어 3 또는 4) 트래픽 흐름을 제어하려는 경우 클러스터의 애플리케이션에 Kubernetes 네트워크 정책을 사용할 수 있습니다. 네트워크 정책은 포드가 클러스터의 다른 포드와 통신하는 방법을 지정할 수 있는 애플리케이션 중심 구조입니다.

Apigee Hybrid에서는 Kubernetes 네트워크 정책을 사용하여 런타임, 동기화 담당자, Mart 포드와 같이 Cassandra와 통신하려는 포드만 허용되도록 Cassandra 포드를 격리할 수 있습니다. Cassandra와 통신할 필요가 없는 인그레스 및 감시자 포드와 같은 클러스터의 다른 포드는 격리할 수 없습니다.

클러스터 내에서 상호작용할 수 있는 포드에 제한사항이 없으면 Kubernetes 네트워크 정책을 사용할 필요가 없습니다.

기본 요건

절차

Hybrid 버전 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

MacOS

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 조직의 이름입니다.

  1. 다음 명령어를 사용하여 네임스페이스에 라벨을 지정합니다.
    kubectl label namespace apigee app=apigee
    kubectl label namespace apigee-system app=apigee-system
  2. 다음 명령어를 사용하여 네트워크 정책을 적용합니다.
    kubectl apply -k ${APIGEECTL_HOME}/examples/network-policies/securing-cassandra-redis-pods/overlays/ORG_NAME
  3. 다음 명령어를 사용하여 네트워크 정책이 적용되었는지 검증합니다.
    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