Bitnami提供的Helm chart,用于简化企业级Docker镜像仓库Harbor在Kubernetes环境中的部署和管理。
收藏数: 8
下载次数: 4717041
类型:
bitnamicharts/harborHarbor 是一个开源的可信云原生 registry,用于存储、签名和扫描内容。它在开源 Docker distribution 的基础上,添加了安全、身份认证和管理等功能,适用于企业级容器镜像的全生命周期管理。
Harbor 官方概述
Bitnami Harbor Helm Chart 基于 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 部分(详见 bitnami/common chart)。但生产环境不建议依赖预设,需根据具体需求手动配置。
生产环境强烈建议使用不可变标签(immutable tags),避免因标签更新导致部署意外变更。Bitnami 会在主容器更新、重大变更或发现严重漏洞时,发布新的 chart 版本。
通过设置 metrics.enabled=true 可启用 Prometheus 监控集成,将 Harbor 原生 Prometheus 端口暴露在容器和服务中,并添加自动发现注解。
需已安装 Prometheus 或 Prometheus Operator。推荐使用 Bitnami Prometheus Helm chart 或 Bitnami Kube Prometheus Helm chart。
设置 metrics.serviceMonitor.enabled=true 可部署 ServiceMonitor 对象,实现与 Prometheus Operator 的集成。需确保集群已安装 Prometheus Operator CRDs,否则会报错:
textno matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1"
Harbor 核心服务支持两种暴露方式:
设置 exposureType=ingress,需满足:
设置 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 升级时密钥变更,需提前配置并固定密钥值(详见 Issue #107)。支持通过 existingSecret 和 existingEnvVarsSecret 完全自定义密钥对象。
注意:
HARBOR_ADMIN_PASSWORD仅用于初始化,后续通过门户修改密码后,密钥中的值不会同步更新。
可通过各组件的 sidecars 参数添加 Sidecar 容器:
yamlcore: sidecars: - name: metrics-exporter image: your-exporter-image:latest imagePullPolicy: Always ports: - name: metrics containerPort: 9100
通过 initContainers 参数添加 Init 容器:
yamlcore: initContainers: - name: init-config image: 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 | [***] |
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 服务类型 | Load*** |
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 将升级其公共镜像仓库,推出 Bitnami Secure Images 计划,主要变更如下:
latest 标签,用于开发环境)这些变更旨在提升软件供应链安全性,推广最佳实践。详情参见 Bitnami Secure Images 公告。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。



manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务