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
667 stars 413 forks source link

application-gateway-kubernetes-ingress closing Websocket connecion from cluster #1614

Open khuga94 opened 1 month ago

khuga94 commented 1 month ago

Describe the bug I have a Jenkins running in an AKS cluster with [application-gateway-kubernetes-ingress] as an ingress controller. This jenkins has a websocket connection with a Windows VM through websocket. Everytime the ingress controller updates the AGW config, this connection resets. Is this working as intended or a bug?

To Reproduce Steps to reproduce the behavior: 1.Open a websocket connection through an app deployed in the cluster to a external connected client.

  1. Force the update of the application gateway trough the controller (making a new ingress, scaling a pod whose ingress is controlled etc) Ingress Controller details
    • Output of kubectl describe pod <ingress controller> . The pod name can be obtained by running helm list.
    • `Name: application-gateway-kubernetes-ingress-azure-7587cb9c76-p5zxm Namespace: waf Priority: 0 Service Account: application-gateway-kubernetes-sa-ingress-azure Node: aks-npappspot-22452776-vmss000015/10.80.244.13 Start Time: Fri, 17 May 2024 11:00:17 +0200 Labels: app=ingress-azure azure.workload.identity/use=true pod-template-hash=7587cb9c76 release=application-gateway-kubernetes Annotations: checksum/config: a55e73766739d4f0b63fa6ccac7e8225874e27027784618c1b71e1bde902061c prometheus.io/port: 8123 prometheus.io/scrape: true Status: Running IP: 10.244.123.184 IPs: IP: 10.244.123.184 Controlled By: ReplicaSet/application-gateway-kubernetes-ingress-azure-7587cb9c76 Containers: ingress-azure: Container ID: containerd://09fe5735c8f0d1fbedec7bd4e8875bcc86fb860be39f58d8e4768499e37d3d98 Image: mcr.microsoft.com/azure-application-gateway/kubernetes-ingress:1.7.1 Image ID: mcr.microsoft.com/azure-application-gateway/kubernetes-ingress@sha256:91a6648b78c65f3b6858441589daabd72146d9a53e896c0e6abf501e870f9d9b Port: Host Port: State: Running Started: Fri, 17 May 2024 11:00:46 +0200 Ready: True Restart Count: 0 Limits: cpu: 300m memory: 400Mi Requests: cpu: 5m memory: 250Mi Liveness: http-get http://:8123/health/alive delay=15s timeout=1s period=20s #success=1 #failure=3 Readiness: http-get http://:8123/health/ready delay=5s timeout=1s period=10s #success=1 #failure=3 Environment Variables from: application-gateway-kubernetes-cm-ingress-azure ConfigMap Optional: false Environment: AZURE_CLOUD_PROVIDER_LOCATION: /etc/appgw/azure.json AGIC_POD_NAME: application-gateway-kubernetes-ingress-azure-7587cb9c76-p5zxm (v1:metadata.name) AGIC_POD_NAMESPACE: waf (v1:metadata.namespace) AZURE_CLIENT_ID: 88fce944-e9be-44ca-89f1-2a0ed1dacb10 AZURE_TENANT_ID: 5cc6c66d-ffb2-469f-9385-cda840e57836 AZURE_FEDERATED_TOKEN_FILE: /var/run/secrets/azure/tokens/azure-identity-token AZURE_AUTHORITY_HOST: https://login.microsoftonline.com/ Mounts: /etc/appgw/ from azure (ro) /var/run/secrets/azure/tokens from azure-identity-token (ro) /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-9wbc4 (ro) Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True Volumes: azure: Type: HostPath (bare host directory volume) Path: /etc/kubernetes/ HostPathType: Directory kube-api-access-9wbc4: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3607 ConfigMapName: kube-root-ca.crt ConfigMapOptional: DownwardAPI: true azure-identity-token: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3600 QoS Class: Burstable Node-Selectors: agentpool=npappspot Tolerations: app=app:NoSchedule kubernetes.azure.com/scalesetpriority=spot:NoSchedule node.kubernetes.io/memory-pressure:NoSchedule op=Exists node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s