kubernetes / ingress-nginx

Ingress NGINX Controller for Kubernetes
https://kubernetes.github.io/ingress-nginx/
Apache License 2.0
17.48k stars 8.25k forks source link

How ingress-nginx image was built? #10946

Closed guyni closed 9 months ago

guyni commented 9 months ago

I don't see the /etc/ingress-controller/geoip and /etc/ingress-controller/telemetry folder in the registry.k8s.io/ingress-nginx/controller:v1.9.6 image. I am wondering if you use the Dockerfile below to build that image.

https://github.com/kubernetes/ingress-nginx/blob/controller-v1.9.6/rootfs/Dockerfile#L54-L55

$ docker run --entrypoint sh --rm -it registry.k8s.io/ingress-nginx/controller:v1.9.6 /etc/nginx $ ls -l /etc/ingress-controller/ total 8 drwxr-xr-x 2 www-data www-data 4096 Jan 19 20:21 auth drwxr-xr-x 2 www-data www-data 4096 Jan 19 20:21 ssl

k8s-ci-robot commented 9 months ago

This issue is currently awaiting triage.

If Ingress contributors determines this is a relevant issue, they will accept it by applying the triage/accepted label and provide further guidance.

The triage/accepted label can be added by org members by writing /triage accepted in a comment.

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md). If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository.
longwuyuan commented 9 months ago

I think there was a PR to move from geoip to geoip2. If you search the PRs then you may find it. That could contain some info on this.

Otel is now a addon module.

guyni commented 9 months ago

regardless if geoip and otel were moved or not. If I check out the controller-v1.9.6 tag to build the image by myself, I can see the /etc/ingress-controller/geoip and /etc/ingress-controller/telemetry folders, which are not in registry.k8s.io/ingress-nginx/controller:v1.9.6. If I replaced the ingress controller binary in registry.k8s.io/ingress-nginx/controller:v1.9.6 with the one that I built, it would complain those folders were missing and exit. So I am wondering if registry.k8s.io/ingress-nginx/controller:v1.9.6 was built from controller-v1.9.6 tag, or other release tag.

longwuyuan commented 9 months ago

1.9. is built from v1.9.6 branch and not main

longwuyuan commented 9 months ago
% k cluster-info                                         
Kubernetes control plane is running at https://127.0.0.1:41021
CoreDNS is running at https://127.0.0.1:41021/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
[~/Documents/github/longwuyuan/ingress-nginx] release-1.9
% k -n ingress-nginx exec -ti ingress-nginx-controller-5bc879d9f8-4bsjz -- sh
/etc/nginx $ ls -l /etc/ingress-controller/
total 8                                                  
drwxr-xr-x    2 www-data www-data      4096 Feb  1 03:07 auth
drwxr-xr-x    1 www-data www-data      4096 Feb  1 03:33 ssl
/etc/nginx $ find / -name "*geoip*"
/usr/bin/geoiplookup
/usr/bin/geoiplookup6
strongjz commented 9 months ago

main is to allow us to merge changes but not break release branches; we cherry-pick what we want in a release to the release branch.

The nginx base image is built here https://github.com/kubernetes/ingress-nginx/tree/main/images/nginx

And the controller is build https://github.com/kubernetes/ingress-nginx/tree/main/rootfs

Each image is built in cloud build with the make build commands and promoted to the k8s.io registry