尧图精选

PLANKA Helm Chart 部署实战指南:从本地构建到生产级 Kubernetes 配置详解

🕒 发布时间:2026/10/2 1:53:51 📁 来源:尧图网络
后端前端项目管理企业应用协同办公【免费下载链接】plankaElegant open source project tracking. Self-hosted Kanban for teams — free Community edition, with PLANKA Pro for organisations.项目地址https://gitcode.com/GitHub_Trending/pl/planka点击查看免费下载本指南以仓库内 charts/planka/README.md 为核心完整讲解如何通过官方 Helm Chart 在 Kubernetes 上部署 PLANKA 自托管看板系统包括 Chart 的本地构建、首次安装、管理员初始化、Ingress 对外暴露以及extraMounts、extraEnv、自定义服务条款、镜像摘要固定等进阶配置。读者将掌握一整套可直接复用的 Helm 部署与升级方案并理解各配置项在 deployment.yaml 与服务端环境变量解析处的落地机制。Chart 概览与仓库结构PLANKA Helm Chart 位于仓库的 charts/planka 目录下是标准 v2 应用型 Chart。从 Chart.yaml 可以看到chart 版本2.2.0与appVersion: 2.2.0同步遵循语义化版本规范依赖内置 Bitnami 的postgresql子 Chart版本16.6.6仓库为https://charts.bitnami.com/bitnami通过condition: postgresql.enabled控制是否启用别名postgresql模板组织templates/下包含 deployment.yaml主 Deployment 与全部环境变量渲染、service.yaml、ingress.yaml、pvc.yaml可选 PVC、configmap-terms.yaml自定义服务条款、serviceaccount.yaml、hpa.yaml可选 HPA等。values.yaml 是全部可配置项的权威清单默认镜像为ghcr.io/plankanban/plankapullPolicy: IfNotPresentreplicaCount: 1Service 类型ClusterIP、端口1337与容器端口一致。使用前须知Bitnami PostgreSQL 的已知问题Chart 依赖 Bitnami PostgreSQL 子 Chart因此继承了它的一个已知行为如果之前通过 helm 命令删除过旧的 PostgreSQL release再次安装时设置的数据库密码会被忽略因为旧的持久卷PV/PVC里仍保留着旧密码。Bitnami 官方对这类问题的原话警告如下Warning!Setting a password will be ignored on new installation in the case when previous Posgresql release was deleted through the helm command. In that case, old PVC will have an old password, and setting it through helm wont take effect. Deleting persistent volumes (PVs) will solve the issue.对应的解决办法是删除遗留的 PV 后再重新安装。若希望连同数据一起彻底卸载本 Chart需要按 Bitnami Chart 文档中卸载 Chart的完整步骤操作——先删 release再清理 PVC/PV 及其底层存储而不能只执行helm uninstall。这直接引出了原文档在生产环境一节的核心建议为postgresql.auth.password显式指定固定密码避免因 Chart 重新生成随机密码而无法访问历史数据。基础安装从克隆仓库到首次访问本地构建 Chart 并执行安装若需要在本仓库基础上本地修改 Chart 再部署基本流程如下首次快速体验可直接参考官方在线文档的安装向导以下为源码级构建流程git clone https://gitcode.com/GitHub_Trending/pl/planka.git cd planka/charts/planka helm dependency build export SECRETKEY$(openssl rand -hex 64) helm install planka . --set secretkey$SECRETKEY \ --set admin_emaildemodemo.demo \ --set admin_passworddemo \ --set admin_nameDemo Demo \ --set admin_usernamedemo其中三个关键步骤helm dependency build拉取 Chart.yaml 声明的 Bitnamipostgresql依赖到本地charts/目录生成 Chart.lockopenssl rand -hex 64生成 64 字节128 位十六进制字符的随机密钥用于 PLANKA 会话签名。原文档特别提示Windows 用户可在 Git Bash 中运行该命令。SECRET_KEY的底层用途见 server/config/session.js作为 session secret与 server/config/bootstrap.js启动时校验未设置、仍为示例值notsecretkey、或长度小于 32 字符时都会输出警告--set admin_*一次性初始化默认管理员账号。对应服务端种子脚本 server/db/seeds/default.js邮箱需通过有效性校验、用户名长度限制在 332 字符且会被小写化、密码使用 bcrypt 加密后落库。首次启动完成后即可移除admin_开头的参数但若希望该管理员账号不可被编辑/删除admin_email必须保留。首次访问与端口转发安装完成后通过端口转发即可在本地浏览器访问Pod 内 PLANKA 监听1337端口转发到本机3000kubectl port-forward $POD_NAME 3000:1337访问http://localhost:3000即可进入 PLANKA 登录页。对外暴露访问Ingress 配置命令行方式HTTP / HTTPS仅使用 HTTP 时helm install planka . --set secretkey$SECRETKEY \ --set admin_emaildemodemo.demo \ --set admin_passworddemo \ --set admin_nameDemo Demo \ --set admin_usernamedemo \ --set ingress.enabledtrue \ --set ingress.hosts[0].hostplanka.example.dev需要 HTTPS 时额外指定 TLS secret该 secret 需提前在集群中创建helm install planka . --set secretkey$SECRETKEY \ --set admin_emaildemodemo.demo \ --set admin_passworddemo \ --set admin_nameDemo Demo \ --set admin_usernamedemo \ --set ingress.enabledtrue \ --set ingress.hosts[0].hostplanka.example.dev \ --set ingress.tls[0].secretNameplanka-tls \ --set ingress.tls[0].hosts[0]planka.example.devvalues.yaml 方式更推荐的做法是将配置写入values.yaml文件后通过-f引用secretkey: InsertSecretKey # The admin section needs to be present for new instances of PLANKA, after the first start you can remove the lines starting with admin_. If you want the admin user to be unchangeable admin_email: has to stay # After changing the config you have to run helm upgrade planka . -f values.yaml # Admin user admin_email: demodemo.demo # Do not remove if you want to prevent this user from being edited/deleted admin_password: demo admin_name: Demo Demo admin_username: demo # Admin user # Ingress ingress: enabled: true hosts: - host: planka.example.dev paths: - path: / pathType: ImplementationSpecific # Needed for HTTPS tls: - secretName: planka-tls # existing TLS secret in k8s hosts: - planka.example.devhelm install planka . -f values.yaml两点源码佐证从 deployment.yaml 可见BASE_URL的渲染优先级为显式设置baseUrl 启用 Ingress 时取https://第一个 host 兜底http://localhost:3000。因此 values.yaml 中注明baseUrl会覆盖ingress.hosts[0].hostingress.yaml 会根据集群 KubeVersion 自动选择networking.k8s.io/v1≥1.19、networking.k8s.io/v1beta1≥1.14或extensions/v1beta1更老版本并支持ingress.className与注解。生产部署要点原文档针对不止是玩一玩的生产托管给出三条关键建议创建专属values.yaml把配置固化到文件里未来helm upgrade planka . -f values.yaml时应用新配置会容易得多secretkey只生成一次并妥善保存可放入安全保险库或values.yaml保证后续升级时密钥不变否则所有会话会失效为postgresql.auth.password显式指定密码避免 Bitnami 子 Chart 生成新密码导致旧数据无法访问对应前文提到的已知问题见 values.yaml 中postgresql.auth配置块。进阶配置额外卷挂载extraMountsChart 支持通过extraMounts将任意 ConfigMap、Secret 及其他类型的卷挂载进 PLANKA 容器典型场景包括添加自定义配置文件、从已有 Secret 挂载 TLS 证书、挂载临时/持久存储。注意被引用的 ConfigMap 和 Secret 必须提前创建好。完整示例与 values.yaml 中extraMounts注释及 deployment.yaml 的挂载渲染一一对应extraMounts: # Mount CA certificate from existing ConfigMap - name: ca-certs mountPath: /etc/ssl/certs/custom-ca.crt subPath: ca.crt readOnly: true configMap: name: ca-certificates # Must exist # Mount TLS certificates from existing Secret - name: tls-certs mountPath: /etc/ssl/private readOnly: true secret: secretName: planka-tls-secret # Must exist items: - key: tls.crt path: server.crt - key: tls.key path: server.key # Temporary storage - name: temp-storage mountPath: /tmp/planka-temp readOnly: false emptyDir: sizeLimit: 1Gi # Host path mount - name: backup-storage mountPath: /var/lib/planka-backups readOnly: false hostPath: path: /var/lib/planka-backups type: DirectoryOrCreate # NFS mount - name: nfs-storage mountPath: /shared/data readOnly: false nfs: server: nfs.example.com path: /exports/planka实现细节见 deployment.yaml模板按configMap→secret→emptyDir→hostPath→persistentVolumeClaim→nfs的顺序匹配卷类型若条目包含其他未知卷类型则会剔除name/mountPath/subPath/readOnly后将其余字段原样渲染为卷定义因此理论上支持任何 Kubernetes 卷类型。此外未显式声明readOnly时默认挂载为只读。从 Secret 注入环境变量extraEnv使用extraEnv可以将已有 Secret 中的值注入为容器环境变量extraEnv: - name: SMTP_PASSWORD valueFrom: secretName: smtp-credentials key: password - name: CUSTOM_API_KEY valueFrom: secretName: api-credentials key: api-key模板实现deployment.yaml会把valueFrom.secretName/valueFrom.key渲染为标准的valueFrom.secretKeyRef而设置了value的条目则渲染为字面量。这与 values.yaml 注释中给出的 SMTP 示例配置SMTP_HOST、SMTP_PORT、SMTP_NAME、SMTP_SECURE、SMTP_TLS_REJECT_UNAUTHORIZED、SMTP_USER、SMTP_PASSWORD、SMTP_FROM等配合使用即可在不把密码明文写入 Chart 的前提下完成邮件服务配置。另外Chart 还支持通过existingSecretkeySecret必须含key键与existingAdminCredsSecret必须含username、password键分别替换secretkey与管理员凭据。自定义服务条款Terms of ServicePLANKA 支持提供自有的最终用户服务条款在values.yaml的terms配置块中直接内联 Markdown 文件内容Chart 会自动生成对应 ConfigMap 并完成卷挂载terms: enabled: true customFiles: en-US.md: | # End User Terms of Service ... [confirmations]:: --- ✔️ **I have read and accept these End User Terms of Service** de-DE.md: | # Nutzungsbedingungen ... [confirmations]:: --- ✔️ **Ich habe diese Nutzungsbedingungen gelesen und akzeptiere sie**实现链路三层佐证configmap-terms.yaml 将customFiles的每个 key如en-US.md作为 ConfigMap 数据键内容原样写入deployment.yaml 在terms.enabled时把该 ConfigMap 挂载到容器的/app/terms/custom目录服务端 server/api/hooks/terms/index.js 在 Sails 启动时扫描terms目录下各语言的.md文件若/app/terms/custom下没有可用语言文件则回退使用仓库内置的_template模板见 server/terms/_template同时会计算默认语言条款内容的 SHA-256 摘要作为签名用于校验用户确认。镜像摘要固定Image Digest Pinning为保证安全性与可复现性可将容器镜像固定到其 SHA256 摘要而不只依赖 tag从而杜绝 tag 被篡改或意外更新导致部署出非预期镜像。查找摘要docker inspect ghcr.io/plankanban/planka:latest --format{{index .RepoDigests 0}} # Output: ghcr.io/plankanban/plankasha256:abc123def456... # Or with skopeo skopeo inspect docker://ghcr.io/plankanban/planka:latest用法一tag 与摘要并存推荐——tag 仅作引用参考实际以摘要为准helm install planka . --set secretkey$SECRETKEY \ --set image.taglatest \ --set image.digestabc123def456... \ --set admin_emaildemodemo.demo \ --set admin_passworddemo \ --set admin_nameDemo Demo \ --set admin_usernamedemo或在values.yaml中image: repository: ghcr.io/plankanban/planka tag: latest digest: abc123def456ab89cd12ef34ab56cd78ef90ab12cd34ef56ab78cd90ef12ab34用法二仅摘要——tag 置空由摘要唯一标识镜像image: repository: ghcr.io/plankanban/planka tag: # Empty - digest alone identifies the image digest: abc123def456ab89cd12ef34ab56cd78ef90ab12cd34ef56ab78cd90ef12ab34安全收益不可变性Immutability确保每次部署的都是完全相同的镜像供应链安全Supply Chain Security抵御 tag 被修改或镜像仓库被攻陷的风险可复现性Reproducibility跨环境部署结果完全一致审计追溯Audit Trail部署清单中记录清晰的镜像身份。模板层的拼接逻辑位于 deployment.yaml设置digest且存在tag时渲染为repository:tagsha256:digest设置digest但tag为空时渲染为repositorysha256:digest否则回退为repository:tagtag 默认取Chart.AppVersion。配置项与 PLANKA 环境变量的对应关系源码视角Chart 最终通过环境变量与 PLANKA 服务端交互理解这张对应表有助于排查部署问题Chart 参数注入的环境变量服务端消费位置secretkey/existingSecretkeySecretSECRET_KEYserver/config/session.jssession secretserver/config/bootstrap.js长度 ≥ 32 校验baseUrl/ingress.hosts[0].hostBASE_URLserver/config/custom.js取第一个 URL生产环境还用于 CORS 来源计算见 server/config/env/production.jsdburl/existingDburlSecret/ 内置 PostgreSQLDATABASE_URLserver/config/datastores.js 与 server/db/knexfile.js固定值trueTRUST_PROXYserver/config/env/production.jstrustProxy 开关正确处理 X-Forwarded 头admin_email/admin_name/admin_username/admin_password或existingAdminCredsSecretDEFAULT_ADMIN_EMAIL/DEFAULT_ADMIN_NAME/DEFAULT_ADMIN_USERNAME/DEFAULT_ADMIN_PASSWORDserver/db/seeds/default.js首次启动创建/补齐默认管理员其中DATABASE_URL的分支逻辑值得注意deployment.yaml启用内置 PostgreSQL 时从-postgresql-svcbind-custom-usersecret 的uri键取值禁用时则必须提供existingDburlSecret含uri键或直接设置dburl否则 Helm 渲染会直接报错required强制校验从模板层面杜绝了漏配数据库连接串导致部署出半成品的情况。总结本仓库提供的 PLANKA Helm Chart当前 chart/app 版本均为2.2.0把 PLANKA 应用、Bitnami PostgreSQL 依赖、Ingress、PVC、HPA、ServiceAccount 等 Kubernetes 资源全部编排进一套可参数化的模板中。结合 charts/planka/README.md、values.yaml 与 deployment.yaml 三份核心文件开发者可以快速完成从本地验证到生产托管的部署升级闭环并通过extraMounts、extraEnv、terms、镜像摘要固定等进阶能力将 PLANKA 平滑融入既有集群的证书、密钥、存储与合规体系。赞分享后端前端项目管理企业应用协同办公【免费下载链接】plankaElegant open source project tracking. Self-hosted Kanban for teams — free Community edition, with PLANKA Pro for organisations.项目地址https://gitcode.com/GitHub_Trending/pl/planka点击查看免费下载相关推荐ruoyi-ai免费开源5步搭好你的AI聊天与绘画平台ruoyi ai免费开源5步搭好你的AI聊天与绘画平台 想给团队搭个AI助手开源项目看了一圈要么要钱要么文档劝退。ruoyi ai就是那只救场的手一个后端AI 应用大模型RAGvLLM Kubernetes 生产部署实战基于 Production Stack Helm Chart 的部署、验证与配置详解vLLM Kubernetes 生产部署实战基于 Production Stack Helm Chart 的部署、验证与配置详解 本文围绕 vLLM 官方文档人工智能大模型模型推理服务推理引擎本地部署Fission Helm Chartfission-all部署实战从安装、升级到生产配置全指南Fission Helm Chartfission all部署实战从安装、升级到生产配置全指南 Fission 是构建在 Kubernetes 之上的快速云原生后端上一篇Vue I18n 消息格式化完全指南命名、列表、HTML 与自定义格式化器实战下一篇csvtomd与其他表格转换工具对比优势、局限与最佳选择创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →