LoginSignup
1
0

More than 1 year has passed since last update.

SpringCloudConfig Server にRailsからつなぐ

Last updated at Posted at 2021-09-04

About

Spring Bootを利用するProjectからRailsを利用するProjectにうつり、ふと、RailsからもSpringCloudConfigサーバーにつなげるクライアントGemがあるのではないかと思って調べてみました。

Spring Cloud Configとは

設定情報をGitなどで管理し、設定情報を返すサーバーの役割をするマイクロサービス(Spring Cloud Config Server) と、クライアントとなる設定を利用するマイクロサービスにより設定情報を活用します。クライアントの設定を利用するマイクロサービスは、 Spring Cloud Config ClientのJarをロードすることと、 Config ServerのURL等情報のみで設定を利用することができます。

ConfigServerをたてます

github上でサンプルを探してConfigServerをたてます。 こちらを利用しました。

README.md  にあるように実行するか、 mvnw spring-boot:runで実行できますが、少しだけ中身に触れておきます。

pom.xml(抜粋)はつぎのとおりで、 bootのバージョンは2.3.3.RELEASEで、spring-cloud-config-serverをdependencyに追加します。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.3.RELEASE</version>
        <relativePath/>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>

....

設定情報のデータソースは、 bootstrap.yml に次のように定義します。

spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://{設定を保存するリポジトリ}
          searchPaths:  {リポジトリ内で設定を保存するフォルダ}

Spring Boot Application に以下のようにアノテーション@EnableConfigServerを追加します。

@SpringBootApplication
@EnableConfigServer
public class Application {
    public static void main(String args[]) {
        SpringApplication.run(Application.class, args);
    }
}

設定を利用するクライアントのマイクロサービスは、 pom.xml に次のように  config client のdependencyを追加し、

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-config-client</artifactId>
</dependency>

bootstrap.ymlに次のように、  config server のURLを設定します。

pring:
  application:
    name: config-client-test
  cloud:
    config:
      env: default # optional
      label: master # optional
      uri: http://localhost:8888 # optional

Rubyでの利用について

ここまでは全段で、 spring-bootでのconfig serverの利用についてを簡単に記載しました。ここからはRubyでの利用について記載していきます。
Googleで検索してみると、

が見つかったのですが、 今回試したRails6には対応していないようでした。また、config serverのサポートバージョンもコミットコメントからv2までのようです。もうひとつは、

というものでした。こちらは、 Gemfileにgem 'scc_ruby'を追加するのみで利用できました。次のように利用できます。

h = SccRuby::Api.fetch('http://localhost:8888', 'sample', Rails.env)

クライアントライブラリは要らない?

ここで思ったのが、HTTPでとってこれば良いので、クライアントライブラリを利用しなくても良いのではということです。例えば次のように取得できます。

uri = URI.parse("http://localhost:8888/sample/" + Rails.env)
response = Net::HTTP.get_response(uri)

他の言語のクライアント

中は見ていませんが、  python のクライアントに次のようなものがあるようです。

spring-config-clientのほうは 2019から更新されていませんが、config-clientは 2021/04の更新がありました。

go-langも調べてみました。

も 2021の更新がありました。

まとめ

  • Spring Cloud Configに他の言語のクライアントから繋ぐことができる
  • クライアントライブラリを利用することができるが、ライブラリが古いことがありそう
  • ライブラリを利用しなくてもHTTPで繋いで設定を取得することができる。
1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0