1

NetworkPolicyAzure Kubernetes Service (AKS) インスタンスですべてのイングレス トラフィックをブロックするための基本的なリソースを取得するのに問題があります。azureAKS は、ネットワーク プラグイン (つまり、Azure CNI)を使用してセットアップされます。

私たちの問題は、オンプレミス ネットワークへの VNet ピアリングにより、AKS ワークロードが内部ネットワークからの悪意のある人物にさらされるようになったことです。そのため、イングレス コントローラーがありますが、それをすべての非システム ワークロードの唯一のエントリポイントにしたいと考えています。

NetworkPolicyリソースは次のとおりです。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: hello-node-network-policy
  namespace: hello-namespace-2
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  ingress: []

別の名前空間の Pod でも、サービス エンドポイントと Pod IP アドレスの両方に接続できます ( をkubectl get pods --output=wide --namespace=hello-namespace-2参照)。同じ VNet 内の Azure VM でも、IP アドレスに直接接続できます。

Namespace、StatefulSet、Service、Ingress、および NetworkPolicy の定義は以下のとおりです。

apiVersion: v1
kind: Namespace
metadata:
  name: hello-namespace-2
  labels:
    ingress-allowed: "allowed"
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  creationTimestamp: null
  labels:
    app: hello-node
  name: hello-node
  namespace: hello-namespace-2
spec:
  serviceName: hello-node
  replicas: 1
  selector:
    matchLabels:
      app: hello-node
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: hello-node
    spec:
      containers:
      - image: k8s.gcr.io/echoserver:1.4
        name: echoserver
        resources: {}
---
apiVersion: v1
kind: Service
metadata:
  name: hello-node-service
  namespace: hello-namespace-2
spec:
  type: ClusterIP
  selector:
    app: hello-node
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 8080
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: hello-node-ingress
  namespace: hello-namespace-2
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
  - host: hello-namespace-2
    http:
      paths:
      - path: /hello-node(/|$)(.*)
        backend:
          serviceName: hello-node-service
          servicePort: 80
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: hello-node-network-policy
  namespace: hello-namespace-2
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  ingress: []

azureこれは、ネットワーク コントローラーがインストールされていないかのように動作します。これは、Azure CNI のネットワーク プラグインが表していると思います。Calico のようなネットワーク コントローラーを明示的にインストールする必要がありますか?

この動作に関する洞察は大歓迎です。

ありがとう!

4

1 に答える 1