如何构建旧版本的NGINX Ingress Controller并对其进行修补

在此HOWTO中,我们将修复nginx入口控制器v0.20.0的较早版本中的错误,并通过dep + vendor了解如何使用旧版本的Go依赖项


简单


原始文章经vitya.top网站征得作者的同意


问题


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