[英]Terraform Removes Configurations/Resources Created by the Application Gateway Ingress 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 > 运行状况探测 > 单击测试) - 显示错误:
您的一个或多个后端实例运行状况不佳。 建议在连接探针之前先解决此健康问题
我试过了:
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.