Kubernetes ingress 如何设置default-ssl-certificate?

Jan*_*nka 10 kubernetes-helm kubernetes-ingress

我有一个通用 SSL 证书 *.domain.com 我想为 4 级域 (my4.level.domain.com) 配置 HTTPS 我在本讨论中读到,我需要使用 --default-ssl-certificate

但我不明白如何使用它

我应该如何更改此配置?

ingress:
  enabled: true
  annotations: {}
  labels: {}
  path: /
  hosts:
    - my4.level.domain.com
  extraPaths: []
  tls:
   - secretName: tls-tierra-ingress
     hosts:
       - '*.level.domain.com'
       - level.domain.com
       - my4.level.domain.com
Run Code Online (Sandbox Code Playgroud)

或者我必须运行特殊命令?

Cha*_*e C 11

对于将来研究这个问题的人:

总长DR

如果您要使用 helm 安装 ingress-nginx,则需要default-ssl-certificate使用values.yaml 中找到的controller.extraArgs进行指定

  --set controller.extraArgs.default-ssl-certificate="__NAMESPACE__/_SECRET__" \
Run Code Online (Sandbox Code Playgroud)

非 TLDR

我的设置

helm install ingress-nginx ingress-nginx/ingress-nginx \
  --version 4.2.5 \
  --create-namespace \
  --namespace ingress-nginx \
  --set controller.admissionWebhooks.patch.image.registry=k8s.gcr.io \
  --set controller.admissionWebhooks.patch.image.image=ingress-nginx/kube-webhook-certgen \
  --set controller.admissionWebhooks.patch.image.tag=v1.1.1 \
  --set controller.admissionWebhooks.patch.image.digest="" \
  --set controller.admissionWebhooks.patch.nodeSelector."kubernetes\.io/os"=linux \
  --set controller.extraArgs.default-ssl-certificate="origin-ca-issuer/wildcard-domain-name-secret" \
  --set controller.image.registry=k8s.gcr.io \
  --set controller.image.image=ingress-nginx/controller \
  --set controller.image.tag=v1.3.1 \
  --set controller.image.digest="" \
  --set controller.kind=DaemonSet \
  --set controller.nodeSelector."kubernetes\.io/os"=linux \
  --set controller.service.annotations."service\.beta\.kubernetes\.io/aws-load-balancer-healthcheck-path"=/ \
  --set controller.service.externalTrafficPolicy=Local
Run Code Online (Sandbox Code Playgroud)

这种设置的好处是它允许我避免tls在每个入口清单中写入块。


Cro*_*rou 5

--default-ssl-certificate是内部使用的参数Ingress controller以下是 Ingress Controller 接受的所有命令行参数的列表。

要查看使用了哪些参数,您可以执行以下操作kubectl describe deployment/nginx-ingress-controller --namespace

您可能会看到:

Args:
  --default-backend-service=$(POD_NAMESPACE)/default-http-backend
  --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
  --annotations-prefix=nginx.ingress.kubernetes.io
Run Code Online (Sandbox Code Playgroud)

您可以编辑控制器yaml并放置您的设置所需的内容,如果您没有该文件,则可以ingress-controller.yaml使用以下命令将部署的入口保存为: kubectl get deployment/nginx-ingress-controller --namespace -o yaml > ingress-controller.yaml

您还可以ingress使用以下命令即时编辑: kubectl edit deployment/nginx-ingress-controller --namespace

至于4级域名SSL证书,我还没有尝试过,遗憾的是我无能为力。

  • @dvdblk在[kubernetes/nginx-ingress Helm图表](https://github.com/kubernetes/ingress-nginx/tree/master/charts/ingress-nginx)中,可以使用`controller.extraArgs传递控制器参数` 值。 (9认同)