0

helloこれは、ラベルがあり、53 TCP および UDP でのポート接続を許可し、すべてのポートをブロックするPod への接続を許可する NetworkPolicy のサンプルです。

すべてのポートを許可し、53 の TCP と UDP (送信) をブロックするようにするにはどうすればよいでしょうか。

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: foo-allow-to-hello
spec:
  policyTypes:
  - Egress
  podSelector:
    matchLabels:
      app: foo
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: hello
  - ports:
    - port: 53
      protocol: TCP
    - port: 53
      protocol: UDP
4

1 に答える 1

1

残念ながら、Kubernetes ネイティブの NetworkPolicies には「拒否」機能がないため、 port を除く許可するすべてのポートをリストする場合、これは非常に面倒です53。現在、K8s ネットワーク ポリシーでポート範囲を許可する機能リクエストが公開されており、これによりさらに簡素化が可能になります。

そうは言っても、他の選択肢があります。Calicoのようなオーバーレイを使用している場合は、より豊富なNetworkPolicyアクションにアクセスできます。例えば:

apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
  name: deny-dns
  namespace: mynamespace
spec:
  selector: app == 'hello'
  types:
  - Ingress
  - Egress
  egress:
  - action: Deny
    metadata:
      annotations:
        from: helloworld
        to: dns
    protocol: TCP
    source:
      selector: app == 'hello'
    destination:
      ports:
      - 53
  - action: Deny
    metadata:
      annotations:
        from: helloworld
        to: dns
    protocol: UDP
    source:
      selector: app == 'hello'
    destination:
      ports:
      - 53
  ingress:
  - action: Allow

また、特定のポッド/名前空間を許可する進入ポリシーを coredns ポッドに適用するなど、他の回避策を見つけることもできます。

于 2020-07-14T20:00:12.120 に答える