14.2.2 填写配置库

Config Server 所提供服务的属性资源,有几种方法可以进行设置。最基本、简单的选择是,提交 application.propertiesapplication.yml到 Git 存储库的根路径。

假设推送了一个名为 application.yml 的文件到 Git 存储库中。这个配置文件与您在上一节中的配置不同,它是将由 Config Server 来提供配置服务的。假设在 application.yml 中您配置了以下属性:

server:
  port: 0
eureka:
  client:
    service-url:
      defaultZone: http://eureka1:8761/eureka/

虽然 application.yml 中的属性不多,但它所做的配置是相当重要的。它告诉应用程序中的每个服务两个重要信息:一个是 Eureka 的注册地址,另一个是随机选择可用端口。这意味着,当调整在第 14.3 节中开发的服务以适配使用 Config Server 时,您可以在服务中删除 Eureka 的配置了。

作为 Config Server 的客户机,可以在命令行中使用 curl 查看 Config Server 提供的新配置数据:

$ curl localhost:8888/someapp/someconfig
{
  "name": "someapp",
  "profiles": [
    "someconfig"
  ],
  "label": null,
  "version": "95df0cbc3bca106199bd804b27a1de7c3ef5c35e",
  "state": null,
  "propertySources": [
    {
      "name": "http://localhost:10080/habuma/tacocloudconfig/application.yml",
      "source": {
        "server.port": 0,
        "eureka.client.service-url.defaultZone":"http://eureka1:8761/eureka/"
      }
    }
  ]
}

与您之前对 Config Server 请求时的响应数据不同,此响应在属性 propertySources 数组中包含一些内容。具体来说,它包含一个 name 属性,指明引用的 Git 存储库。而 source 属性中,包含您推入 Git 存储库的那些具体属性。

在 GIT 子路径存储配置

依据您组织的实际情况,您可以选择将配置存储在 Git 存储库子路径而不是根路径中。例如,假设您要将配置存储在名为“config”的子目录中,您需对 spring.cloud.config.server.git.search-paths 属性进行设置,以告诉 Config Server 从 /config 而不是从根目录获取配置:

spring:
  cloud:
    config:
      server:
        git:
          uri: http://localhost:10080/tacocloud/tacocloud-config
          search-paths: config

请注意 spring.cloud.config.server.git.search-paths 可设置多个值。您可以设置用逗号分隔的多个路径,以便让 Config Server 从多个路径中获取属性配置:

spring:
  cloud:
    config:
      server:
        git:
          uri: http://localhost:10080/tacocloud/tacocloud-config
          search-paths: config,moreConfig

这将设置 Config Server 从 /config/moreConfig 中获取配置。

指定搜索路径时,也可以使用通配符:

spring:
  cloud:
    config:
      server:
        git:
          uri: http://localhost:10080/tacocloud/tacocloud-config
          search-paths: config,more*

在这里,Config Server 将从 /config 以及任何名称以 more 开头的子目录中获取配置。

从分支或标签获取配置

默认情况下,Config Server 从 Git 的 master 分支获取配置。从客户机上发送请求时,可以指定特定分支或标签,如图 14.2 那样。但您可能会发现,修改 Config Server 的默认行为,改为从某个特定 Git 标签或分支获取配置,可能会很有用。这可以在 spring.cloud.config.server.git.default-label 属性中指定具体分支或标签,以覆盖默认值。

例如,以下设置将 Config Server 设为从“sidework”的分支(或标签)中获取配置:

spring:
  cloud:
    config:
      server:
        git:
          uri: http://localhost:10080/tacocloud/tacocloud-config
          default-label: sidework

按照上面的设置,配置将从“sidework”分支获取,除非客户端在请求中指定了其他分支。

GIT 存储库的授权校验

Config Server 使用的 Git 存储库,很可能需要使用用户名和密码进行权限验证。那样的话,您就需要为 Config Server 指定 Git 存储库的身份凭据信息。

属性 spring.cloud.config.server.username 以及 spring.cloud.config.server.password 可以设置 Git 存储库的用户名和密码。如下配置展示了如何设置这些属性:

spring:
  cloud:
    config:
      server:
        git:
          uri: http://localhost:10080/tacocloud/tacocloud-config
          username: tacocloud
          password: s3cr3tP455w0rd

这将用户名和密码分别设置为 tacoclouds3cr3tP455w0rd

使用 curl 发送相关请求以伪装成客户端,可以帮助您了解 Config Server 的详细信息。 Config Server 还可以做很多事情。但是微服务不会使用 curl 来获取配置数据。在我们进一步了解 Config Server 更多的提供配置的方式之前,让我们来看一下,微服务是如何使用 Config Server 的服务的。

最后更新于