2017-02-17 16 views
0

Kubernetesクラスタのネットワークポリシーを設定します。しかし、私たちの名前空間の少なくとも1つには、ExternalNameサービス(kubernetes reference - service types)、AWS RDSインテンス用)があります。このExternalNameサービスへのトラフィックを、特定のポッドセットからのトラフィックに制限するか、 。namespace isolation policyまたはNetworkPolicy resoureどちらがWeaveProject Calico両方のドキュメントを検索した後、このような機能の一切の言及があるように思えません。ExternalNameサービスには適用されているように見える。Kubernetes外部ネームサービスのネットワークポリシー

名前空間には、それはへのネットワークトラフィックを制限することが可能です特定のポッドセットまたは特定の名前空間からのExternalNameサービス?

答えて

1

あなたは本当にそれを行うことはできません。 DNS構成。クライアントはサービスのDNSルックアップを実行し、kube-dnsはあなたのケースではRDSインスタンスのCNAMEレコードを返します。クライアントはRDSに直接接続します。

これに対処する2つの方法があります。

  1. がブロックだけで(彼らはIPまたは完全修飾RDSのホスト名を知っていればポッドはまだDBに接続することができます)検索をDNS:

    • ExternalNameサービスをサポートするために名前空間の隔離を変更する
    • kube-dnsが受け取った各要求の後ろにクライアントポッドを表示する
    • kube-dnsが名前空間を認識するようにするアイソレーション設定し、それが唯一認可ポッド
  2. 戻りDNSルックアップが、ブロックのRDS接続にCNAMEレコードを返しますので、それらを適用します。

    • も/出力トラフィック
    • ブラックリストを制御するために何とかNetworkPolicyを拡張ホワイトリストのRDS IPを卸売り(より簡単に言えば、動的であるため)、ネットワークコントローラがDNSルックアップの結果を追跡し、それに応じて接続をブロック/許可するようにします。いずれの場合も

、あなたはKubernetesと下流で機能要求の数を提出する必要があります。

出典:ENサポートコードを書きました。

+0

答えに感謝します。私はK8S Slackコミュニティのsig-network channelにもこの質問を投稿しました。カリコの従業員とウィーブの従業員が答えました。 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

関連する問題