繁体   English   中英

Ingress 不适用于 AKS 的应用程序网关入口 controller (AGIC) 附加组件

[英]Ingress is not working for application gateway ingress controller (AGIC) add-on of AKS

我在 Azure 门户中启用了 AGIC,然后创建了 Fanout Ingress 但它不起作用。 我检查了规则(ingress-appgateway > 规则 > 基于路径的路由)并且路径针对正确的后端池。

当我测试运行状况探测时,它失败了(“MC_...”资源组 > ingress-appgateway > 运行状况探测 > 单击测试) - 显示错误:

您的一个或多个后端实例运行状况不佳。 建议在连接探针之前先解决此健康问题

我试过了:

  • 禁用和启用 AGIC ->不起作用
  • 使用pathType: ImplementationSpecific (而不是pathType: Prefix )->不起作用
  • nginx.ingress.kubernetes.io/rewrite-target: /$1 & /foo(/|$)(.*) ->没用

在“ingress-appgateway”(Azure 门户)的 Overview 页面顶部,显示错误:

一个或多个后端池中的所有实例都不正常。 当您尝试访问托管在应用程序网关后面的应用程序时,这将导致 502 错误。 请检查后端运行状况并解决问题。

仅当我删除路径( /foo/bar )并以单个服务为目标时,它才有效。

仅供参考,我正在使用 Azure CNI 网络和现有 VNet(专用子网)。

deployment.yaml

apiVersion: v1
kind: Service
metadata:
  name: demo-web-app1
  namespace: demo
spec:
  selector:
    app: demo-web-app1
  type: ClusterIP
  ports:
  - protocol: TCP
    port: 4200
    targetPort: 80
    
---

apiVersion: v1
kind: Service
metadata:
  name: demo-web-app2
  namespace: demo
spec:
  selector:
    app: demo-web-app2
  type: ClusterIP
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 80

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-web-app1
  namespace: demo
spec:
  replicas: 2
  selector:
    matchLabels:
      app: demo-web-app1
  template:
    metadata:
      labels:
        app: demo-web-app1
    spec:
      containers:
      - name: demo-web-app1
        image: myacr.azurecr.io/myacr6472:375
        ports:
        - containerPort: 80
        
---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-web-app2
  namespace: demo
spec:
  replicas: 3
  selector:
    matchLabels:
      app: demo-web-app2
  template:
    metadata:
      labels:
        app: demo-web-app2
    spec:
      containers:
      - name: demo-web-app2
        image: myacr.azurecr.io/myacr6472:375
        ports:
        - containerPort: 80

---

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-demo-web-app
  namespace: demo
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
  - http:
      paths:
      - path: /foo
        pathType: Prefix
        backend:
          service:
            name: demo-web-app1
            port:
              number: 4200
      - path: /bar
        pathType: Prefix
        backend:
          service:
            name: demo-web-app2
            port:
              number: 8080

appgw.ingress.kubernetes.io/backend-path-prefix: /解决了@Matt 在评论部分指出的问题。

我现在可以使用不同的路径来定位多个后端池,即/api用于 API 服务和/app用于 UI 应用程序。

使用appgw.ingress.kubernetes.io/backend-path-prefix: "/"我们将能够指定多个规则。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: gateway-ingress
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/backend-path-prefix: "/"
spec:
  rules:
  - http:
      paths:
      - path: /service1/*
        pathType: Prefix
        backend:
          service:
            name: k8-boot-graphql-rest-aks-apm-test
            port:
              number: 8081
      - path: /service2/*
        pathType: Prefix
        backend:
          service:
            name: k8-sboot-restapi-test
            port:
              number: 8080

http://host/service1/actuator/health ---> Microservice 1
http://host/service2/actuator/health ---> Microservice 2

我使用的示例部署脚本

apiVersion: v1
kind: Pod
metadata:
  name: k8-boot-graphql-rest-aks-apm-test
  labels:
    app: k8-boot-graphql-rest-aks-apm-test
spec:
  containers:
  - image: sreyasvpariyath/k8-boot-graphql-rest-aks-apm-test:latest #CHANGE
    imagePullPolicy: Always
    name: k8-boot-graphql-rest-aks-apm-test
    ports:
    - containerPort: 8081
      protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: k8-boot-graphql-rest-aks-apm-test
spec:
  selector:
    app: k8-boot-graphql-rest-aks-apm-test
  ports:
  - protocol: TCP
    port: 8081
    targetPort: 8081

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM