2017-02-17 7 views
0

Kubernetes 클러스터에 대한 네트워크 정책을 설정할 예정입니다. 그러나 우리의 네임 스페이스 중 적어도 하나에서 우리는 ExternalName 서비스 (AWS RDS intance에 대해 kubernetes reference - service types))를 가지고 있습니다.이 ExternalName 서비스로의 트래픽을 특정 포드 세트에서 제한하고 싶습니다. 그렇지 않은 경우 특정 네임 스페이스. 어느 쪽도 아니 namespace isolation policy 또는 NetworkPolicy resoure이 ExternalName 서비스에 적용 할 것 없습니다. 모두 WeaveProject Calico에 대한 문서를 검색 한 후, 이러한 기능에 대한 언급이있을 것 같지 않습니다.Kubernetes 외부 이름 서비스를위한 네트워크 정책

가 네트워크 트래픽을 제한 할 수 있나요 특정 포드 집합 또는 특정 네임 스페이스의 외부 이름 서비스

답변

1

실제로 할 수는 없습니다. DNS 구성. 클라이언트는 서비스에 대한 DNS 검색을 수행하고 kube-dns는 귀하의 경우 RDS 인스턴스에 대한 CNAME 레코드를 반환합니다. 그런 다음 클라이언트는 RDS에 직접 연결합니다.

이 문제를 해결하기 위해 두 가지 방법이 있습니다

블록은 단지 조회가 (그들이 IP 또는 정규화 된 RDS 호스트 이름을 알고있는 경우 포드는 여전히 DB에 연결할 수 있습니다) DNS
  1. :

    • 을 ExternalName 서비스를 지원하기 위해 네임 스페이스 격리를 변경합니다.
    • kube-dns는 각 요청 뒤에 클라이언트 포드를 만듭니다.
    • kube-dns가 네임 스페이스를 인식하도록합니다. 격리 설정 및 적용, 그래서 허가 된 포드
  2. 반환 DNS 조회에 CNAME 레코드를 반환하지만 블록 RDS 연결 :

    • 는 송신 트래픽을 제어하기 위해 어떻게 든 NetworkPolicy을 확장
    • 블랙리스트/화이트리스트 RDS IP를 도매 (쉽게 이루어 졌기 때문에 역동적이기 때문에 쉽게 말함)하거나 네트워크 컨트롤러가 DNS 조회 결과를 추적하고 이에 따라 연결을 차단/허용하게합니다. 어느 경우

, 당신은는 Kubernetes 및 다운 스트림에 기능 요청의 수를 제출해야합니다.

출처 : EN 지원 코드를 작성했습니다.

+0

답해 주셔서 감사합니다. 또한 K8S Slack 커뮤니티의 시그널 네트워크 채널에이 질문을 게시했습니다. Calico 직원과 직조 직원이 대답했다. Project Calico는 [출구 정책] (http://docs.projectcalico.org/master/getting-started/kubernetes/tutorials/advanced-policy)을 지원하고 Weave는 [문제] (https://github.com/weaveworks/)를 가지고 있습니다. weave/issues/2624)에서 [K8S 출구 정책 제안] (https://docs.google.com/document/d/1yAPpjdIV6aq7qteVIoYUbagE27jYn-6pnA8UXLAr078)을 지원할 수 있습니다. 출구에 관한 논의가 조금 지연된 것처럼 보입니다. – iBlocksShaun