NocoDB 如何用 Helm Chart 在 Kubernetes 上部署并接入外部 PostgreSQL 与 Redis NocoDB 如何用 Helm Chart 在 Kubernetes 上部署并接入外部 PostgreSQL 与 Redis【免费下载链接】nocodb A Free Self-hostable Airtable Alternative项目地址: https://gitcode.com/GitHub_Trending/no/nocodbNocoDB 仓库自带一个生产级 Helm Chartcharts/nocodb/README.md它的设计前提是把状态放在集群外PostgreSQL 和 Redis 都由外部提供Chart 只负责运行 NocoDB 应用容器和后台 worker。本文的目标是在一个已有 Kubernetes 集群上用这个 Chart 部署 NocoDB并通过 Secret 把外部 PostgreSQL 与 Redis 的连接信息接进来最后用 Chart 自带的健康检查确认部署成功。准备条件按 Helm Chart 说明 的 Prerequisites 一节开始前需要Kubernetes 1.23Helm 3.8需要 OCI 支持Chart 通过oci://仓库安装外部 PostgreSQL 和 Redis 实例附件用的 S3 兼容存储桶在部署后从 NocoDB 管理面板里配置一个 Ingress 控制器可选配 cert-manager用于外部访问Chart 当前版本为 1.0.0appVersion 2026.06.1见 Chart.yaml。默认replicaCount为 2、worker 启用且副本数为 2也就是说默认部署方式本身就要求配置 Redis否则安装时会校验失败下文有具体报错。方式一预先创建 Secret 并引用生产推荐路径Chart 要求连接信息通过 Secret 注入。README 的 Secret key contract 约定创建一个Secret然后让*.existingSecret都指向它Key用途文档示例值DATABASE_URLPostgres 连接串postgresql://user:passhost:5432/nocodb?sslmoderequireNC_REDIS_URLRedis 连接串rediss://:passhost:6379NC_AUTH_JWT_SECRETJWT 密钥可选留空时自动生成随机 ≥32 字符NC_CONNECTION_ENCRYPT_KEY数据源加密密钥可选自动生成不可轮换随机 ≥32 字符后两个 key 是可选项auth.existingSecret留空时Chart 会在自己管理的 Secret 里自动生成这两个值并在升级时复用见 Secret 模板 与 参数校验逻辑。因此最小配置只需要DATABASE_URL和NC_REDIS_URL两个 key。把下面命令中postgresql://...和rediss://...替换为你自己的真实连接串格式对照上表的文档示例值kubectl -n nocodb create secret generic nocodb-secrets \ --from-literalDATABASE_URLpostgresql://你的用户:你的密码Postgres主机:5432/nocodb?sslmoderequire \ --from-literalNC_REDIS_URLrediss://:你的Redis密码Redis主机:6379然后执行 README TL;DR 给出的安装命令helm install nocodb oci://ghcr.io/nocodb/charts/nocodb --version 1.0.0 \ --set externalDatabase.existingSecretnocodb-secrets \ --set externalRedis.existingSecretnocodb-secretsexistingSecretUrlKey默认为DATABASE_URL和NC_REDIS_URL与上面的 Secret key 一一对应如果 Secret 里的 key 名不同需要分别设置externalDatabase.existingSecretUrlKey/externalRedis.existingSecretUrlKey默认参数中有说明。方式二内联填写连接字段评估环境用不想预先建 Secret 时也可以直接把字段传给 Chart它会拼装出完整 URL 并自行创建 Secret。README 明确标注password类字段是 eval only; use existingSecret in prod所以这条路径只适合评估helm install nocodb oci://ghcr.io/nocodb/charts/nocodb --version 1.0.0 \ --set externalDatabase.hostPostgres主机 \ --set externalDatabase.databasenocodb \ --set externalDatabase.usernamenocodb \ --set externalDatabase.password你的密码 \ --set externalDatabase.sslModeprefer \ --set externalRedis.hostRedis主机 \ --set externalRedis.password你的Redis密码拼装规则见 helpersPostgres 按postgresql://user:passhost:port/database?sslmodesslMode组装Redis 默认redis://方案设置externalRedis.tlstrue时改用rediss://。externalDatabase各项默认值为port: 5432、database: nocodb、username: nocodb、sslMode: preferexternalRedis默认port: 6379。可选开启 Ingress 对外访问默认service.type是ClusterIP端口 8080ingress.enabled默认false。如果集群里有 Ingress 控制器安装时加上--set ingress.enabledtrue \ --set ingress.hosts[0].hostnocodb.example.com \ --set ingress.tls[0].hosts[0].hostnocodb.example.com \ --set ingress.tls[0].secretName你的TLS证书Secret其中nocodb.example.com需要换成你自己解析到集群入口的域名。注意一个联动行为nocodb.publicUrl留空且配置了 TLS 时NC_SITE_URL会自动取第一个 ingress host 推导见 ConfigMap 模板所以不必额外设置。cert-manager 的 cluster-issuer 注解通过ingress.annotations传入。验证部署结果安装完成后Helm 会输出 NOTES 提示模板见 NOTES.txt其中包含访问方式和健康检查命令。按提示执行健康检查以 release 名nocodb、默认命名空间为例ns替换为你的实际命名空间kubectl -n ns exec deploy/nocodb -- wget -qO- http://localhost:8080/api/v1/health应用的 liveness/readiness/startup 探针都指向同一个/api/v1/health端点App 部署模板因此该命令有响应即说明应用已启动。没有 Ingress 时NOTES 给出的本地访问方式是kubectl -n ns port-forward svc/nocodb 8080:8080 # 然后打开 http://localhost:8080多副本部署的两个硬性约束1. 多副本 / worker 必须配置 Redis否则安装即失败。校验逻辑在replicaCount 1、worker.enabledtrue或autoscaling.enabledtrue且 Redis 未配置时直接 fail报错原文NocoDB requires Redis for multi-replica or worker deployments. Set externalRedis.host (or externalRedis.existingSecret), or set replicaCount1, autoscaling.enabledfalse, and worker.enabledfalse.如果只想先跑单副本、还没有 Redis按报错提示的三个开关把部署降级为单副本replicaCount1, autoscaling.enabledfalse, worker.enabledfalse。此时 NOTES 会输出文档中的警告WARNING: Redis is not configured. This deployment is limited to a single replica.2. 多副本部署下附件需要 S3 存储。NOTES 同时提示未配置对象存储前附件写入各 Pod 的本地存储/usr/app/data默认 emptyDirwill NOT be consistent across replicas。解决方法是安装后在 NocoDB 管理面板的 App Store Storage 里配置 S3 兼容存储这是文档明确给出的操作路径Chart 本身不替你配置。若坚持用本地存储可启用persistence.enabledtrue把 PVC 挂到/usr/app/data默认 10Gi、ReadWriteOnce见 values.yaml但该模式与多副本的一致性限制仍由读者自行权衡。资源规格默认 app 与 worker 的 requests 均为cpu: 1, memory: 2GiREADME 建议 2Gi 内存、最低 1Gi。节点资源紧张时在--set resources.requests.memory1Gi、--set worker.resources.requests.memory1Gi处下调即可。参考Chart 完整参数表与安装命令charts/nocodb/README.md默认参数及各项注释charts/nocodb/values.yamlCI 中仅外部依赖的 values 写法existingSecret同时指向 DB/Redis/authcharts/nocodb/ci/external-only-values.yaml【免费下载链接】nocodb A Free Self-hostable Airtable Alternative项目地址: https://gitcode.com/GitHub_Trending/no/nocodb创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考