Kubernetes

向不作為部署執行的 NGINX 入口控制器提供標誌

  • November 10, 2021

一般來說,我關於設置預設證書的問題在這裡得到解答:Kubernetes ingress How to set default-ssl-certificate? .

我不明白的是這部分:我應該將標誌添加--default-ssl-certificate=kube-system/host-cert為 Ingress 的參數。為了發現 NGINX 入口控制器的 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
[...]

那我應該如何將標誌提供給控制器?

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

引用自:https://serverfault.com/questions/1083031