vault-1.3.1版本为例,运用于SpringCloudConfig
By HashiCrop,Vault是一种密钥存储的服务工具软件,如大量的账户名、密码、Key加密Key等,它有灵活的权限控制、详细的操作记录、历史版本等。目前是有商用版和开源版提供,即支持命令行操作又支持UI管理界面,十分成熟且有好些年头了,支持命令行操作和Web管理。
官网:hashicorp-vault, 代码库:vault-github
Vault是HashiCrop公司推出,他们公司还有个产品叫:Consul,相信这个肯定知道的。
对于敢在官网直接放Github社区源代码链接的公司,天然有好感。官网菜单有个“learn”选项里面有非常详细的安装、启动、使用文档(都是英文),按着一步步很轻松就能掌握Vault。在国内访问网站经常会连不上,他们还没有提供PDF下载,对于新手来说会有掉链子的感觉。
安装的是1.3.1版本(目前最新了),配置分享给大家看看。实施的具体步骤就不说了,官网已经在傻瓜式介绍了,再啰嗦没有意义。它的配置采用他们自定义的HCL语法,代码也是采用Go编写同时开源了。
disable_mlock = true
ui = true
storage "MySQL" {
address = "127.0.0.1:3306"
username = "mysql"
password = "mysql"
database = "vault"
ha_enabled = "true"
}
listener "tcp" {
address = "127.0.0.1:8200"
tls_disable = 1
tls_disable_client_certs = 1
}
cluster_name = "cluter_vault"
disable_cache = true
log_level = "Debug"
api_addr = "http://127.0.0.1:8200"
吐槽一下官网文档中关于API这块就是坑,文档对于URL的PATH描述和示例都是错误的,如下:
$ curl
-H "X-Vault-Token: f3b09679-3001-009d-2b80-9c306ab81aa6"
-X GET
http://127.0.0.1:8200/v1/secret/foo
在path中是有关键字段的,如“data”,看下图:
官网在API请求路径描述上是错误的(应该是没及时更新),实在是害人不浅,但有个help接口是正确的可以帮助理解path的格式规范,如:http://localhost:8200/v1/secret/?help=1。作为SpringCloudConfig选项后台,目前到data层面的保存使用已经跑通也基本够使用,其他的后续再慢慢摸索。
下面列出常规的选择,其他等详细可以去官网看:>>> 点击跳转 <<<
前三种1、2、3是比较靠谱方式,稳定性自不用说,很多公司用来做服务的注册与发现集群(可能它们还有存储的功能),根据自己情况定。
4是传统数据库代表,一般选用mysql,因为会使用的人远远不只是工程师和DBA,普用性高且稳定可靠。5是最简单的存储选型了,相当于本地化了,与服务器绑定,迁移备份需要自己思考做方案。
推荐MySQL、其次1、2、3方案。cloud-parent/cloud-service-config-vault项目中采用的是mysql方案。
Mysql方案会涉及两张表:vaultvault_lock。vault是核心表,数据存储格式一律是“BLOB”,安全稳定谁也别想改。迁移也简单了,直接Copy。
思考定位:使用简单、稳定可靠、HA、数据备份。
在SpringCloudConfig后台选型中比较看好GitLab和Vault,相对来说个人更喜欢Vault,但集成难度和学习成本比不了GitLab轻松简单。作为企业DevOps一体化方案的一部分还是以GitLab为中心选型好些,毕竟CICD放在那且大多数工程师都会Git。