首页 / 资讯中心 / 文章详情

Olares 应用环境变量管理完全指南:从设置界面到控制面板的 Kubernetes 级修改

Olares 应用环境变量管理完全指南:从设置界面到控制面板的 Kubernetes 级修改 ★ FEATURED ARTICLE
云原生后端运维【免费下载链接】TerminusOpen-Source Personal Cloud OS for Always-On Agents项目地址https://gitcode.com/gh_mirrors/terminus2/Terminus点击查看免费下载应用环境变量决定了应用在容器中的运行方式——包括应用配置、服务连接以及其他运行时设置。本指南以 Olares 内置的设置 应用入口为主线系统讲解如何在 Olares 中查看、编辑应用专属变量与系统级环境变量并深入控制面板演示如何定位变量在 Kubernetes 资源中的存储位置Deployment、Configmap、Secret通过 YAML 编辑器直接修改部署变量、配置字典和保密字典涵盖常规应用与 C/S 架构应用如 Ollama、Jellyfin、DeerFlow的完整实操路径。读完本文你将掌握通过图形界面安全修改应用变量的方法判断变量归属应用专属 vs 系统引用的技巧在控制面板中按资源类型精准定位并修改变量、手动重启工作负载使配置生效的完整流程以及变量修改后不生效时的排查与重启策略。查看应用的环境变量在 Olares 中所有应用的环境变量都可以通过统一的图形界面入口查看前往设置应用。在应用列表中选择目标应用。在环境变量部分点击管理环境变量。管理环境变量页面会列出当前应用正在使用的所有环境变量理解环境变量类型根据应用的配置方式页面中会出现两类变量它们的可编辑性截然不同变量类型说明可编辑性应用专属变量应用本身定义的变量直接在应用的环境变量列表中定义正常显示可直接在当前页面编辑引用的系统环境变量应用通过ValueFrom引用的系统全局变量只有当应用实际使用这些变量时才会显示页面中呈置灰状态无法直接编辑应用专属变量由应用自身或其安装包定义直接属于该应用可在管理环境变量页面中直接修改。引用的系统环境变量来自系统级配置SystemEnv或用户级配置UserEnv只有当应用的AppEnv通过ValueFrom.EnvName引用了这些全局变量时它们才会出现在本页。这类变量在此页面为只读若要修改请参考设置系统级环境变量。从源码角度这一区分在framework/app-service/pkg/apiserver/handler_appenv.go中实现getAppEnv返回应用命名空间下AppEnv资源的Envs列表而updateAppEnv在写入时会校验existingEnv.Editable对非可编辑变量直接拒绝修改当新值来自ValueFrom.EnvName时还会查询SystemEnvList与UserEnvList来解析引用变量的有效值GetEffectiveValue()。编辑应用专属变量对于应用专属变量修改流程非常直接在变量列表中找到要编辑的变量。点击该行右侧的编辑图标edit_square。在弹出的对话框中更新变量值点击确认。点击页面底部或右上角的应用按钮提交更改。提交后应用会自动重启新配置随之生效。前端实现的提交机制Olares 控制面板的前端页面apps/packages/app/src/pages/settings/Developer/pages/SystemEnvironmentPage.vue采用暂存更改 批量提交的设计每次编辑操作只把变更写入内存中的pendingChanges集合并提示更改已临时保存只有点击应用按钮时submitAllChanges才会把系统变量与用户变量分开分别调用updateSystemEnv和updateUserEnv两个批量接口。如果离开页面时还有未提交的更改前端会弹出警告对话框。对应的 API 定义位于apps/packages/app/src/api/settings/env.ts其中应用级接口为GET/PUT /api/env/apps/{appName}/env系统级接口为GET/PUT /api/env/systemenvs用户级接口为GET/POST/PUT/DELETE /api/env/userenvs。在控制面板中配置变量除设置页面外Olares 还允许你通过控制面板直接查看和修改应用的环境变量适用于调试、功能配置或临时调整场景。:::info 重要提示 在控制面板中直接修改的变量在应用升级后不会保留。如需永久配置请设置系统级环境变量或使用应用自身的设置项。 :::确定变量的存储位置应用中的环境变量可以存储在不同类型的 Kubernetes 资源中。了解目标变量存储在哪个资源中决定了你如何修改它、以及修改后是否需要手动重启资源类型典型内容修改后是否需要重启部署Deployment直接的键值对自动重启配置字典Configmap配置数据、启动参数、配置文件需手动重启保密字典Secret敏感数据如密码、令牌、凭证需手动重启从 Kubernetes 语义看Deployment 中的env字段变更会直接触发 Pod 滚动更新自动重启而 Configmap/Secret 是独立资源修改后工作负载不会自动感知必须重启 Deployment 才能让新值注入容器。常规应用通过 YAML 判断注入方式要确定变量存储在哪里可在控制面板中打开应用的部署 YAML查看speccontainers部分。注入方式会告诉你变量的来源env变量直接在部署中以键值对的形式定义。envFrom配合configMapRef变量存储在引用的 Configmap 中。valueFrom配合secretKeyRef变量存储在引用的 Secret 中。例如在下面的 YAML 中envFrom引用了 Configmaplobechat-config而env直接定义了PGID、PUID和TZspec: containers: - name: lobechat image: docker.io/beclab/lobehub-lobehub:2.1.18 ports: - name: http containerPort: 3210 protocol: TCP envFrom: - configMapRef: name: lobechat-config env: - name: PGID value: 1000 - name: PUID value: 1000 - name: TZ value: Etc/UTC上述三种注入方式恰好对应 Olares 中AppEnv资源对EnvVarSpec的建模framework/app-service/controllers/userenv_controller.go等控制器会遍历AppEnv.Envs把其中的ValueFrom.EnvName解析为系统/用户环境变量的实际值再同步生成或更新 Deployment 的env字段——这就是设置页面修改系统变量 → 应用自动生效链路的关键环节。C/S 架构应用跨命名空间定位部分应用采用客户端/服务器C/S架构例如Ollama。它们的变量分布在两个不同的命名空间中用户命名空间存放客户端资源。系统命名空间存放服务端资源。对于 C/S 应用环境变量通常存储在跨两个命名空间的 Configmap 中。根据你要修改的内容前往正确的命名空间要修改外部访问行为前往用户命名空间查找名称中包含nginx或sidecar的 Configmap如nginx-config。要修改应用核心参数前往系统命名空间查找名称中包含env、config或类似标识的 Configmap如ollama-env。这一命名约定与 Olares 的资源布局保持一致用户命名空间承载着应用对外访问的前置代理资源nginx/sidecar而系统命名空间存放服务端工作负载及其配置。修改部署中的变量此方法适用于直接调整工作负载。下面的示例更改Jellyfin的时区使媒体库显示本地时间戳而不是 UTC在控制面板的浏览面板中选择 Jellyfin 项目。在部署资源组下点击jellyfin然后点击编辑图标edit_square。在 YAML 编辑器中找到containers部分定位 jellyfin 的env字段更改TZ的值env: - name: PGID value: 1000 - name: PUID value: 1000 - name: UMASK value: 002 - name: TZ value: Asia/Shanghai # 原为 Etc/UTC点击Confirm。Pod 将自动重启以使更改生效。由于env直接定义在 Deployment 中修改后 Kubernetes 会触发滚动更新因此无需手动重启。修改配置字典中的变量此方法用于添加第三方 API 密钥、修改启动参数或更新配置文件。修改后必须重启关联的工作负载才能生效。常规应用 {#modify-standard-apps}以下示例向DeerFlow的配置中添加 Tavily API 密钥以启用网络搜索在控制面板的浏览面板中选择 DeerFlow 项目。在配置字典下点击deerflow-config。在资源详情页点击右上角的编辑图标edit_square打开 YAML 编辑器。在data部分下添加以下键值对SEARCH_API: tavily TAVILY_API_KEY: tvly-xxx # 你的 Tavily API Key点击Confirm保存更改。返回部署deerflow点击重启。在确认对话框中输入deerflow然后点击Confirm。等待状态图标变为绿色表示新配置已加载。C/S 架构应用 {#modify-cs-apps}根据你要修改的内容你可能需要在用户命名空间、系统命名空间或两者中修改变量。在用户命名空间中修改客户端设置以下步骤将Ollama的代理读取超时从300s改为600s在控制面板的浏览面板中选择 Ollama 项目。在部署资源组下点击ollamav2然后点击编辑图标edit_square。在 YAML 编辑器中找到containers部分定位并检查env字段。这里的配置引用了nginx.conf。点击Cancel关闭编辑器这一步只是确认变量来源真正的修改在配置字典中完成。展开配置字典点击nginx-config点击右上角的编辑图标edit_square。在 YAML 编辑器中找到data部分定位nginx.conf键将proxy_read_timeout的值从300s改为600s。点击Confirm。返回部署ollamav2点击重启使更改生效。等待状态图标变为绿色表示新配置已加载。在系统命名空间中修改服务端设置以下步骤将Ollama的最大加载模型数从3改为5在控制面板的浏览面板中向下滚动并点击System展开系统部分。选择ollamaserver-shared在部署资源组下点击ollama再点击编辑图标edit_square。在 YAML 编辑器中找到containers部分检查envFrom字段。这里的配置引用了ollama-env。点击Cancel关闭编辑器。返回配置字典点击ollama-env实例点击右上角的编辑图标edit_square。在 YAML 编辑器中找到data部分将OLLAMA_MAX_LOADED_MODELS的值从3改为5。点击Confirm。返回部署ollama点击重启使更改生效。等待状态图标变为绿色表示新配置已加载。修改保密字典中的变量保密字典Secret中的修改流程与配置字典完全相同。根据你的应用类型遵循上述常规应用或 C/S 架构应用中的步骤即可。:::info 关键注意事项 当你打开保密字典的 YAML 编辑器时data字段下的所有值都必须是 Base64 编码的——这是 Kubernetes Secret 的硬性要求直接写入明文会导致资源创建或更新失败。 :::常见问题修改配置字典或保密字典后更改未生效这是最高频的坑修改配置字典或保密字典后关联的工作负载不会自动重新加载配置。因为 Configmap/Secret 与 Pod 的解耦设计你必须重启工作负载才能读取新值。使用以下任一方法重启在控制面板中重启进入应用所在命名空间的部署资源组点击目标工作负载然后点击重启。通过应用市场或设置重启如果不确定应该重启哪个工作负载可以采用暂停 → 恢复的方式进入应用市场我的 Olares点击应用操作按钮旁的下拉箭头选择暂停然后再点击恢复。进入设置应用点击应用点击暂停然后点击恢复。这两种方法都会重新加载配置字典或保密字典中的最新配置从而使更改生效。如何区分自动重启与手动重启场景可结合上文资源类型表快速判断修改 Deployment 中直接定义的env键值对→ 自动重启修改envFrom引用的 Configmap 或valueFrom引用的 Secret → 必须手动重启。判断依据是 YAML 中变量的注入方式而非应用类型。了解更多设置系统级环境变量了解如何配置全局环境变量如第三方 API 密钥并理解OLARES_USER_前缀、系统配置与用户信息两大类别的锁定/编辑规则。系统环境变量的后端实现参考 handler_systemenv.go 与 systemenv_controller.go前者负责 API 层的增删改查与管理员权限校验后者通过监听SystemEnv变更、为引用它的AppEnv打上同步注解驱动应用环境变量的级联刷新。赞分享云原生后端运维【免费下载链接】TerminusOpen-Source Personal Cloud OS for Always-On Agents项目地址https://gitcode.com/gh_mirrors/terminus2/Terminus点击查看免费下载相关推荐Olares 安装环境变量完全参考用 17 个变量定制 Kubernetes、GPU、FRP 与账户配置Olares 安装环境变量完全参考用 17 个变量定制 Kubernetes、GPU、FRP 与账户配置 本文是 OlaresTerminus 开源项目安云原生后端运维Slicer 应用设置完全指南设置面板、.ini 配置文件、命令行选项与环境变量详解Slicer 应用设置完全指南设置面板、.ini 配置文件、命令行选项与环境变量详解 导读 本文基于 Slicer 官方用户手册的 Application s医疗健康图像处理数据可视化桌面应用3D渲染Headscale管理界面现代化Tailscale控制面板完全指南Headscale管理界面现代化Tailscale控制面板完全指南 Headscale管理界面是一个专为Headscale控制服务器设计的现代化Web管理工具前端网络上一篇deeplearning4j libnd4j 链接期 Undefined Symbols 排查指南用 nm 定位缺失的模板实例化下一篇深入理解Reflector-Internalizing-Safety-Llama-3.1-8B-RL-i1-GGUF从模型架构到安全机制全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站