
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Harbor 是一个开源的可信云原生 registry,用于存储、签名和扫描内容。它在开源 Docker distribution 的基础上,添加了安全、身份认证和管理等功能,适用于企业级容器镜像的全生命周期管理。
Harbor 官方概述
Bitnami Harbor Helm Chart 基于 https://github.com/goharbor/harbor-helm 开发,具备以下特性:
Harbor 适用于需要安全管理容器镜像的云原生环境,主要使用场景包括:
部署 Harbor 需满足以下环境要求:
快速安装
使用默认配置安装 chart,发布名称为 my-release:
consolehelm install my-release oci://registry-1.docker.io/bitnamicharts/harbor
自定义安装
指定自定义 registry 和仓库路径:
consolehelm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/harbor
注意:需将
REGISTRY_NAME和REPOSITORY_NAME替换为实际的 Helm chart 仓库地址。例如,Bitnami 官方仓库需使用REGISTRY_NAME=registry-1.docker.io和REPOSITORY_NAME=bitnamicharts。
Bitnami charts 允许为所有容器设置资源请求(requests)和限制(limits),配置位于 resources 参数下。生产环境中必须设置资源请求,并根据实际负载调整。
chart 提供 resourcesPreset 参数,可通过预设自动配置 resources 部分(详见 https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15%EF%BC%89%E3%80%82%E4%BD%86%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%8D%E5%BB%BA%E8%AE%AE%E4%BE%9D%E8%B5%96%E9%A2%84%E8%AE%BE%EF%BC%8C%E9%9C%80%E6%A0%B9%E6%8D%AE%E5%85%B7%E4%BD%93%E9%9C%80%E6%B1%82%E6%89%8B%E5%8A%A8%E9%85%8D%E7%BD%AE%E3%80%82
生产环境强烈建议使用不可变标签(immutable tags),避免因标签更新导致部署意外变更。Bitnami 会在主容器更新、重大变更或发现严重漏洞时,发布新的 chart 版本。
通过设置 metrics.enabled=true 可启用 Prometheus 监控集成,将 Harbor 原生 Prometheus 端口暴露在容器和服务中,并添加自动发现注解。
前置条件
需已安装 Prometheus 或 Prometheus Operator。推荐使用 https://github.com/bitnami/charts/tree/main/bitnami/prometheus 或 https://github.com/bitnami/charts/tree/main/bitnami/kube-prometheus%E3%80%82
Prometheus Operator 集成
设置 metrics.serviceMonitor.enabled=true 可部署 ServiceMonitor 对象,实现与 Prometheus Operator 的集成。需确保集群已安装 Prometheus Operator CRDs,否则会报错:
textno matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1"
Harbor 核心服务支持两种暴露方式:
Ingress 控制器(推荐生产环境)
设置 exposureType=ingress,需满足:
NGINX Proxy(简单测试环境)
设置 exposureType=proxy,支持三种服务类型:
外部 URL 用于在 Harbor 门户中生成 docker/helm 命令示例,格式为 protocol://domain[:port]。配置规则:
domain 为 ingress.core.hostname 的值domain 为 service.clusterIP 的值domain 为 Kubernetes 节点 IPdomain 为自定义域名,需配置 CNAME 指向云厂商提供的负载均衡器地址通过设置 migration.enabled=true 启用数据库 schema 迁移 Job。该 Job 依赖 Helm hooks,升级操作会等待迁移完成后继续。
设置 internalTLS.enabled=true 可启用 core、jobservice、portal、registry 和 trivy 组件间的 TLS 通信。支持两种配置方式:
*.tls.existingSecret(各组件配置项下)指定现有证书密钥可通过 internalTLS.caBundleSecret 注入自定义 CA 证书(密钥需包含 ca.crt 文件)。
支持三种持久化方式:
storageClass 指定存储类,也可通过 existingClaim 使用现有 PVazure、gcs、s3、swift 和 osscore.secret、jobservice.secret 和 registry.secret 配置,需提供密钥内容(非密钥名称)core.secretName 指定现有密钥为避免 Helm 升级时密钥变更,需提前配置并固定密钥值(详见 https://github.com/goharbor/harbor-helm/issues/107%EF%BC%89%E3%80%82%E6%94%AF%E6%8C%81%E9%80%9A%E8%BF%87 existingSecret 和 existingEnvVarsSecret 完全自定义密钥对象。
注意:
HARBOR_ADMIN_PASSWORD仅用于初始化,后续通过门户修改密码后,密钥中的值不会同步更新。
可通过各组件的 sidecars 参数添加 Sidecar 容器:
yamlcore: sidecars: - name: metrics-exporter image: docker.xuanyuan.run/your-exporter-image:latest imagePullPolicy: Always ports: - name: metrics containerPort: 9100
通过 initContainers 参数添加 Init 容器:
yamlcore: initContainers: - name: init-config image: docker.xuanyuan.run/busybox:latest command: ["sh", "-c", "echo 'init config' > /config/init.txt"] volumeMounts: - name: config mountPath: /config
通过各组件的 extraEnvVars 添加环境变量:
yamlcore: extraEnvVars: - name: LOG_LEVEL value: "error"
也可通过 extraEnvVarsCM 或 extraEnvVarsSecret 引用 ConfigMap 或 Secret 中的环境变量。
| 参数名 | 描述 | 默认值 |
|---|---|---|
global.imageRegistry | 全局 Docker 镜像仓库地址 | "" |
global.imagePullSecrets | 全局镜像拉取密钥数组 | [] |
global.defaultStorageClass | 全局默认存储类 | "" |
global.security.allowInsecureImages | 是否允许跳过镜像验证 | false |
global.compatibility.openshift.adaptSecurityContext | 调整安全上下文以兼容 OpenShift restricted-v2 SCC(可选值:auto/force/disabled) | auto |
| 参数名 | 描述 | 默认值 |
|---|---|---|
nameOverride | 部分覆盖资源名称(保留 release 名称) | "" |
fullnameOverride | 完全覆盖资源名称 | "" |
apiVersions | 覆盖 .Capabilities 报告的 Kubernetes API 版本 | [] |
kubeVersion | 覆盖 .Capabilities 报告的 Kubernetes 版本 | "" |
clusterDomain | Kubernetes 集群域名 | cluster.local |
commonAnnotations | 所有资源的通用注解 | {} |
commonLabels | 所有资源的通用标签 | {} |
extraDeploy | 额外部署的资源清单(模板化) | [] |
diagnosticMode.enabled | 启用诊断模式(禁用所有探针并覆盖命令) | false |
diagnosticMode.command | 诊断模式下覆盖所有容器的命令 | ["sleep"] |
diagnosticMode.args | 诊断模式下覆盖所有容器的参数 | ["infinity"] |
| 参数名 | 描述 | 默认值 |
|---|---|---|
adminPassword | Harbor 管理员初始密码(建议通过门户修改) | "" |
existingSecret | 存储管理员密码的现有 Secret 名称 | "" |
existingSecretAdminPasswordKey | 现有 Secret 中管理员密码的密钥名(默认 HARBOR_ADMIN_PASSWORD) | "" |
externalURL | Harbor 核心服务的外部 URL | https://core.harbor.domain |
proxy.httpProxy | HTTP 代理服务器 URL | "" |
proxy.httpsProxy | HTTPS 代理服务器 URL | "" |
proxy.noProxy | 不使用代理的地址列表 | 127.0.0.1,localhost,.local,.internal |
proxy.components | 应用代理配置的组件列表 | ["core","jobservice","trivy"] |
logLevel | Harbor 服务日志级别(可选值:fatal/error/warn/info/debug/trace) | debug |
internalTLS.enabled | 为核心组件启用内部 TLS 通信 | false |
internalTLS.caBundleSecret | 包含自定义 CA 的 Secret 名称(注入信任链) | "" |
ipFamily.ipv6.enabled | 为 NGINX 组件启用 IPv6 监听 | true |
ipFamily.ipv4.enabled | 为 NGINX 组件启用 IPv4 监听 | true |
cache.enabled | 启用 Redis 清单缓存(提升并发拉取性能) | false |
cache.expireHours | 缓存过期时间(小时) | 24 |
database.maxIdleConns | 每个组件的数据库空闲连接池上限 | 100 |
database.maxOpenConns | 每个组件的数据库最大打开连接数 | 900 |
| 参数名 | 描述 | 默认值 |
|---|---|---|
exposureType | 流量暴露方式(可选值:ingress/proxy/none) | proxy |
service.type | NGINX Proxy 服务类型 | LoadBalancer |
service.ports.http | NGINX Proxy HTTP 端口 | 80 |
service.ports.https | NGINX Proxy HTTPS 端口 | 443 |
service.nodePorts.http | NodePort 模式下的 HTTP 端口 | "" |
service.nodePorts.https | NodePort 模式下的 HTTPS 端口 | "" |
自 2025 年 8 月 28 日起,Bitnami 将升级其公共镜像仓库,推出 https://news.broadcom.com/app-dev/broadcom-introduces-bitnami-secure-images-for-production-ready-containerized-applications%EF%BC%8C%E4%B8%BB%E8%A6%81%E5%8F%98%E6%9B%B4%E5%A6%82%E4%B8%8B%EF%BC%9A
latest 标签,用于开发环境)这些变更旨在提升软件供应链安全性,推广最佳实践。详情参见 https://github.com/bitnami/containers/issues/83267%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务