My Argo CD is running on AWS EKS and is exposed via a standard Kubernetes Ingress (traefik class), meaning it also interacts with AWS ELB. Additionally, the server.insecure parameter in the Argo CD server is set to “true” (configured in the argocd-cmd-params-cm ConfigMap in Kubernetes), with TLS termination happening on the ingress side.
There are no issues with the Argo CD UI. However, I am unable to access the Argo CD API using simple curl requests or the Argo CD CLI. I keep receiving errors related to content-type and TLS handshake failures:
argocd login argo.example.com --grpc-web --insecure --skip-test-tls
FATA[0036] rpc error: code = Unknown desc = Post "https://argocd.example.com/session.SessionService/Create": net/http: TLS handshake timeout
FATA[0045] rpc error: code = Unimplemented desc = unexpected HTTP status code received from server: 404 (Not Found); transport: received unexpected content-type "text/plain; charset=utf-8"
All requests are being sent from a WSL instance (Ubuntu 22.04). Note that I have no issues accessing the API when using port forwarding or when connecting from the management partition (local machine).
I was about to give up, but then I decided to check the MTU size.
Get-NetIPInterface -AddressFamily IPv4 | Sort-Object -Property NlMtu | Select ifIndex, InterfaceAlias, NlMtu -first 5
ifIndex InterfaceAlias NlMtu
------- -------------- -----
19 Ethernet 3 1392
20 Local Area Connection* 1 1500
8 Ethernet (WSL) 1500
Ethernet 3 is my VPN interface, and the API is only reachable through this interface.
Ethernet is the interface that WSL uses, so an MTU mismatch is occurring.
The solution is to adjust the MTU to match 1392 (the exact value may vary).
In your WSL instance, run the following:
ifconfig # to list interfaces. note your main interface (eth0 typically)
sudo ifconfig eth0 mtu 1392 # to change MTU size
I hope it helps!


