当前位置:首页 > 技术文章 > 正文内容

用base64手撸一个etcd配置中心

arlanguage3个月前 (01-31)技术文章30

Etcd,与SpringCloud config,Nacos,Zookeeper等作为注册中心和配置中心被广泛使用。它是一个高可用的分布式键值(key-value)数据库,并且安装配置简单,可以使用Rest API读写。

问题

先来看看Etcd webui操作etcd,get请求获取路径,返回key和value值,通过rest接口返回的key和value貌似做了某种编码,看着像base64啊,解析一把,果然是!!

云环境下,常常需要传递环境变量或配置etcd配置中心地址,但是每次部署etcd也挺费劲,还得占用资源,而我的应用只是个小小应用,没必要搞这么重吧。有没有一个简单点的方案呢?

思路

通过查找常用容器中的命令,发现大多基于Centos或linux的镜像都包含base64命令。如果通过环境变量将参数传递给容器,再结合容器启动shell脚本,解析参数并覆盖容器中应用配置,不就OK了!

说干就干。

  • 修改启动脚本

比如nginx镜像,官方镜像都提供一个docker-entrypoint.sh启动脚本,方便动态传递环境变量等操作。该脚本又加载了一个配置目录docker-entrypoint.d。

于是我编写了一个10-a.sh的shell脚本,该脚本的任务就是读取环境变量,并替换容器中的nginx配置文件。

  • 环境变量生成

环境变量如何写,如果写一大串看起来不好看,也容易出现解析问题,可以学习etc web的方式,将整个配置文件的内容用base64编码,然后赋值给环境变量。既有一定的安全性,又好维护。

你还在傻傻的通过互联网在线base64转码吗?linux提供了base64命令,哪里转码敲哪里!!

##编码
echo 123|base64
##解码
echo  'sadsalkjjk1=asdas11'|base64 -d

#编码 不换行转换文件内容
base64 -w 0 文件

#编码 换行转换文件内容
base64 文件

#解码base64
echo "base64串"|base64 -d
  • 修改基础镜像

这里需要编写一个简单的Dockerfile

FROM nginx
#添加自定义配置脚本
ADD 10-a.sh /docker-entrypoint.d/
  • 编译镜像
docker build -t nginx:myetcd .
  • 容器配置

这样,每次配置文件修改不用重新打镜像,只要替换环境变量即可,简单高效!!

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/1481.html

分享给朋友:

“用base64手撸一个etcd配置中心” 的相关文章

从入门到精通nginx——Nginx命令

Nginx命令查看命令选项:nginx -h启动命令:nginx -c file停止命令:nginx -s stop/quit平滑重启命令:nginx -s reload测试配置文件命令:nginx -tq??nginx -t:测试配置文件是否正确,默认只测试默认的配置文件conf/nginx.co...

tomcat配置域名的几种方式

我们自己在开发项目时一般使用的是ip访问,如果要对外发布是需要申请域名的,毕竟一个域名就相当于网站的代称。每个公司新上线的项目一般都会申请域名的,如果项目是部署在tomcat中的,那么如何进行配置呢?下边说一下其中的几种情况。同端口1一个域名对应一个项目注意:host节点中的appBase和Cont...

网页上出现503 Service Unavailable Error应该如何处理?

本头条号每天坚持更新原创干货技术文章,欢迎关注本头条号"Linux学习教程",公众号名称“Linux入门学习教程"。如需学习视频,请复制以下信息到手机浏览器或电脑浏览器上:zcwyou.com1. 前言在浏览网页时,最常见的错误之一是“503 Service Unavaila...

nginx支持跨域的方法 nginx配置支持跨域

在nginx的配置文件中添加允许跨域的响应头。参考nginx官方文档,添加响应头的方法如下:在conf文件的server作用域中添加如下响应头:server { listen 80; # 其他配置... # 允许跨域 add_header Access-Control-Allow-...

如何让Nginx更安全? nginx怎么保证高可用

网络安全的重要性不言而喻。那么小伙伴们有没有在日常使用 Nginx 的时候,特意去关注下它的安全配置呢?今天松哥和小伙伴们讨论一下如何安全的使用 Nginx,给大伙几个建议。一 使用最新版建议使用最新版的 Nginx,对于已经部署的 Nginx,要及时更新到最新版本,以确保所有已知的安全漏洞都已修补...

如何找出爬取网站的来源IP? 爬取网站源代码

1.背景最近网站数据库性能很不稳定,查询性能在某段时间很慢,服务器CPU也很高,平常时间很低,感觉被爬虫恶意搞了,因此我分析了一下最近的nginx访问日志2.方法找出访问量最大20个ip[root@100 nginx]# cat liuhaihua.access.log | awk -F "...