从Web URL资源限制名称空间

时间:2020-01-31 15:20:57

标签: kubernetes

根据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.

2 个答案:

答案 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-namespacenginx-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