AZURE AKS:为什么网络策略不起作用?

h6my8fg2  于 2023-11-21  发布在  其他
关注(0)|答案(2)|浏览(139)

我在Azure中有一个Kubernetes集群(AKS),带有Application Gateway Ingress Controller。
我部署在它,WordPress的掌舵释放。我想启用入口流量只从应用网关入口控制器荚这是在kube-system
我的values.yml看起来像:

# I paste only NetworkPolicy part
networkPolicy:
  enabled: true
  ingress:
    enabled: true
  ingressRules:
    customRules:
      - from:
          - namespaceSelector:
              matchLabels:
                kubernetes.io/metadata.name: kube-system
            podSelector:
              matchLabels:
                app: ingress-appgw

字符串
然而,当我部署一个版本时,WordPress本身工作正常,但我无法通过<Application_Gateway_Ingress_Controller_PublicIP>访问它。
在我的Azure Portal上,当我访问应用程序网关资源时,我收到以下消息:

**图片1:**x1c 0d1x
图片2:

但是当我从values.yml中删除网络策略部分时,AGIC变得健康!
请帮忙吗?
感谢您发送编修。

5us2dqdw

5us2dqdw1#

此错误提示,由于您没有任何健康的后端池,请尝试添加健康的探针,如下所示。* 这将持续监控您的后端池的健康状态,并更新应用网关。应用网关将仅向健康的后端池发送流量 * 并刷新
x1c 0d1x的数据



添加健康的探测器和刷新后,需要几分钟的时间来更新这些,并尝试访问应用程序网关,然后 * 如果您收到无效的主机名错误,请尝试提前更改以下设置 *



查看Vladam的So thread以获取一些指针。
或者,尝试开发一个阻止所有流量的网络策略。创建一个名为backend-policy.yaml的文件,并使用以下清单阻止所有传入Pod的流量:

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: backend-policy
  namespace: development
spec:
  podSelector:
    matchLabels:
      app: webapp
      role: backend
  ingress: []

字符串
参考文件:
Troubleshoot backend health issues in Azure Application Gateway | Microsoft Docs
使用网络策略保护Pod流量- Azure Kubernetes Service| Microsoft Windows

ux6nzvsh

ux6nzvsh2#

面对同样的问题,在NetworkPolicy的入口规则的from子句中使用看似正确的namespace(如上所述)和/或pod,与健康探测器的通信仍然被阻止,除非我使用允许来自任何来源的流量的空from子句打开它:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  labels:
    app.kubernetes.io/managed-by: argocd-autopilot
    devTeam: buildchain-and-developer-experience
    gitopstool: argocd
  name: argocd-applicationset-controller-network-policy
  namespace: argocd
spec:
  ingress:
  - from: []
    ports:
    - port: 7000
      protocol: TCP
    - port: 8080
      protocol: TCP
  podSelector:
    matchLabels:
      app.kubernetes.io/name: argocd-applicationset-controller
  policyTypes:
  - Ingress

字符串
这导致了一个工作,虽然修改NetworkPolicy,与来自argocd公共源的netpol相比:

kubectl -n argocd describe netpol/argocd-applicationset-controller-network-policy
Name:         argocd-applicationset-controller-network-policy
Namespace:    argocd
Labels:       <none>
Annotations:  <none>
Spec:
  PodSelector:     app.kubernetes.io/name=argocd-applicationset-controller
  Allowing ingress traffic:
    To Port: 7000/TCP
    To Port: 8080/TCP
    From: <any> (traffic not restricted by source)
  Not affecting egress traffic
  Policy Types: Ingress

相关问题