根据ingress nginx controller doc,它提醒该对象将使用ingress-nginx命名空间,并且可以使用--watch-namespace
标记更改为其他命名空间。
但是当我使用
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx0.28.0/deploy/static/provider/aws/service-l7.yaml --watch-namespace=default
报告
Error: unknown flag: --watch-namespace
See 'kubectl apply --help' for usage.
答案 0 :(得分:3)
您正在弄乱其他人的一面旗帜。默认情况下,以下命令将在ingress-nginx
命名空间中部署控制器。但是您希望它位于default
之类的其他命名空间中。为此,您需要传递kubectl
或-n
之类的--namespace
标记。
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx0.28.0/deploy/static/provider/aws/service-l7.yaml --namespace default
NB:
--watch-namespace
是nginx-ingress-controller
的标志。在容器内部运行二进制文件时使用。需要从deployment.spec.contianers[].args[]
进行设置。它用于将控制器的监视绑定在单个k8s命名空间中(默认情况下,它监视所有命名空间的对象)。
答案 1 :(得分:1)
您需要在nginx入口控制器部署yaml的args部分中设置--watch-namespace
args:
- /nginx-ingress-controller
- --configmap=$(POD_NAMESPACE)/$(NGINX_CONFIGMAP_NAME)
- --tcp-services-configmap=$(POD_NAMESPACE)/$(TCP_CONFIGMAP_NAME)
- --udp-services-configmap=$(POD_NAMESPACE)/$(UDP_CONFIGMAP_NAME)
- --publish-service=$(POD_NAMESPACE)/$(SERVICE_NAME)
- --annotations-prefix=nginx.ingress.kubernetes.io
- --watch-namespace=namespace
https://github.com/kubernetes/ingress-nginx/blob/master/deploy/cloud-generic/deployment.yaml