Consulに入門したのでGetting Startedの概観を記す

はじめに

@kakakakakkuさんから、ブログ継続のコツを聞きました。「ボリュームが小さい記事」を書くことだそうです。

読む側にも良さそうだし、時間がある時にやれば2,3個記事を書いてストックすることもできます。業務が忙しかったり風邪を引いたりしても毎週ブログを投稿することは継続できそうです。ボリュームが小さい記事の題材としていわゆる「Getting Started」をやると良いとのことです。これは既にやることが決まっているので時間もかからないし、躓いたところや自分の視点を加えればコンテンツになると思います。何よりGetting Startedは自分が知らない新しいツールなどをガイドされながら知れて楽しいです。

The HashiCorp Learn Platform

ということで、The HashiCorp Learn Platformをやります。Keynote: The HashiCorp Learn Platformで紹介されてます。HashiCorp製品の学習コンテンツが用意されているサイトです。今回はその中のConsulのGetting Startedをやりました。

Getting StartedのGetting Started的な立ち位置で記事を書こうと思います。

Consul

Consulは様々なプラットフォーム上で動作しているサービスを安全につなぐ製品です。サービスが繋がれた範囲をDatacenterと呼んでいて、Consulサーバはどのサービスがどこで動作しているかなどのデータを管理しています。Consulクライアントは1つに付き1つのサービスを監視して、Consulサーバと情報を同期しています。

Getting Startedにはだいたいこんなことが書かれてありました。

  • Server
    • Consul Datacenterは少なくとも1つのサーバーを持つ。
    • サーバはConsulの状態を管理する。
      • 他のサーバやクライアントの情報
      • どのサービスが有効か(サービスディスカバリの機能)
      • どのサービス同士の疎通が許可されているか(ネットワークポリシーの機能)
    • Consul KV
      • サーバはKey-Valueストアの機能があってConsul KVと呼ぶ。アプリケーションの動的な設定や、Vaultのバックエンドなど、様々な使い方ができる
  • Client
    • サービスの健康状態を知る時のソースとなる。
    • サービスの登録
    • ヘルスチェックの実行
    • サーバへ問い合わせ

Getting Started

ConsulのGetting Startedは全体像が見えないで手を動かすのはストレスでしたが、説明は丁寧でよいドキュメントでした。

Getting Startedで作るものは2つです。

その1

1個目はこれです。

f:id:gkuga:20191221174626p:plain

MacBookというのは自分の手持ちのPCという意味で書いてます。Consul agentをインストールします(バイナリ1つです)。そしてdevモードで動かします。devモードは検証用のモードだそうです。socatサービス*1webサービス

をConsulサーバに登録して、consul proxyを起動します。webサービスがsocatサービスに通信する時はproxyを必ず通るので、このサービス間の通信を管理できます。このconsul proxyもdev用のものだそうです。プロダクションではEnvoyを使えるようです。

「devモードだからこういう風になっていて本来はこうものを想定している」みたいな図があればもっとわかりやすいなと思います。たぶん↓みたいなことが想定されているものです。ざっくり描きました。Podだとサイドカーコンテナとして動く感じですかね。

f:id:gkuga:20191221180911p:plain

その2

Getting Startedで作る2個目はこれです。青いの四角は私のノートPC上で立ち上げた仮想マシンを表しています。

f:id:gkuga:20191221184346p:plain

仮想マシンを2台立ち上げて、それらを結びつけるというだけです。立ち上げた時にデフォルトでdc1というDatacenterに属しているようです。同じDatacenterに属しているけど、お互いを知らない状態なので、それらを結びつけるコマンドを打つというものです。

おわりに

  • Getting Startedをやって記事を書いているときが一番楽しいかも知れない
  • これくらいのボリュームなら毎週書いていけそう
  • ミドルウェアにサービスディスカバリを組み合わせてなんかどこかでうまいことできそう

参考

*1:ここでsocatサービスは、socatコマンドを実行しているだけの単純なEchoサービス