マイクロサービスを実施したいお客様がいる時に、頻繁に聞かれることは、「連携するサービスがあるのだが、それぞれのサービスを個別にデプロイしたい。」このような、要望に答えるテクニックとして、Consumer Driven Contract と言う手法があります。私も前から知っていましたが、実物を見たことがありませんでした。だから、それをGo言語で試してみて、それを含んだCI/CDのサンプルを作成してみました。
デプロイする先としてAzure上の Kubernetes を使っています。Azure上のKubernetesには馴染みがある人は少ないと思うので、Kubernetesのインストール、セットアップから、つまづくポイント、Kubernetesってなに?と言う人のための簡単なデモも一緒に作ってあります。
CI/CDの構築の場所としては、Visual Studio Team Servicesを使っています。このサービスは、日本では相当広まっていないですが、私的には快適すぎて手放せず、私がこのサービスを紹介したお客様はみんな喜んで使ってくれています!
最後に、Pactのイメージってなかなかわかないと思うので、Pact-Goのデモ動画もつけています。
動画はすべて私の解説入りなので、おひまなときにでもどうぞ!
あと、ここで、作ったサンプルはすべてGitHubで公開しています。PactをDockerにパックするための、Dockerfileや、k8sのyamlなども置いています。
Kubernetes を Azure上にセットアップする
ポータルを使って、デプロイ。再セットアップが可能な、ARMテンプレートコードの落とし方。
Azureでは、K8sをデプロイするのに3つの方法がありますが、文末のPPTを参考にしてください。
基本的な Kubernetes の使い方
デプロイや、ローリングアップデートなど
Azure Container Registryと シークレットの扱い
K8sでのシークレットの扱い
VSTSでの、CI/CDパイプライン
基礎的なセットアップです。yamlファイルの書き換えは、Replaceタスクと言う
タスクで実施します。詳細はパワーポイントを参考に!
Consumer Driven Contract Pact-go のサンプル
Pact-Goを使った、ConsumerDrivenContract。
ちなみに、実際に動かすには、PactBrokerをどこかにデプロイして、
テストを動かす時に、環境変数(PACT_BROKER_URL)に、そのURLを指定してください。
リソース
サンプルソースがはいったGitHubリポジトリ
Pact on kubernetes