Как обновить контроллер nginx-ingress, чтобы использовались последние входные пути?

#kubernetes #kubernetes-ingress

#kubernetes #kubernetes-ingress

Вопрос:

После обновления входных путей с ‘/’ на ‘/ test’ новый путь не работает, и я все еще продолжаю перенаправляться на старый путь ‘/’. Есть идеи о том, как обновить контроллер nginx-ingress для обновленных входов?

Обновление: я получаю следующее в своих журналах ingress-controller

 kubectl logs --tail=10 nginx-ingress-controller-6b5498d8dc-vsdpl
E0923 17:03:11.440951       9 reflector.go:178] pkg/mod/k8s.io/client-go@v0.18.5/tools/cache/reflector.go:125: Failed to list *v1.Service: services is forbidden: User "system:serviceaccount:default:nginx-ingress" cannot list resource "services" in API group "" at the cluster scope
E0923 17:03:25.947663       9 reflector.go:178] pkg/mod/k8s.io/client-go@v0.18.5/tools/cache/reflector.go:125: Failed to list *v1.Endpoints: endpoints is forbidden: User "system:serviceaccount:default:nginx-ingress" cannot list resource "endpoints" in API group "" at the cluster scope
E0923 17:03:35.337064       9 reflector.go:178] pkg/mod/k8s.io/client-go@v0.18.5/tools/cache/reflector.go:125: Failed to list *v1beta1.Ingress: ingresses.networking.k8s.io is forbidden: User "system:serviceaccount:default:nginx-ingress" cannot list resource "ingresses" in API group "networking.k8s.io" at the cluster scope
E0923 17:03:39.800610       9 reflector.go:178] pkg/mod/k8s.io/client-go@v0.18.5/tools/cache/reflector.go:125: Failed to list *v1.Secret: secrets is forbidden: User "system:serviceaccount:default:nginx-ingress" cannot list resource "secrets" in API group "" at the cluster scope
E0923 17:03:45.983141       9 main.go:49] Error getting node 192.168.0.81: nodes "192.168.0.81" is forbidden: User "system:serviceaccount:default:nginx-ingress" cannot get resource "nodes" in API group "" at the cluster scope
E0923 17:03:57.179763       9 reflector.go:178] pkg/mod/k8s.io/client-go@v0.18.5/tools/cache/reflector.go:125: Failed to list *v1.ConfigMap: configmaps is forbidden: User "system:serviceaccount:default:nginx-ingress" cannot list resource "configmaps" in API group "" at the cluster scope
E0923 17:03:57.609798       9 reflector.go:178] pkg/mod/k8s.io/client-go@v0.18.5/tools/cache/reflector.go:125: Failed to list *v1.Endpoints: endpoints is forbidden: User "system:serviceaccount:default:nginx-ingress" cannot list resource "endpoints" in API group "" at the cluster scope
E0923 17:04:10.422852       9 reflector.go:178] pkg/mod/k8s.io/client-go@v0.18.5/tools/cache/reflector.go:125: Failed to list *v1.Service: services is forbidden: User "system:serviceaccount:default:nginx-ingress" cannot list resource "services" in API group "" at the cluster scope
E0923 17:04:20.552808       9 reflector.go:178] pkg/mod/k8s.io/client-go@v0.18.5/tools/cache/reflector.go:125: Failed to list *v1.Secret: secrets is forbidden: User "system:serviceaccount:default:nginx-ingress" cannot list resource "secrets" in API group "" at the cluster scope
E0923 17:04:24.767965       9 reflector.go:178] pkg/mod/k8s.io/client-go@v0.18.5/tools/cache/reflector.go:125: Failed to list *v1beta1.Ingress: ingresses.networking.k8s.io is forbidden: User "system:serviceaccount:default:nginx-ingress" cannot list resource "ingresses" in API group "networking.k8s.io" at the cluster scope
  

Комментарии:

1. Проверьте nginx.conf файл в модуле nginx ingress controller

2. @arghyasadhuth благодарю вас за ответ. В файле nginx.conf был старый путь ‘/’, поэтому я изменил его на ‘/ dev’, но все равно не работал. Может быть, мне нужно перезапустить контроллер nginx после обновления nginx.conf?

3. Вы обновили nginx.conf файл или входной ресурс? Вы обновили все реплики модуля nginx?

4. @ArghyaSadhu сначала я обновил свой вход новыми путями. Но я все еще перенаправлялся на старый путь. Итак, затем я проверил nginx.conf, и у него все еще были старые пути, поэтому я также обновил nginx.conf. Существует только одна копия модуля nginx

5. AFAIK nginx может обнаруживать обновления в nginx.conf без перезапуска. Вы проверяли журналы модуля контроллера входа nginx?

Ответ №1:

Похоже, что учетная запись службы, используемая контроллером входа nginx, не имеет разрешения. используйте следующее clusterrolebinding

 kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --serviceaccount=default:nginx-ingress
  

Просто обратите внимание, что это, по сути, дает привилегии администратора кластера для этой учетной записи службы и может быть сделано более детализированным.

Комментарии:

1. Да, теперь в журналах я видел, что он обновился. Но теперь /static работает, но /test выдает, что запрошенный ресурс не найден на этом сервере.

2. Я бы предложил задать новый вопрос для этого с помощью ingress yamls и журналов из модулей nginx ingress controller

3. Это сработало, когда контроллер входа перезагрузился после определения привязки кластерной роли. Большое спасибо!