向不作为 Deployment 运行的 NGINX Ingress Controller 提供标志

向不作为 Deployment 运行的 NGINX Ingress Controller 提供标志

总的来说,关于设置默认证书的问题可以在这里得到解答:Kubernetes ingress 如何设置default-ssl-certificate?

我不明白的是这部分:我应该将标志添加--default-ssl-certificate=kube-system/host-cert为 Ingress 的参数。要发现 NGINX Ingress Controller 的 YAML 配置文件设置,我应该使用以下命令检查它:kubectl describe deployment/nginx-ingress-controller --namespace。但它不会作为部署运行:

$ kubectl get deployments --all-namespaces
NAMESPACE     NAME                         READY   UP-TO-DATE   AVAILABLE   AGE
kube-system   kubernetes-dashboard         1/1     1            1           3d
kube-system   kubernetes-metrics-scraper   1/1     1            1           3d

它只能作为一个 pod 工作:

$ kubectl get pods --all-namespaces
NAMESPACE       NAME                                          READY   STATUS    RESTARTS       AGE
ingress-nginx   ingress-nginx-controller-8xcl9                1/1     Running   1 (2d ago)     3d
ingress-nginx   ingress-nginx-controller-hwhvk                1/1     Running   1 (2d ago)     3d
ingress-nginx   ingress-nginx-controller-xqdqx                1/1     Running   3 (2d ago)     3d
kube-system     kubernetes-dashboard-548847967d-66dwz         1/1     Running   2 (2d ago)     3d
kube-system     kubernetes-metrics-scraper-6d49f96c97-r6dz2   1/1     Running   1 (2d ago)     3d
[...]

那么我应该如何向控制器提供标志?

答案1

ingress-nginx可以作为部署或守护进程集安装。如果您没有看到部署,则它就是守护进程集。

您可以通过运行以下命令找到它:

kubectl get daemonset -A

并以与部署相同的方式编辑:

kubectl edit daemonset ingress-nginx-controller -n ingress-nginx

您可以找到详细信息关于 ingress-nginx 和 daemonset


注意!您所做的更改不会是永久性的(直到升级/重新应用清单)。根据最初的部署方式,有两种选择:

  • 显现

    您需要将其添加到清单中,以便任何其他更新/kubectl apply -f manifest.yaml将包含此标志,并且一切将继续工作

  • 使用

    您需要将此信息添加到helm_repo/templates/controller-daemonset.yaml

    args:
      - /nginx-ingress-controller
      ...
      - --default-ssl-certificate=kube-system/host-cert
      ...
    

相关内容