DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»

Cover image for Ingress with KinD not on 80 port
Antoine
Antoine

Posted on

Ingress with KinD not on 80 port

Photo by Taylor Vick on Unsplash

I use Kind on a Windows laptop with WSL2.

It's a wonderful tool, that i use along with Tilt.

I tried to use ingress as described on the site but it was failing.

WSL2 and nodePort

I discovered first, that i had to use a custom configuration for KinD.

But even with this one, it was failing.

The connection keeps getting refused.

I tried using Lens, to see if i can access to the service. And i did, briefly.

After diving into different issues or this one, i decide to change default port for serving ingress.

Change Port

As i a m using a corporate laptop, my 80 port cannot be used for dev purpose as a proxy is already using it.
So i had to change it. Let's pick port 5080.

I change my configuration for cluster :

cat <<EOF | kind create cluster --name "${KIND_CLUSTER_NAME}" --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
  extraPortMappings:
  - containerPort: 5080
    hostPort: 5080
    protocol: TCP
  - containerPort: 443
    hostPort: 443
    protocol: TCP
  kubeadmConfigPatches:
  - |
    kind: JoinConfiguration
    nodeRegistration:
      kubeletExtraArgs:
        node-labels: "ingress-ready=true"
EOF

Enter fullscreen mode Exit fullscreen mode

And i change the yaml Ambassador operator used for KinD by the following :

---
apiVersion: getambassador.io/v2
kind: AmbassadorInstallation
metadata:
  name: ambassador
spec:
  installOSS: true
  helmValues:
    deploymentTool: amb-oper-kind
    tolerations:
      - key: "node-role.kubernetes.io/master"
        operator: Equal
        effect: NoSchedule
    replicaCount: 1
    deploymentStrategy:
      type: Recreate
    nodeSelector:
      ingress-ready: "true"
    service:
      type: NodePort
      ports:
        - name: http
          port: 80
          hostPort: 5080
          targetPort: 8080
          protocol: TCP
        - name: https
          port: 443
          hostPort: 443
          targetPort: 8443
          protocol: TCP
Enter fullscreen mode Exit fullscreen mode

And then, by applying the example Ingress on the Kind site, i can finally do

curl localhost:5080/foo
Enter fullscreen mode Exit fullscreen mode

Hope this helps !

Top comments (0)

🌚 Life is too short to browse without dark mode