☰
如何将Portabase部署到Kubernetes?Helm Chart完整部署指南
2026/10/11 22:15:24 网站建设 项目流程

【免费下载链接】portabase

Portabase - Database backup & restore tool for PostgreSQL, MySQL, MsSQL, MariaDB, Firebird SQL, SQLite, MongoDB, Redis and Docker Volume

项目地址:https://gitcode.com/gh_mirrors/por/portabase
点击查看免费下载

Portabase 是一款开源的数据库备份与恢复工具,支持 PostgreSQL、MySQL、MsSQL、MariaDB、SQLite、MongoDB、Redis、Firebird SQL 以及 Docker Volume。本文带你用Helm Chart 将 Portabase 部署到 Kubernetes的完整流程,覆盖核心参数、持久化存储、Ingress 域名访问和常见坑点,10 分钟即可跑起一个可用的实例。

部署前:先认识 Portabase 能做什么

部署完成后,你可以通过 Web 控制台为集群内外各种数据库引擎创建备份任务、设置定时策略并一键恢复。它兼容的数据库引擎包括:

  • PostgreSQL 12 ~ 18、MySQL 5.7/8/9、MariaDB 10/11
  • MongoDB 4 ~ 8、SQLite 3.x、Redis 2.8+、Valkey 7.2+
  • Firebird SQL、Microsoft SQL Server、Docker Volume

💡 备份与恢复由部署在数据库侧的 Portabase Agent 执行,Kubernetes 上运行的只是控制台本体。

部署前置条件清单

开始前请确认你的环境满足以下条件:

条件说明
Kubernetes 集群可用版本,kubectl get nodes能正常输出
Helm 3.x用于安装 Chart,helm version检查
存储类(StorageClass)PVC 默认申请 10Gi 动态存储,集群需有可用 StorageClass
基础资源默认 requests/limits 为 1 CPU + 1Gi 内存

Chart 源码位于仓库的 helm/ 目录,版本信息见 helm/Chart.yaml(当前 chart 版本 1.30.2),开发侧使用说明见 helm/README.md。

一键安装:Helm Chart 安装步骤

先克隆仓库获取 Chart:

git clone https://gitcode.com/gh_mirrors/por/portabase cd portabase/helm

执行安装命令,--set生成一个随机项目密钥(必做,替换默认的change_me占位值):

helm install portabase . \ --set project.secret=$(openssl rand -hex 32)

该密钥会被写入同名的 Kubernetes Secret,并以project-secret键注入容器环境变量PROJECT_SECRET,模板见 helm/templates/secret.yaml。

values.yaml 核心参数速查

所有可配置项都集中在 helm/values.yaml,最常用的几个如下:

参数默认值说明
image.repository/image.tagportabase/portabase/latest容器镜像与标签
service.typeClusterIP改为NodePort可在节点直接访问
project.urlhttp://localhost:8887你的实际访问地址
project.secret占位值务必替换为随机串
project.behindProxyfalse通过反向代理访问时设为true
persistence.size10GiPVC 存储容量
timezoneEurope/Paris容器时区(TZ环境变量)
updateStrategy.typeRecreate升级策略,勿随意改成滚动
ingress.enabledfalse是否创建 Ingress

Deployment 中还内置了三类探针,全部指向/api/health健康检查接口,保证 Pod 就绪、存活状态可被集群自动监控:

startupProbe: httpGet: path: /api/health port: 80

完整探针与资源限制定义见 helm/templates/deployment.yaml。

数据持久化:PVC 与 Recreate 策略

persistence.enabled默认为true,Chart 会自动创建名为<release>-data的 PersistentVolumeClaim,挂载到容器/data目录(模板见 helm/templates/pvc.yaml)。注意两点:

  1. 访问模式为ReadWriteOnce:同一时刻只有一个 Pod 能挂载该卷,因此replicaCount建议保持默认的 1;
  2. 升级策略默认Recreate:先停旧 Pod 再起新 Pod,避免滚动升级时新旧两个 Pod 争抢同一块存储导致 "Multi-Attach" 错误。策略说明可参考 helm/values.yaml。

服务暴露:本地端口转发与 Ingress 域名访问

方式一:本地端口转发(调试最方便,详见 helm/README.md):

kubectl port-forward svc/portabase 8887:80

然后浏览器打开http://localhost:8887。

方式二:NodePort:

helm upgrade portabase . \ --set service.type=NodePort \ --set project.secret=$(openssl rand -hex 32)

方式三:Ingress 域名访问(推荐生产环境)。Chart 支持完整的 Ingress 模板(见 helm/templates/ingress.yaml):

helm install portabase . \ --set project.secret=$(openssl rand -hex 32) \ --set project.url=https://portabase.example.com \ --set ingress.enabled=true \ --set ingress.className=nginx \ --set ingress.hosts[0].host=portabase.example.com \ --set project.behindProxy=true

如需 HTTPS,可继续追加--set ingress.tls[0].hosts[0]=... --set ingress.tls[0].secretName=...。

验证部署与升级卸载

安装后三步验证:

kubectl get pods # 等待 Pod 变为 Running kubectl get svc # 确认 Service 创建成功 kubectl port-forward svc/portabase 8887:80 # 浏览器访问测试

升级与卸载:

helm upgrade portabase . --set project.secret=<你的密钥> helm uninstall portabase

常见部署问题 FAQ

Q1:升级时 Pod 报 "Multi-Attach" 错误?这是ReadWriteOnce卷被两个 Pod 同时挂载导致的。请保持默认Recreate策略;若确实需要 RollingUpdate,务必将updateStrategy.rollingUpdate.maxSurge设为0。

Q2:可以设置 replicaCount > 1 实现高可用吗?不建议。当前 Chart 使用单块ReadWriteOnce卷,多副本会互相抢占存储,默认单副本即可满足备份控制台的使用场景。

Q3:浏览器打开提示访问地址不对?检查project.url是否与真实访问地址一致;经过 Nginx 等反向代理时记得设置project.behindProxy=true,否则文件上传等功能可能异常。

Q4:忘记生成密钥会怎样?project.secret是服务端的加密主密钥,占位值直接暴露风险。请用openssl rand -hex 32生成,并且升级时保持一致,更换密钥会导致原有加密数据不可用。

总结

  • Portabase 通过官方 Helm Chart 可一条命令部署到 Kubernetes,helm install+ 随机project.secret即可
  • 默认 1 CPU / 1Gi 内存、10Gi PVC、Recreate升级策略,配置保守稳妥
  • 调试用port-forward,生产建议 Ingress + HTTPS
  • 关注project.url与behindProxy两项,避免前端地址不一致的坑

掌握这套流程后,你的数据库备份控制台就跑在了 Kubernetes 上,接下来只需为各数据库安装 Agent 并创建备份策略即可。

【免费下载链接】portabase

Portabase - Database backup & restore tool for PostgreSQL, MySQL, MsSQL, MariaDB, Firebird SQL, SQLite, MongoDB, Redis and Docker Volume

项目地址:https://gitcode.com/gh_mirrors/por/portabase
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询