引き続き Consul を検証している.前回の記事では「HashiCorp Learn Platform」を活用して,Consul の「Getting Started」を実施したので,今回は「Getting Started with Kubernetes」を実施した.Consul に限らず,Kubernetes と Envoy を使ったマイクロサービスを試すことができる点もメリットだと思う.興味がある人は是非やってみると良いのでは!とは言え,Consul 要素は少ないようにも感じた.
「HashiCorp Learn Platform」には,Consul 以外にも Vault / Terraform / Nomad のコンテンツがあるので,継続的に学んでいく.
HashiCorp Learn 画面
画面は前回と同じで,基本的に動画を見ながら受講する.コマンドをコピーするときは下部にあるスクリプトを使う.
Learn how to deploy a service mesh with HashiCorp Consul : Getting Started with Kubernetes
今回実施した「Getting Started with Kubernetes」は,前回実施した「Getting Started」と比較すると内容は軽く,計2ステップある.
- 1 : Consul Installation to Minikube via Helm (8 min)
- 実際に動画を観ると 9 min を超えているし,実際に動作確認をしながら進めるため,1時間ぐらいを想定しておくと良さそう
- 2 : Deploy Consul with Kubernetes (8 min)
1 : Consul Installation to Minikube via Helm
Prerequisites
Minikube と Helm をインストールしておく.今回は brew
を使う.
$ brew cask install minikube $ brew install kubernetes-cli $ brew install kubernetes-helm
Task 1: Start Minikube and Install Consul with Helm
Step 1: Start Minikube
まず,Minikube を使って VirtualBox 上に Kubernetes を起動する.起動後に minikube dashboard
を実行すると,Kubernetes Dashboard にアクセスできる.
$ minikube start --memory 8192 $ minikube dashboard
Step 2: Install the Consul Helm Chart to the Cluster
今回は HashiCorp Training でも使われている「hashicorp/demo-consul-101」を使う.
さらに Consul Helm Chart を使う.Helm Charts の stable にもあるけど,どう違うんだろう.
最後に helm install
を実行する.
$ git clone https://github.com/hashicorp/demo-consul-101.git $ cd demo-consul-101/k8s $ helm init $ git clone https://github.com/hashicorp/consul-helm.git $ helm install -f helm-consul-values.yaml --name hedgehog ./consul-helm
Task 2: Deploy a Consul-aware Application to the Cluster
Step 1: View the Consul Web UI
minikube service list
を実行すると,起動しているサービスを確認できる.
$ minikube service list
|-------------|--------------------------------------|-----------------------------|
| NAMESPACE | NAME | URL |
|-------------|--------------------------------------|-----------------------------|
| default | hedgehog-consul-connect-injector-svc | No node port |
| default | hedgehog-consul-dns | No node port |
| default | hedgehog-consul-server | No node port |
| default | hedgehog-consul-ui | http://192.168.99.100:30367 |
| default | kubernetes | No node port |
| kube-system | kube-dns | No node port |
| kube-system | kubernetes-dashboard | No node port |
| kube-system | tiller-deploy | No node port |
|-------------|--------------------------------------|-----------------------------|
サービス一覧から hedgehog-consul-ui
を起動すると,Consul Web UI にアクセスできる.
$ minikube service hedgehog-consul-ui
Step 2: Deploy Custom Applications
アプリケーションを2種類起動する.
- Counting Service
- Dashboard Service
$ kubectl create -f 04-yaml-connect-envoy pod/counting created pod/dashboard created service/dashboard-service-load-balancer created
Step 3: View the Web Application
起動した Dashboard Service に接続するために,ポートフォワードを設定する.既に http://localhost:9002
にアクセスできるようになっている.ちなみに Counting Service と Dashboard Service は Envoy を経由した構成になっている.
$ kubectl port-forward dashboard 9002:9002 Forwarding from 127.0.0.1:9002 -> 9002 Forwarding from [::1]:9002 -> 9002
Task 3: Use Consul Connect
最後に Consul Intentions を設定する.まず,全サービスのアクセスを拒否する.
すると,Dashboard Service から Counting Service にアクセスできず,Unreachable エラーになる.
次に Dashboard Service から Counting Service にアクセスできるように許可すると,正常にアクセスできるようになった.
2 : Deploy Consul with Kubernetes
Consul Helm Chart を使って Kubernetes 上に Consul をデプロイする.「Consul Installation to Minikube via Helm」と重複する箇所も多く,一通り実施はしたけど,割愛する.
まとめ
- HashiCorp プロダクトを学ぶなら「HashiCorp Learn Platform」を活用する
- 今回は「Learn how to deploy a service mesh with HashiCorp Consul」の「Getting Started with Kubernetes」を実施した
- Minikube で起動した Kubernetes 上にマイクロサービスを起動して Consul Connect で制御できるようになった