サービスメッシュとは
Kumaのアーキテクチャ
Kumaはkuma-cp(Control-Plane)とkuma-dp(Data-Plane)の二つのアーキテクチャによって構成されます。
- kuma-cp
kuma-dpを管理・監視し、サービスメッシュ(Mesh)を構成する、Kumaの中枢です。開発者はKubernetes CRDsまたは、RESTful APIを用いてサービスメッシュを制御することができます。複数のkuma-cpを協調させ、複数のクラスターにまたがるZoneを展開することもできます。
- kuma-dp
Kumaの導入
環境
AKS / kubectl
AzureCLI
Azure Kubernetes Service / kubectl
az aks install-cli
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
`kubectl`を使ってKubernetesクラスターが立ち上がっているか確認をします。
kubectl get nodes
Kuma
kumactl
curl -L https://kuma.io/installer.sh | sh -
現時点での最新バージョンは`0.7.2`です。
ln -s ($pwd)/kuma-0.7.2/bin/kumactl /usr/local/bin/kumactl
kuma-cp
kumactl install control-plane | kubectl apply -f -
KumaでWebブラウザを通してダッシュボードを閲覧することができます。以下のコマンドで、`kuma-cp`をポートフォワードしてください。127.0.0.1:5681/guiへアクセスし、DataPlanesが一つもないことを確認してください。
kubectl port-forward svc/kuma-control-plane -n kuma-system 5681:5681
Meshの構築
デモ用のアプリケーションを立ち上げます。
`kubectl`を使って、名前空間`kuma-demo`にアプリケーションを立ち上げます。
これは、k8sを用いた一般的なアプリケーションで、通常通りServiceとDeploymentが定義されています。
kubectl apply -f https://bit.ly/demokuma
Kumaのダッシュボードか、以下を使ってDataplaneが立ち上がっていることを確認してください。
kubectl get dataplanes -n kuma-demo
立ち上がったウェブアプリケーションは127.0.0.1:8080で確認できます。
kubectl port-forward svc/frontend -n kuma-demo 8080:8080
この際重要な部分は、名前空間`kuma-demo`を宣言する際、`annotations`で`kuma.io/sidecar-injection`が有効になっていることです。
これにより、KumaはすべてのDeploymentに対して、自動的にサイドカープロキシ(Envoy)を挿入し`kuma-dp`を構成します。
apiVersion: v1 kind: Namespace metadata: name: kuma-demo namespace: kuma-demo annotations: kuma.io/sidecar-injection: enabled
おわりに
今回は、Kumaを使って実際にサービスメッシュを構成する部分まで行いました。次回以降、サービスメッシュの肝である監視や管理の部分について行っていきたいと思いますので、お付き合いいただけると幸いです。
では、また。