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

使用Spring Cloud Config进行分布式配置:Vault 后端

ruisui882个月前 (04-30)技术分析18

Vault 后端

前文已经介绍过,Vault 是一种工具,它可以通过统一的接口对机密信息进行安全访问。为了使Config Server 能够使用该类型的后端,开发人员必须使用Vault 配置文件--spring.profiles.active=vault运行它。当然,在运行Config Server之前, 还需要安装并启动Vault实例。建议开发人员使用Docker来完成该任务。

由于这是本书第一次介绍与Docker相关的内容,并不是每个人都知道该工具,在本书第14章“Docker支持”中简要介绍了Docker, 并提供了它的基本命令和用例,因此,如果这是你第一次接触该技术,则不妨先跳到第14 章翻看一下其内容。对于那些熟悉Docker的人来说,则应该很容易理解以下命令示例,它将在开发模式下运行Vault 容器。开发人员可以使用VAULT_DEV_ LISTEN ADDRESS参数覆盖默认的侦听地址,或者使用VAULT _DEV_ _ROOT_TOKEN_ ID参数覆盖初始生成的根令牌的ID。

docker run --cap-add- IPC LOCK -d --name =vault -e

'VAULT DEV_ ROOT TOKEN ID=client' -P 8200:8200 vault

1. Vault入门

Vault提供了一个命令行接口,可用于向服务器添加新值并从服务器读取它们。以下显示了调用这些命令的示例。但是,由于我们将Vault作为Docker容器运行,因此,管理机密最方便的方法是通过HTTP API.

$ vault write secret/hello value=world

$ vault read secret/hello

HTTP API可用于我们的Vault 实例( 位于ht://192. 168.99.100:8200/v1/secret地址下)。调用该API的每个方法时,需要将令牌X-Vault-Token 作为请求头传递。因为我们在启动Docker容器时已经在VAULT_ _DEV. _ROOT_ TOKEN_ _ID 环境参数中设置了该值, 所以它等于client.否则,它将在启动期间自动生成,并且可以通过调用命令docker logsvault从日志中读取。要开始使用Vault, 开发人员实际上需要了解两种HTTP方法一POST和GET.在调用POST方法时,可以定义应该添加到服务器的机密列表。在以下curl命令示例中,它所传递的参数就是使用kv (key/value) 后端创建的,该后端的作用类似于键/值(Key/Value) 存储。

$ curl -H"X-Vau1t-Token: client" -H"Content-Type: application/json" -x

POST -d 'l"server . port": 8081, "sample. string.property": "Client

App", "sample . int.property": 1} '

http://192.168.99.100:8200/v1/secret/client-service

可以使用GET方法从服务器读取新添加的值。

$ curl -H "X-Vault-Token: client" -X GET

http://192.168.99.100:8200/v1/secret/client-service

2.与Spring Cloud Config集成

正如前文所述,开发人员必须使用-springprofiles active=vault参数运行Spring CloudConfig Server,这样才能启用Vault作为后端存储。要覆盖默认的自动配置设置,应该在spring.
cloud.config.server.vault.*键下面定义属性。以下示例显示了我们的示例应用程序的当前配置。在GitHub上也提供了这样一个示例应用程序,开发人员可以切换到confg. vault 分支tps:/github com/piomin/sample srinccou--tltree/config. vault)来访问它。

spring:

application:

name: config-server

cloud:

config:

server :

vault:

host: 192.168.99.100

port: 8200

现在,开发人员可以调用由Config Server 公开的端点。虽然仍必须在请求头中传递令牌,但这一次它的名称是 X-Config-Token.

$ curl -X "GET" "http://localhost:8889/client-service/default" -H "X-

Config-Token: client"

其响应结果应该如下所示。这些属性是客户端应用程序的配置文件的默认属性。开发人员还可以添加所选配置文件的特定设置,方法是在逗号字符后面使用配置文件名称,以调用VaultHTTP API方法,如
htp:///2.168.99.100:8200/v1/secret/client service, zone1。如果调用路径中包含此类配置文件名称,则响应中将返回default和zone1配置文件的属性。

{

"name": "client-service",

"profiles": ["default"],

"label" :null,

"version":null,

"state" :null,

"propertySources":[{

"name" :"vault :client-service",

"source":{

"sample. int.property":1,

"sample. string .property":"Client App",

"server.port":8081

}

}]

}

3.客户端配置

使用Vault 作为Config Server 的后端时,客户端需要为服务器传递令牌,以便能够从Vault检索值。应使用bootstrap.yml 文件中的spring, cloud. configtoken属性在客户端配置设置中提供此令牌。

spring:

application:

name: client-service

cloud:

config:

uri: http://localhost:8889

token: client

其他功能

现在我们来看一看Spring Cloud Config其他一些有用的功能。

1.启动失败和重试

有时,如果Config Server不可用,则启动该应用程序没有任何意义。在这种情况下,开发人员可能会想要暂停一个有异常的客户端。为此,必须将引导配置属性spring cloud.cofigfailFast设置为true。 但是,这种比较激进的解决方案有时候并不是开发人员想要的。如果仅仅是偶尔无法访问配置服务器,则更好的方法是继续尝试重新连接,直到成功为止。spring cloud config filFast属性仍然必须等于true, 但开发人员还需要将spring-retry库和springboot-starter. aop添加到应用程序类路径中。默认行为将假定重试6次,初始退避(Backoff)重试间隔为1000毫秒。开发人员可以使用spring. cloud.configretr.*配置属性覆盖这些设置。

2.保护客户端的安全

与服务发现相同,开发人员可以使用基本身份验证来保护配置服务器。使用Spring Security可以在服务器端轻松启用它。在这种情况下,客户端仅需设置bootstrap.yml文件中的用户名和密码。

spring:

cloud:

config:

uri: https://localhost:8889

use rname: use r

password: secret

本文给大家讲解的内容是Vault后端

  1. 下篇文章给大家讲解的是自动重新加载配置
  2. 觉得文章不错的朋友可以转发此文关注小编;
  3. 感谢大家的支持!

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

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

本文链接:http://www.ruisui88.com/post/3707.html

分享给朋友:

“使用Spring Cloud Config进行分布式配置:Vault 后端” 的相关文章

Git分布式系统---Gitlab多人工作流程

前言在上一次推文中,我们已经很清楚的讲解了如何创建本地仓库、提交(push)项目到远程仓库以及从远程仓库clone(克隆)项目到本地的相关操作。大家可以先去看前面的推文(快速掌握Git分布式系统操作)点击查看目前无论你是否步入社会还是在校学生,都会使用Gitlab来进行团队的代码管理。(可以这样说:...

HTML5学习笔记三:HTML5语法规则

1.标签要小写2.属性值可加可不加””或”3.可以省略某些标签 html body head tbody4.可以省略某些结束标签 tr td li例:显示效果:5.单标签不用加结束标签img input6.废除的标签font center big7.新添加的标签将在下一HTML5学习笔记中重点阐述。...

多项修正 尼康D4s发布最新1.10版固件

尼康公司与2014年8月27日发布了D4s的最新固件,固件版本号为C:1.10。这次固件升级,主要解决了一些BUG,并且对拍摄菜单与相机操作做了一定调整。下面是本次新固件的具体信息:尼康发布D4s最新C固件 1.10版对C固件升级到1.10版所作的修改:当选定运动VR模式并换上 AF-S 尼克尔 4...

Gemini应用在Android上广泛推出2.0闪电模式切换器

#头条精品计划# 快速导读谷歌(搜索)应用的测试频道在安卓设备的双子应用中推出了2.0闪电实验功能,现已向稳定用户开放。双子应用通过谷歌应用运行,目前推出的15.50版本中,用户可通过模型选择器体验不同选项,包括1.5专业版、1.5闪电版和2.0闪电实验版。2.0闪电实验模型提供了更快的响应速度和优...

Vue进阶(幺叁捌):vue路由传参的几种基本方式

1、动态路由(页面刷新数据不丢失)methods:{ insurance(id) { //直接调用$router.push 实现携带参数的跳转 this.$router.push({ path: `/particulars/${id}`,...

Vue页面传参详解

一、两种方式方法1:name跳转页面this.$router.push({name:'anotherPage',params:{id:1}})另一页面接收参数方式:this.$route.params.id示例:控制台展示:方法2:path跳转页面this.$router.push(...