如何更新AKS中Helm部署的Nginx Ingress Controller以配置TLS
AKS Nginx Ingress Controller TLS 配置更新方案
前置检查
- 确认AKS集群已正确部署 Secrets Store CSI Driver 及 Azure Key Vault Provider,执行命令
kubectl get pods -n kube-system | grep csi验证相关Pod处于Running状态 - 确认你提到的
azure-tlsSecretProviderClass资源已在Ingress Controller所在命名空间创建,且配置了正确的证书拉取权限
操作步骤
- 首先查询现有Ingress Controller的Helm发布信息,执行命令获取发布名和命名空间:
helm list -A | grep ingress-nginx
- 导出当前部署的Helm配置到本地文件,避免配置丢失:
helm get values <你的ingress-nginx发布名> -n <ingress所在命名空间> > ingress-nginx-values.yaml
- 编辑导出的
ingress-nginx-values.yaml文件,添加你提供的挂载配置,同时补充证书读取参数:
controller: extraArgs: # 配置默认TLS证书读取路径,对应你挂载的秘钥路径 default-ssl-certificate-path: /mnt/secrets-store/tls.crt default-ssl-private-key-path: /mnt/secrets-store/tls.key extraVolumes: - name: secrets-store-inline csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: "azure-tls" extraVolumeMounts: - name: secrets-store-inline mountPath: "/mnt/secrets-store" readOnly: true
注意:如果你的证书文件名不是默认的
tls.crt和tls.key,需要将路径替换为你实际的文件名
- 执行Helm升级命令更新配置:
helm upgrade <你的ingress-nginx发布名> ingress-nginx/ingress-nginx -n <ingress所在命名空间> -f ingress-nginx-values.yaml
生产环境建议额外添加
--atomic参数,升级失败时自动回滚
验证配置
- 升级完成后执行
kubectl get pods -n <ingress所在命名空间>确认Ingress Controller Pod正常运行 - 进入Pod内部检查证书是否挂载成功:
kubectl exec -it <ingress-controller-pod名> -n <ingress所在命名空间> -- ls /mnt/secrets-store,确认证书文件存在 - 配置测试Ingress规则,验证HTTPS访问是否正常
可选配置(按需开启)
如果需要将CSI挂载的证书同步为Kubernetes原生Secret,方便普通Ingress资源直接通过spec.tls.secretName引用,可以修改你的azure-tls SecretProviderClass配置,添加以下内容:
secretObjects: - secretName: nginx-ingress-tls type: kubernetes.io/tls data: - objectName: <你在AKV中的证书名> key: tls.crt - objectName: <你在AKV中的证书名> key: tls.key
内容的提问来源于stack exchange,提问作者Sourav Karmakar
相关产品推荐
相关产品推荐

