本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
NATS 是一个开源、轻量级且高性能的消息系统,适用于分布式系统,支持现代云架构及发布-订阅(pub-sub)、请求-回复(request-reply)和队列模型。Bitnami NATS Helm Chart 用于在 Kubernetes 集群上通过 Helm 包管理器快速部署和配置 NATS 服务。
NATS 官方概述
商标声明:本软件包由 Bitnami 打包。所提及的相关商标归各自公司所有,使用这些商标并不意味着任何关联或背书。
helm install my-release oci://registry-1.docker.io/bitnamicharts/nats
生产环境建议:如需在生产环境使用,可尝试 VMware Tanzu Application Catalog(Bitnami 商业版目录)。
helm repo add bitnami [***] helm repo update
使用自定义发布名称(如 my-nats)安装:
helm install my-nats oci://registry-1.docker.io/bitnamicharts/nats
注意:如需指定镜像仓库和路径,需替换
REGISTRY_NAME和REPOSITORY_NAME。例如,Bitnami 官方仓库使用REGISTRY_NAME=registry-1.docker.io和REPOSITORY_NAME=bitnamicharts。
检查 Pod 状态:
kubectl get pods -l app.kubernetes.io/name=nats
检查服务状态:
kubectl get svc my-nats
自 2025 年 8 月 28 日起,Bitnami 将升级其公共镜像目录,推出基于 Bitnami Secure Images 计划的安全加固镜像。过渡期安排如下:
这些变更旨在通过推广软件供应链完整性最佳实践和最新部署,提升所有 Bitnami 用户的安全态势。详情参见 Bitnami Secure Images 公告。
Bitnami 图表允许为部署中的所有容器设置资源请求和限制,通过 resources 参数配置。生产环境建议显式设置资源请求,以适配实际工作负载。
示例配置:
resources: requests: cpu: 100m memory: 128Mi limits: cpu: 500m memory: 512Mi
此外,可通过 resourcesPreset 参数使用预设资源配置(如 small、medium、large),但生产环境建议自定义配置以满足特定需求。
升级时,Bitnami NATS 图表会复用之前生成的密钥或 existingSecret 指定的密钥。更新凭证的方法:
通过参数指定新凭证:
helm upgrade my-nats oci://registry-1.docker.io/bitnamicharts/nats --set auth.token=new-token
指定新的现有密钥:
helm upgrade my-nats oci://registry-1.docker.io/bitnamicharts/nats --set existingSecret=new-secret-name
如需备份和恢复 Kubernetes 上的 Helm 部署,需备份源部署的持久卷并通过 Velero(Kubernetes 备份/恢复工具)附加到新部署。操作指南参见 使用 Velero 备份和恢复部署。
通过设置 metrics.enabled=true 可启用 Prometheus 集成,将在所有 Pod 中部署带有 prometheus-nats-exporter 的 Sidecar 容器,并创建 metrics 服务,支持 Prometheus 自动发现。
设置 metrics.serviceMonitor.enabled=true 可部署 ServiceMonitor 对象,实现与 Prometheus Operator 的集成。需确保集群中已安装 Prometheus Operator CRDs,否则会报错:
no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1"
生产环境强烈建议使用不可变标签(如具体版本号),避免因镜像标签更新导致部署意外变更。Bitnami 会在存在主容器新版本、重大变更或严重漏洞时发布新图表,更新容器镜像。
通过 extraEnvVars 参数添加额外环境变量:
extraEnvVars: - name: LOG_LEVEL value: DEBUG
或通过 ConfigMap 或 Secret 注入:
extraEnvVarsCM: my-configmap # 包含环境变量的 ConfigMap 名称 extraEnvVarsSecret: my-secret # 包含环境变量的 Secret 名称
如需在 Pod 中添加额外容器(如日志或指标采集器),通过 sidecars 参数配置:
sidecars: - name: log-exporter image: busybox:latest imagePullPolicy: Always command: ["tail", "-f", "/var/log/nats.log"] volumeMounts: - name: logs mountPath: /var/log
如需暴露额外端口,通过 service.extraPorts 配置:
service: extraPorts: - name: metrics port: 9090 targetPort: 9090
注意:图表已包含 Prometheus exporter 的 Sidecar 容器(当
metrics.enabled=true时),sidecars参数仅用于添加额外容器。
通过 initContainers 参数配置 Init 容器(在主容器启动前运行):
initContainers: - name: init-config image: busybox:latest command: ["sh", "-c", "echo 'init config' > /config/init.conf"] volumeMounts: - name: config mountPath: /config
通过 extraDeploy 参数部署额外 Kubernetes 对象(如 ConfigMap、Deployment 等):
extraDeploy: - apiVersion: v1 kind: ConfigMap metadata: name: nats-custom-config data: custom.conf: | max_payload: 1MB
通过 affinity 参数自定义 Pod 亲和性规则:
affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app.kubernetes.io/name operator: In values: [nats] topologyKey: "kubernetes.io/hostname"
或使用预设亲和性配置(来自 bitnami/common 图表):
podAntiAffinityPreset: hard # 强制 Pod 分布在不同节点 nodeAffinityPreset: type: required key: node-role.kubernetes.io/worker values: [true]
| 名称 | 描述 | 默认值 |
|---|---|---|
global.imageRegistry | 全局 Docker 镜像仓库 | "" |
global.imagePullSecrets | 全局 Docker 镜像仓库密钥名称数组 | [] |
global.defaultStorageClass | 持久卷的全局默认存储类 | "" |
global.security.allowInsecureImages | 允许跳过镜像验证 | false |
global.compatibility.openshift.adaptSecurityContext | 调整安全上下文以适配 OpenShift restricted-v2 SCC(移除 runAsUser、runAsGroup 和 fsGroup),可选值:auto(自动检测 OpenShift 时应用)、force(强制应用)、disabled(禁用) | auto |
| 名称 | 描述 | 默认值 |
|---|---|---|
kubeVersion | 覆盖 Kubernetes 版本 | "" |
nameOverride | 部分覆盖资源名称前缀 | "" |
fullnameOverride | 完全覆盖资源全名 | "" |
namespaceOverride | 覆盖命名空间 | "" |
commonLabels | 为所有资源添加标签 | {} |
commonAnnotations | 为所有资源添加注解 | {} |
clusterDomain | Kubernetes 集群域名 | cluster.local |
extraDeploy | 额外部署的资源数组 | [] |
diagnosticMode.enabled | 启用诊断模式(禁用所有探针,覆盖命令) | false |
diagnosticMode.command | 诊断模式下覆盖所有容器的命令 | ["sleep"] |
diagnosticMode.args | 诊断模式下覆盖所有容器的参数 | ["infinity"] |
| 名称 | 描述 | 默认值 |
|---|---|---|
image.registry | NATS 镜像仓库 | REGISTRY_NAME |
image.repository | NATS 镜像仓库路径 | REPOSITORY_NAME/nats |
image.digest | 镜像摘要(如设置将覆盖标签) | "" |
image.pullPolicy | 镜像拉取策略 | IfNotPresent |
image.pullSecrets | 镜像拉取密钥 | [] |
auth.enabled | 是否启用客户端认证 | true |
auth.token | 客户端认证令牌 | "" |
auth.credentials | 客户端认证用户凭证集合(当 auth.token 未设置时生效) | [] |
auth.noAuthUser | 未认证访问关联的用户(必须是 auth.credentials 中的用户,未设置则拒绝未认证访问) | "" |
auth.timeout | 客户端认证超时时间(秒) | 1 |
tls.enabled | 是否启用 TLS 配置 | false |
tls.autoGenerated.enabled | 是否自动生成 TLS 证书 | true |
tls.autoGenerated.engine | 证书生成机制(允许值:helm、cert-manager) | helm |
tls.autoGenerated.certManager.existingIssuer | 现有 Issuer 名称(仅 cert-manager 机制) | "" |
tls.autoGenerated.certManager.existingIssuerKind | 现有 Issuer 类型(默认:Issuer,仅 cert-manager 机制) | "" |
tls.autoGenerated.certManager.keyAlgorithm | 证书密钥算法(仅 cert-manager 机制) | RSA |
tls.autoGenerated.certManager.keySize | 证书密钥长度(仅 cert-manager 机制) | 2048 |
tls.autoGenerated.certManager.duration | 证书有效期(仅 cert-manager 机制) | 2160h |
tls.autoGenerated.certManager.renewBefore | 证书续期提前时间(仅 cert-manager 机制) | 360h |
tls.ca | CA 证书内容(当 tls.existingCASecret 未设置时生效) | "" |
tls.existingCASecret | 包含 CA 证书的现有 Secret 名称 | "" |
tls.server.cert | 服务端 TLS 证书内容(当 tls.server.existingSecret 未设置时生效) | "" |
tls.server.key | 服务端 TLS 密钥内容(当 tls.server.existingSecret 未设置时生效) | "" |
tls.server.existingSecret | 包含服务端 TLS 证书的现有 Secret 名称 | "" |
tls.client.cert | 客户端 TLS 证书内容(当 tls.client.existingSecret 未设置时生效) | "" |
tls.client.key | 客户端 TLS 密钥内容(当 tls.client.existingSecret 未设置时生效) | "" |
tls.client.existingSecret | 包含客户端 TLS 证书的现有 Secret 名称 | "" |
cluster.name | 集群名称 | nats |
cluster.connectRetries | 隐式路由连接重试次数(不设置则使用默认值) | "" |
cluster.auth.enabled | 是否启用集群认证 | true |
cluster.auth.user | 集群认证用户名 | nats_cluster |
cluster.auth.password | 集群认证密码 | "" |
jetstream.enabled | 是否启用 JetStream | false |
jetstream.maxMemory | JetStream 最大内存使用量 | 1G |
jetstream.storeDirectory | JetStream 数据存储目录 | /data |
debug.enabled | 是否启用调试日志 | false |
debug.trace | 是否启用跟踪级调试日志 | false |
升级图表至最新版本:
helm repo update helm upgrade my-nats oci://registry-1.docker.io/bitnamicharts/nats
指定版本升级:
helm upgrade my-nats oci://registry

免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429