Search code examples
kubernetes-ingressgatewaynginx-ingressazure-aks

Azure AKS | Application gateway | Ingress | Backend Prefix


I am bit confused the way path resolves the endpoint, does it show in any logs the final endpoint it creates. I am stuck with this now. Below is the endpoint which I wanted to call:-

https://hostname/api/orders/employees. And to call this endpoint through Ingress application gateway, this is how I configured but it always return 502 bad gateway error.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ordersapi
  namespace: orders
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/appgw-ssl-certificate: "wildcard.apps.com"
    appgw.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  rules:
  - host: orders.apps.com
    http:
      paths:
      - path: /api/orders/employees
        backend:
          serviceName: orderservice
          servicePort: 80

Solution

  • Finally, there are two solution to this problem:-

    First

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: ordersapi
      namespace: orders
      annotations:
        kubernetes.io/ingress.class: azure/application-gateway
        appgw.ingress.kubernetes.io/appgw-ssl-certificate: "wildcard.apps.com"
        appgw.ingress.kubernetes.io/ssl-redirect: "true"
    spec:
      rules:
      - host: orders.apps.com
        http:
          paths:
          - path: /api/orders/employees
            backend:
              serviceName: orderservice
              servicePort: 80
          - path: /api/product/products
            backend:
              serviceName: orderservice
              servicePort: 80h
    

    Second

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: ordersapi
      namespace: orders
      annotations:
        kubernetes.io/ingress.class: azure/application-gateway
        appgw.ingress.kubernetes.io/backend-path-prefix: "/api/"
        appgw.ingress.kubernetes.io/appgw-ssl-certificate: "wildcard.apps.com"
        appgw.ingress.kubernetes.io/ssl-redirect: "true"
    spec:
      rules:
      - host: orders.apps.com
        http:
          paths:
          - path: /api/*
            backend:
              serviceName: orderservice
              servicePort: 80