How to build an old version of NGINX Ingress Controller and patch it

In this HOWTO, we will fix the bug in the ancient version of nginx ingress controller v0.20.0 and learn how to work with Go dependencies of older versions through dep + vendor .


simple


The original article was taken with the consent of the author from the site vitya.top .


Problem


ingress-nginx v0.20.0 rewrite. (v0.32.0), :


path: /service/api/v1/tokens
rewrite-target: /api/v1/tokens

/ YAML- Ingress, ingress-nginx 0.20.0 rewrite /api/v1/tokens//. , - , - .


NGINX Ingress, . :


  • ( ).
  • Ingress Controller, .

, .



location.Rewrite.Target strings.TrimSuffix(location.Rewrite.Target, "/").


:


go get k8s.io/ingress-nginx
cd ~/go/src/k8.io/ingress-inginx

, :


git checkout v0.20.0

Makefile. 40 :


vim Makefile

( sed -i -e 's/^ALL_ARCH.*/ALL_ARCH = amd64/g')


:


vim internal/ingress/controller/template/template.go +539

( — . "")


Docker- Go:


vim build/go-in-docker.sh

:


  • E2E_IMAGE docker.myregistry.com/ops/golang:1.10.7-alpine3.8-v7;
  • --entrypoint ${FLAGS}.

:


git add -A
git commit -m "Fix trailing slash bug"

:


dep ensure =v  #  ,      internal 

( 5):


make

tagged quay.io/kubernetes-ingress-controller/nginx-ingress-controller-amd64:0.20.0

:


docker tag quay.io/kubernetes-ingress-controller/nginx-ingress-controller-amd64:0.20.0 docker.myregistry.com/ops/nginx-ingress-controller:0.20.0-patched-2

docker push docker.myregistry.com/ops/nginx-ingress-controller:0.20.0-patched-2

!


, Kubernetes-.


All Articles