-
The apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: linkerd-web-ingress
namespace: linkerd
annotations:
# with or without this custom-request-headers also not working
ingress.kubernetes.io/custom-request-headers: "l5d-dst-override: linkerd-web.linkerd.svc.cluster.local:8084"
kubernetes.io/ingress.global-static-ip-name: linkerd-ip
networking.gke.io/managed-certificates: linkerd-certificate
spec:
backend:
serviceName: linkerd-web
servicePort: 8084
rules:
- host: linkerd.example.com
http:
paths:
- path: /
backend:
serviceName: linkerd-web
servicePort: 8084 Error jsonPayload: {
statusDetails: "failed_to_pick_backend"
@type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
} Edited |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 30 replies
-
It looks right to me... there might be a mismatch with the TTL? I'd verify that the |
Beta Was this translation helpful? Give feedback.
-
@WLun001 , I am in the same situation. Looks like the GKE ingress requires an Not sure how to solve that one. |
Beta Was this translation helpful? Give feedback.
-
After many machinations I was able to get this working using GCE. This requires multiple patches to the linkerd configuration. The issue is that GCE Ingress uses a default health check route which doesn't work with linkerd-web. The linkerd-web health check is at port GCE allows you to create a custom health check config. Now reading the GCE docs you may get confused like me and think you needed to add this BackendConfig to the Ingress yaml. (I'm using IAP for authentication to the ingress and that's how you configured it). However that's incorrect. You need to add the custom BackendConfig for the health check to the Service. Once I figured that out I was able to get the linkerd-web service to return healthy! However that wasn't enough despite having: Please note there appears to some issues sometimes syncing changes depending on the order in which you apply changes (or it's possible I just wasn't patient enough for the changes to be scheduled and applied). I had to force update resources a couple of times before I finally got things working. Make sure and look at your events to ensure the changes actually got applied. Because I did so many iterations of this I'm unsure of the exact order to apply these. My guess based on GCP docs is that you should apply BackendConfigs first, then patches, and finally the ingress. Below are my patch files and configs. I've omitted the certificate setup and IAP setup since those are well documented in the GCP docs: Custom Health Check Config linkerd-web-service-bec.yaml
Here is the patch file for the linkerd-web Service linkerd-web-service-patch.yaml
Patch Command (notice merge)
Patch file for linkerd-web Deployment linkerd-web-deployment-patch.json
Patch Command (notice json)
Ingress Config (the backend config here is for IAP)
|
Beta Was this translation helpful? Give feedback.
After many machinations I was able to get this working using GCE. This requires multiple patches to the linkerd configuration. The issue is that GCE Ingress uses a default health check route which doesn't work with linkerd-web. The linkerd-web health check is at port
9994
, path/ping
.GCE allows you to create a custom health check config. Now reading the GCE docs you may get confused like me and think you needed to add this BackendConfig to the Ingress yaml. (I'm using IAP for authentication to the ingress and that's how you configured it). However that's incorrect. You need to add the custom BackendConfig for the health check to the Service.
Once I figured that out I was able to get the …