0

目前,要使用 Let's encrypt 生成证书,必须添加这些注释

kubernetes.io/ingress.class=nginx
certmanager.k8s.io/cluster-issuer=letsencrypt-prod ### your cluster issuer name
kubernetes.io/tls-acme="true"

不幸的是,对于更大的 HA 系统,在创建新入口时手动添加有点痛苦。

这可以通过将注释应用于所有入口的单个命令来完成,这也需要在工作之后。

4

2 回答 2

2

您可以使用以下脚本对所有命名空间中的所有入口进行大规模更新。

for namespace in `kubectl get ns -o name | awk -F '/' '{print $2}'`
do
  for ingress in 'kubectl get ingress -o name | awk -F '/' '{print $2}'`
  do
    echo "Working on $ingress in $namespace"
    kubectl -n $namespace annotate ingress $ingress kubernetes.io/ingress.class=nginx
    kubectl -n $namespace annotate ingress $ingress certmanager.k8s.io/cluster-issuer=letsencrypt-prod
    kubectl -n $namespace annotate ingress $ingress kubernetes.io/tls-acme="true"
  done
done
于 2020-08-09T07:21:25.607 回答
1

你可能想做

kubectl annotate ingress kubernetes.io/ingress.class=nginx --all

这样您就不需要知道入口服务的名称,因为它适用于所有服务。

于 2021-02-04T21:41:47.217 回答