首页 > 其他分享 >使用AgileConfig统一管理多项目配置

使用AgileConfig统一管理多项目配置

时间:2024-02-13 13:55:24浏览次数:45  
标签:8100 配置 db client AgileConfigDemo AgileConfig 统一

使用AgileConfig统一管理多项目配置

 

背景

一个设备的数字化管理软件系统,需要涵盖来料检验,部件装配,自动检验,装机激活,日常运营,维修保养,退役更换等生命周期流程,应用于生产车间,装机现场,客服运营等应用场景,业务复杂,角色众多,涉及的时间和空间范围都比较大,需要开发一系列的软件去解决不同应用场景的需求。.Net Core技术栈可以跨平台开发一系列云服务,浏览器客户端,PC桌面软件,安卓和iOS移动APP软件子系统,所有数据汇总管理,但是这一系列的软件却有着很多共同的配置管理需求,因为所管理的设备和数据是一致的,很多依赖的基础设施比如OSS,数据库,消息服务也是相同的。如果各个软件子系统独立管理配置,每当修改了一个基础设施,就要及时同步更新所有受影响的软件子系统,效率很低,还容易出错。AgileConfig统一配置管理中心能够很好的解决上述应用需求,MIT开源,资料丰富,简单易用,特别适合小企业,小团队管理多项目配置。

搭建AlileConfig云服务器

参考https://github.com/dotnetcore/AgileConfig编写docker compose脚本,由于AgileConfig镜像不支持直接配置为https访问,不符合网络安全的管理要求,所以再加一个nginx反向代理转为https访问。把SSL证书文件放在容器脚本当前目录,改名为myweb,挂载到nginx容器。

docker-compose.yml脚本,注意数据库文件路径指定到容器内部db子目录Data Source=db/myconfig.db,不然重建容器后配置数据库文件也没了。

version: '3'

services:

  agilecfg:
    container_name: agilecfg
    image: "kklldog/agile_config:v-1.7.1"
    expose:
      - 5000
    volumes:
      - ./data:/app/db
    environment:
      - TZ=Asia/Shanghai
      - adminConsole=true
      - db__provider=sqlite
      - db__conn=Data Source=db/myconfig.db
    restart: always

  agileproxy:
    container_name: agileproxy
    image: nginx:1.17.2
    ports:
      - "8100:8100"
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
      - ./myweb.pem:/etc/nginx/myweb.pem
      - ./myweb.key:/etc/nginx/myweb.key
    restart: always
    links:
      - agilecfg

nginx.conf配置,注意要开启支持从http连接升级协议建立websocket连接

 

map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }

server {
  listen 8100 ssl;
  ssl_certificate      myweb.pem;
  ssl_certificate_key  myweb.key;

  location / {
    proxy_pass http://agilecfg:5000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
  }
}
 

创建配置

访问AgileConfig容器所在的域名地址和端口8100,首次访问输入2次密码,即可创建admin账号的密码,然后登录进去。

首先创建应用。

然后在应用下面创建配置。

注意要给DEV、PROD等多个环境分别创建配置,完成后记得点【发布全部】,每个环境都要发布才会更新配置。

如果多个软件子系统需要共享部分配置,可以新建一个共享配置,打钩【公共应用】。

然后在软件子系统配置中关联这个公共应用的配置文件。

在控制台页面可以清晰看到每个软件子系统,引用了哪些公共配置。

客户端软件接入配置中心

新建Asp.Net Core项目AgileConfigDemo,NuGet安装AgileConfig.Client。在软件初始化时添加AgileConfig配置。

D:\Software\gitee\agileconfigdemo\AgileConfigDemo\AgileConfigDemo\Program.cs

 

var builder = WebApplication.CreateBuilder(args);

builder.Host.UseAgileConfig(new ConfigClient($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json"), e => Console.WriteLine($"configs {e.Action}"));

 

确保项目中用的多个环境都有一一对应的appsettings文件,每个appsettings文件引用对应的AgileConfig配置。

D:\Software\gitee\agileconfigdemo\AgileConfigDemo\AgileConfigDemo\appsettings.Development.json

//agile_config
"AgileConfig": {
  "appId": "AgileConfigDemo",
  "secret": "1B25FA68-7D88-4D40-8C85-2DE17FD56C0A",
  "nodes": "https://www.xxx.cn:8100", //多个节点使用逗号分隔,
  "name": "AgileConfigDemo",
  "env": "DEV"
  //"env": "PROD"//本机调试查看产品环境配置
}

D:\Software\gitee\agileconfigdemo\AgileConfigDemo\AgileConfigDemo\appsettings.Production.json

//agile_config
"AgileConfig": {
  "appId": "AgileConfigDemo",
  "secret": "1B25FA68-7D88-4D40-8C85-2DE17FD56C0A",
  "nodes": "https://www.xxx.cn:8100", //多个节点使用逗号分隔,
  "name": "AgileConfigDemo",
  "env": "PROD"
}

在项目中可以跟本机配置一样获取各种配置参数

public class DemoService
{
    private readonly IConfiguration _configuration;

    public DemoService(IConfiguration configuration)
    {
        _configuration = configuration;
    }

    public string Name => _configuration["Name"];
    public string MaxNameLen => _configuration["MaxNameLen"];
}

运行软件,可以看到控制台输出连接了AgileConfig的信息,并且显示当前使用的是哪个环境的配置文件。

trce: AgileConfig.Client.ConfigClient[0]

      client try connect to server wss://www.xxx.cn:8100/ws?client_name=AgileConfigDemo&client_tag=

trce: AgileConfig.Client.ConfigClient[0]

      client connect server wss://www.xxx.cn:8100/ws?client_name=AgileConfigDemo&client_tag= successful .

trce: AgileConfig.Client.ConfigClient[0]

      client send 'loaded' to server by websocket .

trce: AgileConfig.Client.ConfigClient[0]

      client load all the configs success by API: https://www.xxx.cn:8100/api/config/app/AgileConfigDemo?env=DEV , try count: 0.

 

 

DEMO代码地址:https://gitee.com/woodsun/agileconfigdemo

 

标签:8100,配置,db,client,AgileConfigDemo,AgileConfig,统一
From: https://www.cnblogs.com/sunnytrudeau/p/18014559

相关文章

  • 18.Jenkins的maven插件配置
    Maven的集成在Jenkins上构建Java项目时需要使用Maven来进行构建打包在执行job的机器上安装好maven下载maven程序压缩包解压maven压缩包配置环境变量下载maven插件进入菜单Dashboard->系统管理(ManageJenkins)->插件管理(ManagePlugins)在可选......
  • 树莓派相关配置
    树莓派配置记录1、网络配置系统为ubuntu16.04,配置wifi连接固定wifi网络,以及配置静态IP方便ssh登录,配置步骤:sudovim/etc/network/interfaces添加以下内容:autowlan0allow-hotplugwlan0ifacewlan0inetstaticaddress192.168.x.xxnetmask255.255.255.0gateway......
  • 第二十一天:mysql服务器配置和状态
    一、服务器配置和状态官方帮助文档:https://dev.mysql.com/doc/refman/8.0/en/server-option-variable-reference.htmlhttps://dev.mysql.com/doc/refman/5.7/en/server-option-variable-reference.htmlhttps://mariadb.com/kb/en/library/full-list-of-mariadb-options-syste......
  • 博客园配置
    Awescnb1.安利几款好看的博客园主题-CryFace-博客园(cnblogs.com)2.Awescnb手册|Awescnb(gitee.io)3.Awescnb配置选项(yuque.com)代码高亮显示行号Mac风格代码字体:FiraCode主题:atom-one-dark博客侧边栏公告无页面定制CSS代码禁用模板默认CSS#......
  • Ocelot+Consul的使用配置
    客户端代码配置"ConsulRegisterOptions":{"Address":"http://localhost:8500",//"http://host.docker.internal:8500",//Consul客户端地址"HealthCheck":"/healthcheck",//健康检查地址"Name":......
  • kube-apiserver限流配置
    k8sv1.19.0APF之前限流客户端访问kube-apiserver,限流参数有max-mutating-requests-inflight(默认值是200,对应操作类请求)和max-requests-inflight(默认值是400,对应查询类请求)。staging/src/k8s.io/apiserver/pkg/server/filters/maxinflight.goWithMaxInFlightLimit函数分别创建......
  • Vite+Vue根据环境配置Websocket地址
    前言上回说到,利用vite加载不同mode下的配置文件,可以实现不同运行环境下的参数配置。在前端应用中经常使用到Websocket,其地址同样可以在.env中间中配置。代码vite.config.ts代码的执行是在createApp之前,不可以在vite.config.ts中使用例如pinia、router等组件。可以使用import.me......
  • python3.9 + django4.1 + vue3 ,报错,无法访问配置的路由地址,Using the URLconf defined
    python3.9+django4.1+vue3,报错,无法访问配置的路由地址,UsingtheURLconfdefinedinStudentMgrBE.urls,DjangotriedtheseURLpatterns,inthisorder:-------------------------------------------------------------------------------无法访问 地址,报错如下: Us......
  • nginx容器配置方案
    nginx容器配置可以参考docker官网nginx页面的默认配置docker-nginx官网howtouseimage这里面提供了一些demo,可以帮助我们快速的启动nginx容器,并且除了常规的挂载、端口等基本配置外,还提供了以只读方式启动、以debug模式启动、设置日志等级环境变量等演示。下文仅是博主根据......
  • Vite+Vue3项目如何获取环境配置,并解决前端跨域问题
    步骤根目录新建.env.development和.env.production文件package.json配置启动参数vite命令启动项目时,指定mode参数,加载vite.config.ts文件。"dev":"vite--host0.0.0.0--port8093--modedevelopment","prod":"vite--port8093--host0.0.0.0--modepr......