SeaweedFS 是一个简单且高度可扩展的分布式文件系统。Bitnami 提供的该 Helm Chart 用于在 Kubernetes 集群中快速部署 SeaweedFS,支持生产级别的工作负载,包含经过精心设计的配置、安全增强和维护支持。
SeaweedFS ***概述
商标说明:本软件包由 Bitnami 打包,提及的商标分属各自公司所有,使用不意味着附属或背书。
自 2025 年 8 月 28 日起,Bitnami 将升级其公共镜像目录,推出新的 Bitnami Secure Images 计划,提供精选的硬化工件。过渡期间的主要变更包括:
这些变更旨在通过推广软件供应链完整性最佳实践,提升所有 Bitnami 用户的安全态势。详情参见 Bitnami Secure Images 公告。
consolehelm install my-release oci://registry-1.docker.io/bitnamicharts/seaweedfs
生产环境建议:试用 VMware Tanzu Application Catalog,Bitnami 目录的商业版。
使用发布名称 my-release 安装 Chart:
consolehelm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/seaweedfs
注意:需替换占位符
REGISTRY_NAME和REPOSITORY_NAME。例如,Bitnami ***仓库使用REGISTRY_NAME=registry-1.docker.io和REPOSITORY_NAME=bitnamicharts。
命令将以默认配置在 Kubernetes 集群中部署 SeaweedFS。参数 部分列出了安装时可配置的参数。
提示:使用
helm list查看所有发布。
Bitnami Chart 允许为所有容器设置资源请求和限制(通过 resources 参数)。生产环境必须设置资源请求,并根据实际需求调整。
可通过 resourcesPreset 参数自动应用预设资源配置(参考 bitnami/common Chart),但生产环境建议手动配置以适配具体需求。更多信息参见 Kubernetes 容器资源管理文档。
通过设置 master.metrics.enabled、volume.metrics.enabled、filer.metrics.enabled 或 s3.metrics.enabled 为 true,可启用 Prometheus 指标暴露。这将开放 SeaweedFS 原生 Prometheus 端口,并部署带有自动发现注解的 metrics 服务。
前提条件:集群中需已安装 Prometheus 或 Prometheus Operator。推荐安装 Bitnami Prometheus Helm Chart 或 Bitnami Kube Prometheus Helm Chart。
Prometheus Operator 集成:设置 *.metrics.serviceMonitor.enabled=true(如 master.metrics.serviceMonitor.enabled=true)可部署 ServiceMonitor 对象,需确保集群已安装 Prometheus Operator CRD。
Bitnami Chart 在首次启动时配置凭证,后续变更需手动操作:
SECRET_NAME、ADMIN_ACCESS_KEY_ID 等):shellkubectl create secret generic SECRET_NAME --from-literal=admin_access_key_id=ADMIN_ACCESS_KEY_ID --from-literal=admin_secret_access_key=ADMIN_SECRET_KEY_ID --from-literal=read_access_key_id=READ_ACCESS_KEY_ID --from-literal=read_secret_access_key=READ_SECRET_KEY_ID --dry-run -o yaml | kubectl apply -f -
如需 Filer Server 连接外部数据库(而非集群内安装),需禁用内置 MariaDB 并配置外部数据库参数:
consolemariadb.enabled=false externalDatabase.enabled=true externalDatabase.store=mariadb # 或 postgresql externalDatabase.host=myexternalhost externalDatabase.user=myuser externalDatabase.password=mypassword externalDatabase.database=mydatabase externalDatabase.port=3306
前置操作:需在外部数据库中手动创建 filemeta 表:
MariaDB:
sqlUSE DATABASE_NAME; CREATE TABLE IF NOT EXISTS filemeta ( `dirhash` BIGINT NOT NULL COMMENT 'directory 字段 MD5 哈希的前 64 位', `name` VARCHAR(766) NOT NULL COMMENT '目录或文件名', `directory` TEXT NOT NULL COMMENT '父目录完整路径', `meta` LONGBLOB, PRIMARY KEY (`dirhash`, `name`) ) DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
PostgreSQL:
sql\c DATABASE_NAME; CREATE TABLE IF NOT EXISTS filemeta ( dirhash BIGINT, name VARCHAR(65535), directory VARCHAR(65535), meta bytea, PRIMARY KEY (dirhash, name) );
注意:替换
DATABASE_NAME为实际数据库名。
也可通过 Helm Chart 安装时的 K8s Job 自动创建表,需设置 externalDatabase.initDatabaseJob.enabled=true。
若集群已安装 Ingress 控制器(如 nginx-ingress-controller 或 contour),可通过 Ingress 暴露 SeaweedFS 服务。
master.ingress.enabled=true(其他组件如 S3、Filer 类似,通过 s3.ingress.enabled、filer.ingress.enabled 启用)master.ingress.hostname 设置域名master.ingress.tls 添加 TLS 证书master.ingress.extraHosts 和 master.ingress.extraTLS 配置额外主机和 TLS 规则启用安全设置需将 security.enabled=true 和 security.mTLS.enabled=true,支持:
证书管理:
security.mTLS.autoGenerated.enabled=true 和 security.mTLS.autoGenerated.engine=helmsecurity.mTLS.autoGenerated.enabled=true、security.mTLS.autoGenerated.engine=cert-manager,可通过 security.mTLS.autoGenerated.certManager.existingIssuer 指定现有 Issuer/ClusterIssuerS3 认证:
s3.auth.enabled=trues3.auth.existingSecret 指定 Secret 名称s3.auth.adminAccessKeyId、s3.auth.adminSecretAccessKey(管理员用户)和 s3.auth.readAccessKeyId、s3.auth.readSecretAccessKey(只读用户)设置凭证通过 extraEnvVars 添加自定义环境变量:
yamlmaster: extraEnvVars: - name: LOG_LEVEL value: error
也可通过 ConfigMap 或 Secret 注入:
extraEnvVarsCM:指定包含环境变量的 ConfigMap 名称extraEnvVarsSecret:指定包含环境变量的 Secret 名称通过 sidecars 参数添加额外容器(如监控或日志采集器):
yamlsidecars: - name: metrics-exporter image: your-exporter-image:latest imagePullPolicy: Always ports: - name: metrics containerPort: 9090
若 Sidecar 需暴露端口,通过 service.extraPorts 添加端口定义:
yamlservice: extraPorts: - name: exporter-port port: 9090 targetPort: 9090
通过 initContainers 参数添加初始化容器:
yamlinitContainers: - name: init-task image: your-init-image:latest imagePullPolicy: Always command: ["sh", "-c", "echo 'Initializing...'"]
通过 affinity 参数配置自定义亲和性规则,或使用预设策略(参考 bitnami/common Chart):
podAffinityPreset:Pod 亲和性预设podAntiAffinityPreset:Pod 反亲和性预设nodeAffinityPreset:节点亲和性预设使用 Velero 备份和恢复持久化卷,参考 Bitnami 备份恢复指南。
Bitnami SeaweedFS 镜像将数据和配置存储在容器的 /bitnami 路径,通过 Persistent Volume Claims 实现数据持久化。持久化相关问题排查参考 Bitnami 持久化卷故障排除指南。
| 参数名 | 描述 | 默认值 |
|---|---|---|
global.imageRegistry | 全局 Docker 镜像仓库 | "" |
global.imagePullSecrets | 全局镜像拉取密钥数组 | [] |
global.defaultStorageClass | 持久化卷全局默认 StorageClass | "" |
global.security.allowInsecureImages | 允许跳过镜像验证 | false |
global.compatibility.openshift.adaptSecurityContext | 适配 OpenShift restricted-v2 SCC 的安全上下文(auto/force/disabled) | auto |
| 参数名 | 描述 | 默认值 |
|---|---|---|
kubeVersion | 覆盖 Kubernetes 版本 | "" |
nameOverride | 部分覆盖资源名称前缀 | "" |
fullnameOverride | 完全覆盖资源全名 | "" |
namespaceOverride | 覆盖命名空间 | "" |
commonLabels | 所有资源添加的标签 | {} |
commonAnnotations | 所有资源添加的注解 | {} |
clusterDomain | Kubernetes 集群域名 | cluster.local |
extraDeploy | 额外部署的 Kubernetes 对象数组 | [] |
diagnosticMode.enabled | 启用诊断模式(禁用探针,覆盖命令) | false |
diagnosticMode.command | 诊断模式下覆盖所有容器的命令 | ["sleep"] |
diagnosticMode.args | 诊断模式下覆盖所有容器的参数 | ["infinity"] |
image.registry | SeaweedFS 镜像仓库 | REGISTRY_NAME |
image.repository | SeaweedFS 镜像名称 | REPOSITORY_NAME/seaweedfs |
image.digest | 镜像摘要(覆盖标签,推荐不可变标签) | "" |
image.pullPolicy | 镜像拉取策略 | IfNotPresent |
image.pullSecrets | 镜像拉取密钥 | [] |
image.debug | 启用镜像调试模式 | false |
security.enabled | 启用安全设置 | false |
security.corsAllowedOrigins | CORS 允许的源 | [] |
注:完整参数列表请参见 Bitnami SeaweedFS Chart 文档。
docker.io/bitnamilegacy,不再更新,生产环境建议迁移至 Bitnami Secure Images。来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429