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

在DigitalOcean Kubernetes配置私有镜像仓库htpasswd认证报错排查

问题:添加htpasswd配置后Docker Registry Pod启动失败

我正在DigitalOcean Kubernetes上搭建基于DigitalOcean Spaces的私有容器镜像仓库,此前Pod运行正常,可正常推拉镜像,但在chart_values.yaml中添加htpasswd认证配置后,Pod启动失败,报错如下:

{"level":"fatal","msg":"configuring application: unable to configure authorization (htpasswd): no access controller registered with name: htpasswd","time":"2022-12-14T13:02:23.608Z"}

我的chart_values.yaml配置如下:

ingress:
  enabled: true
  hosts:
    - cr.somedomain.com
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
    nginx.ingress.kubernetes.io/proxy-body-size: "30720m"
  args:
    - --set controller.extraArgs.ingress-class=nginx
  tls:
    - secretName: somedomain-cr-prod
      hosts:
        - cr.somedomain.com

storage: s3

secrets:
  htpasswd: |-
    username:someBcryptPassword
  s3:
    accessKey: "someaccesskey"
    secretKey: "someaccesssecret"

s3:
  region: region
  regionEndpoint: region.digitaloceanspaces.com
  secure: true
  bucket: somebucketname

image:
  repository: somerepo
  tag: latest

我尝试过不同格式的htpasswd内容,但均出现相同错误,请问问题出在哪里?


问题原因与解决方案

这个错误的核心原因是:你使用的Docker Registry镜像没有加载htpasswd认证所需的访问控制器模块。官方默认的registry:2镜像并不自带htpasswd认证插件,需要额外配置或更换镜像。

解决步骤:

  1. 确认镜像支持htpasswd认证:
    如果你使用的是官方默认镜像,需要确保chart配置中启用了认证模块,或者换用包含认证插件的定制镜像。部分第三方Registry chart会提供预配置的镜像,可检查chart文档确认镜像要求。

  2. 显式启用htpasswd认证配置:
    在chart_values.yaml中添加auth配置块,显式开启htpasswd认证:

    auth:
      htpasswd:
        enabled: true
    

    大部分Registry Helm chart需要通过这个配置来触发加载htpasswd认证模块。

  3. 确保htpasswd内容格式正确:
    htpasswd字段必须是bcrypt加密的用户密码对,格式为username:$2y$xxxxx...(哈希值以$2y$开头)。可通过以下命令生成正确内容:

    htpasswd -Bc htpasswd.txt username
    

    执行后输入密码,将htpasswd.txt中的内容复制到secrets.htpasswd字段即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:40:27