Azure / application-gateway-kubernetes-ingress

This is an ingress controller that can be run on Azure Kubernetes Service (AKS) to allow an Azure Application Gateway to act as the ingress for an AKS cluster.
https://azure.github.io/application-gateway-kubernetes-ingress
MIT License
677 stars 420 forks source link

Health check Failing #1561

Closed caxefaizan closed 1 year ago

caxefaizan commented 1 year ago

I Have an application deployed whose service has the following ports

apiVersion: v1
kind: Service
metadata:
  name: app-ingress-svc
  namespace: app
spec:
  ports:
  - name: status-port
    port: 15021
    protocol: TCP
    targetPort: 15021
  - name: https
    port: 443
    protocol: TCP
    targetPort: 8443

I configured my INgress object as

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: app-ingress
  namespace: app
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/use-private-ip: "true"
    appgw.ingress.kubernetes.io/backend-protocol: https
    appgw.ingress.kubernetes.io/health-probe-path: "/healthz/ready"
    appgw.ingress.kubernetes.io/health-probe-port: "15021"
spec:
  tls:
  - hosts:
      - example.net
      secretName: app-gateway-secret
  rules:
  - host: example.net
    http:
      paths:
      - path: /
        backend:
          service:
            name: app-ingress-svc
            port:
              number: 443
        pathType: Prefix

I have the AGIC add on depployed on my AKS cluster where the logs suggests

I0712 12:49:58.547239       1 mutate_app_gateway.go:177] BEGIN AppGateway deployment
I0712 12:50:05.315625       1 mutate_app_gateway.go:185] Applied generated Application Gateway configuration
I0712 12:50:05.315647       1 mutate_app_gateway.go:200] cache: Updated with latest applied config.
I0712 12:50:05.316380       1 mutate_app_gateway.go:204] END AppGateway deployment
I0712 12:50:05.316395       1 controller.go:151] Completed last event loop run in: 6.890477793s

However, My health check is failing, where my pod has the http-get readiness check as

Readiness:  http-get http://:15021/healthz/ready delay=1s timeout=1s period=2s #success=1 #failure=30

But there is no annotation to support that unlike the AWS-ALB controller, where we can define alb.ingress.kubernetes.io/healthcheck-protocol: HTTP

I tried creating a custom probe image

with the respectibe backend setting as image

Am i doing anything wrong here?