1
mm200p 2019-02-21 09:03:14 +08:00
zookeeper 不能实现你的需求么?
|
2
pl01665077 2019-02-21 09:07:04 +08:00
直接存放在环境变量~
|
3
bantao 2019-02-21 09:11:17 +08:00
携程开源阿波罗?
|
4
Akagi201 2019-02-21 09:33:22 +08:00
consul?
|
5
Sharuru 2019-02-21 09:35:22 +08:00
Infrastructure as code 我觉得还行。
https://docs.microsoft.com/en-us/azure/devops/learn/what-is-infrastructure-as-code |
6
xcold 2019-02-21 09:39:46 +08:00 1
中间件服务阿里云 ACM https://www.aliyun.com/product/acm?spm=a2c4g.11174283.2.1.5f66613697SIwq
或者私有部署一套 nacos https://github.com/alibaba/nacos 或者 etcd https://github.com/etcd-io/etcd |
7
huhujin 2019-02-21 09:40:48 +08:00
携程 阿波罗
|
8
37Y37 2019-02-21 09:46:25 +08:00 1
前两天有个类似的帖子
https://www.v2ex.com/t/536210#reply13 我们有实践是基于 etcd+conf 做的,基于配置文件的管理,对运维友好, 实践方案: https://mp.weixin.qq.com/s/uGUvV4jl4YIvNztuepdC8A 携程 阿波罗对开发友好,如果开发语言用的 java,这个就更合适了 |
9
jingxyy 2019-02-21 10:06:11 +08:00 1
说一个对于小型系统的实践方案吧
使用简单格式的单一配置文件(方便查看、修改),通过环境变量指定配置文件路径(方便部署、切换,比如开发环境、生产环境等),配置文件不进 git (防止敏感信息泄露),git 库里放一个 config_example.json 之类的东西(方便队友),然后再约定一套命名机制。 |
10
zxfreedom 2019-02-21 10:25:31 +08:00
阿波罗+1
|
11
willvvvvv1 2019-02-21 13:21:37 +08:00
阿波罗+2
|
12
rayingecho 2019-02-21 13:38:24 +08:00 1
场景都没有说, 有点没头没尾的
应用配置管理(Apollo), 服务注册中心(Consul), 基础设施配置管理(Ansible) 都可以叫配置管理 |
13
ns2250225 OP @rayingecho 感谢回复,场景时应用配置管理,比如 Nginx 的配置管理,刚刚看了下 Apollo,好像并不能管理 Nginx 的配置呀,而且它需要 APP-KEY,需要修改老项目的代码才能应用配置,感觉不太合适
|
14
passerbytiny 2019-02-21 13:50:09 +08:00
|
15
ns2250225 OP @passerbytiny 😂,我没表述好
|
16
rayingecho 2019-02-21 13:55:13 +08:00
@ns2250225
这个是 Ansible 的典型场景 这些词其实也不是公认的名词, 确切地说 Apollo 只是一个配置中心, 应用需要自己来做一些集成 另外: 楼主你是全干工程师吗...前几天还看你问 k8s... |
17
ns2250225 OP @37Y37 感谢回复啊,因为主要是要管理 Nginx 的配置文件,暂时看来是您的方案比较适合我们,请问那个 web ui 能够开源吗😍
|
18
ns2250225 OP @rayingecho 😂最近要把虚拟机的项目迁移到 k8s 集群上面,好多东西要弄😭,暂时的方案是 Rancher 作为 K8s 的管理层,自己写了个 Web 界面调用 Rancher 作为应用层,CI/CD 就用 Rancher 的,负载均衡就用了 MetalLB,可是配置文件管理还是比较头大,其实还有日志管理的想借鉴下大家的意见😝,路很长啊感觉
|
19
37Y37 2019-02-21 14:17:28 +08:00
@ns2250225 不好意思 web ui 暂时不开源,不过这个没什么技术壁垒,基本上都是操作 etcd 的 web 解密,会开发的话实现很简单
看了上边说的那些要走的路,感觉都是 ops 相关的,我们都有实践过,且写过相关的文章介绍,感兴趣的可以看看,包括但不限于 CI/CD,日志管理等等 |
20
ns2250225 OP @37Y37 嗯,以关注,还有个问题想请教下,你们是怎样把 confd 生成的配置文件,推送到容器或者目标机器的呀
|
21
37Y37 2019-02-21 14:59:43 +08:00
@ns2250225 confd 就是个 client 端的 agnet,需要部署在 client 端,例如容器或者目标机器里,直接生成到 client 本地,然后 check 配置文件-->重新加载配置
|
25
37Y37 2019-02-26 09:11:17 +08:00
ace
|
26
37Y37 2019-02-26 09:31:36 +08:00 1
@ns2250225 顺便再说一句我们为什么不需要考虑各个项目配置文件的不同,在 Docker 下是如何协作的
1. 为什么不需要考虑各个项目配置文件的不同,confd 模板文件我们并没有采用网上大部分的配置文件+kv 组合的方式,而是整个配置文件模板是一个 value,也就是说把配置文件的所有内容都存在一个 etcd 的 kv 中,而非存储配置文件中的个别内容,如下: ``` # cat /etc/confd/templates/nginx.conf.tmpl {{getv "/conf/project/env/nginx/nginx.conf"}} ``` 2. Docker 下的协作方式,我们是采用基础镜像+项目代码组成项目镜像的方式运行的,基础镜像包含项目的基础环境,其中就有 confd 服务,confd 服务有一个通用的 toml 配置,例如: ``` # cat /etc/confd/conf.d/nginx.conf.toml [template] src = "nginx.conf.tmpl" dest = "/tmp/nginx.conf" keys = [ "/conf/$PROJ/$ENVT/nginx/nginx.conf", ] check_cmd = "/usr/sbin/nginx -t -c {{.src}}" reload_cmd = "/usr/sbin/service nginx reload" ``` 在启动 Docker 的时候加两个环境变量,PROJ 和 ENVT 分别表示当前运行的项目和环境,confd 根据上边的配置加上这两个变量信息自动去 etcd 里边找到对应的 key,拿 value 填充到 1 中的模板文件中 所以整个配置文件的更新过程,我们都只需要关心 kerrigan 里的内容,其他的都不需要关心,全部自动完成。 |
27
ql562482472 2023-02-08 11:26:46 +08:00
如今使用 k8s 恐怕你这个就是 configmap 的使用场景了
|