You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SecretProviderClass配置Ingress基础认证遇503错误求助

问题分析与解决方案

核心错误

你当前的配置逻辑完全错误:nginx.ingress.kubernetes.io/auth-secret 注解要求填写的是Kubernetes Secret的资源名称,而非Deployment中的环境变量名。Ingress控制器会直接去集群中查找对应名称的Secret,你填BASIC_AUTH_VALUE后,控制器找不到这个名称的Secret,因此返回503错误。

正确配置步骤

  1. 确认认证内容格式
    确保你通过SecretProviderClass挂载的Secret({{ include "ui.fullname" . }}-azure-csi)中,FRONTEND_BASIC_AUTH字段的值是base64编码的htpasswd格式内容(这是Ingress-Nginx Basic Auth的要求)。

  2. 创建符合要求的Secret
    Ingress-Nginx要求用于Basic Auth的Secret必须包含auth字段,因此你需要基于现有Secret的内容创建一个新的合规Secret:

    • 命令行方式:
      kubectl create secret generic basic-auth \
        --from-literal=auth=$(kubectl get secret {{ include "ui.fullname" . }}-azure-csi -o jsonpath='{.data.FRONTEND_BASIC_AUTH}' | base64 -d)
      
    • Helm模板方式(在templates目录下新增basic-auth-secret.yaml):
      apiVersion: v1
      kind: Secret
      metadata:
        name: basic-auth
        labels:
          {{- include "ui.labels" . | nindent 4 }}
      type: Opaque
      data:
        auth: {{ (lookup "v1" "Secret" .Release.Namespace (include "ui.fullname" .) "-azure-csi").data.FRONTEND_BASIC_AUTH }}
      
  3. 修正Ingress注解
    更新Ingress的注解,指定正确的Secret名称,并补充认证类型注解:

    annotations:
      nginx.ingress.kubernetes.io/auth-type: basic
      nginx.ingress.kubernetes.io/auth-secret: basic-auth
      nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - Please login'
    
  4. 验证与排查

    • 检查新Secret是否存在且包含auth字段:
      kubectl get secret basic-auth -o yaml
      
    • 查看Ingress控制器Pod的日志(而非你的应用Pod日志),确认是否有Secret相关的报错:
      kubectl logs -n ingress-nginx deployment/ingress-nginx-controller
      

内容的提问来源于stack exchange,提问作者Trupti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 02:10:15