linode / linode/linode-cloud-controller-manager
CCM-linode shows error when installing Ingress Nginx
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 94
- Forks
- 75
- Avg merge
- 11h 19m
- Merged PRs (30d)
- 20
Description
## General:
* [ yes] Have you removed all sensitive information, including but not limited to access keys and passwords?
* [ yes] Have you checked to ensure there aren't other open or closed [Pull Requests](../../pulls) for the same bug/feature/question?
----
This is a follow up to this earlier ticket: https://github.com/linode/linode-cloud-controller-manager/issues/250
Even though the earlier ticket is resolved, the CCM is still not publishing an external IP that can be used by an Ingress Nginx Controller. Here's my question:
I am trying to get ingress-nginx-controller to work in an unmanaged kubernetes system. I followed these guides:
https://www.linode.com/docs/guides/deploy-kubernetes-cluster-using-kubeadm/
https://github.com/linode/linode-cloud-controller-manager?tab=readme-ov-file#to-deploy-ccm-linode-run-the-following-command
https://www.linode.com/docs/guides/deploy-nginx-ingress-on-lke/
But the end result is always this:
```
$ kubectl logs ccm-linode-9s4fz -n kube-system
E1205 04:09:27.805891 1 controller.go:298] error processing service default/ingress-nginx-controller (retrying with exponential backoff): failed to ensure load balancer: [400] [configs[0].nodes[0].address] Must be in address:port format; [configs[1].nodes[0].address] Must be in address:port format
I1205 04:09:27.806132 1 event.go:376] "Event occurred" object="default/ingress-nginx-controller" fieldPath="" kind="Service" apiVersion="v1" type="Warning" reason="SyncLoadBalancerFailed" message="Error syncing load balancer: failed to ensure load balancer: [400] [configs[0].nodes[0].address] Must be in address:port format; [configs[1].nodes[0].address] Must be in address:port format"
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-one ClusterIP 10.100.159.160 80/TCP 8m37s
hello-two ClusterIP 10.101.70.107 80/TCP 8m37s
ingress-nginx-controller LoadBalancer 10.106.208.134 80:32595/TCP,443:30397/TCP 10m
ingress-nginx-controller-admission ClusterIP 10.107.157.208 443/TCP 10m
kubernetes ClusterIP 10.96.0.1 443/TCP 16m
```
Notice the `ccm-linode-9s4fz` gives an error. And my `ingress-nginx-controller` EXTERNAL-IP is always stuck in ``.
I made an 8 minute video showing and explaining step by step what I was doing:
https://www.youtube.com/watch?v=D-dTveBpDuY
To summarize what I did in the video, i performed these steps: (all *.sh files are attached here as *.txt files, so you can rename the extensions)
1. Create 2 new linodes with Ubuntu 22.04 (i also tried Ubuntu 24.04 and it gave the same issue). I called them `kube1` and `kube2`.
2. I ran the file `./install-k8-and-start.sh` on kube1 (for this *.sh, replace the IPs on line 6 with your machine IPs)
3. I ran the file `./install-k8.sh` on kube2 (for this *.sh, replace the IPs on line 6 with your machine IPs).
4. Make kube2 join kube1.
5. I set the `--cloud-provider=external` and did a `systemctl restart kubelet` on both kube1 and kube2.
6. I ran `./install-helm-and-ccm.sh` on kube1. (make sure to replace the api token and region with yours)
7. I ran `helm install ingress-nginx ingress-nginx/ingress-nginx;` on kube1.
Then I get the issues above where the `ccm-linode-9s4fz` pod gives an error, and the `ingress-nginx-controller` never gets an IP address.
EXPECTED BEHAVIOUR
the ingress-nginx-controller should get an external ip
[install-helm-and-ccm.txt](https://github.com/user-attachments/files/18025968/install-helm-and-ccm.txt)
[install-k8.txt](https://github.com/user-attachments/files/18025969/install-k8.txt)
[install-k8-and-start.txt](https://github.com/user-attachments/files/18025970/install-k8-and-start.txt)
### Environment Specifications
Ubuntu 22.04 and Ubuntu 24.04
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the ccm-linode logs, especially controller.go:298, and review the attached install-helm-and-ccm.txt, install-k8.txt, and install-k8-and-start.txt scripts. Reproduce the ingress-nginx LoadBalancer setup described in the issue and trace how node addresses are passed to the load balancer. Done means the controller no longer reports the address:port validation error and ingress-nginx-controller receives an external IP.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, helm, kubernetes, nginx
- Domain
- cloud, infrastructure, networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100