基于Helm部署的旧版K8s Thingsboard如何修改JWT_TOKEN_EXPIRATION_TIME?
解决旧版Thingsboard社区版K8s部署修改JWT令牌过期时间的方案
方法1:修改配置文件并通过K8s ConfigMap挂载
旧版Thingsboard的JWT配置通常存放在thingsboard.yml或application.yml中,可按以下步骤操作:
- 从运行的Thingsboard Pod导出当前配置文件:
kubectl exec -it <你的thingsboard-pod名称> -- cat /config/thingsboard.yml > thingsboard.yml - 在本地编辑导出的文件,找到
security或jwt节点,添加/修改tokenExpirationTime参数(例如设置为30天,对应毫秒值2592000000):security: jwt: tokenExpirationTime: 2592000000 - 创建自定义ConfigMap:
kubectl create configmap tb-custom-config --from-file=thingsboard.yml - 修改Helm的
values.yaml,将该ConfigMap挂载到容器配置目录以覆盖默认文件:thingsboard: extraVolumeMounts: - name: custom-config mountPath: /config/thingsboard.yml subPath: thingsboard.yml extraVolumes: - name: custom-config configMap: name: tb-custom-config - 应用Helm更新:
helm upgrade <你的release名称> thingsboard/thingsboard -f values.yaml
方法2:直接修改数据库系统配置项
部分旧版Thingsboard会将核心配置存储在数据库中,可直接操作数据库:
- 进入数据库Pod(以PostgreSQL为例):
kubectl exec -it <你的数据库pod名称> -- psql -U <数据库用户名> -d <thingsboard数据库名> - 查询JWT过期时间的配置记录:
SELECT * FROM tb_configuration WHERE key = 'security.jwt.tokenExpirationTime'; - 更新或插入配置值:
-- 已有记录则更新 UPDATE tb_configuration SET value = '2592000000' WHERE key = 'security.jwt.tokenExpirationTime'; -- 无记录则插入 INSERT INTO tb_configuration (key, value, type) VALUES ('security.jwt.tokenExpirationTime', '2592000000', 'SYSTEM'); - 重启Thingsboard Pod使配置生效:
kubectl rollout restart deployment/<你的thingsboard-deployment名称>
注意事项
- 操作前务必备份配置文件和数据库,避免数据丢失或服务异常。
- 重启Pod会导致短暂服务中断,建议在低峰时段执行。
- 集群部署场景下,需确保所有节点都加载修改后的配置。
内容的提问来源于stack exchange,提问作者Seungbae Ji
相关产品推荐
相关产品推荐

