Kumaで学ぶサービスメッシュ-導入編

2020年度新入社員の野口です。
今回、CNDT2020での、サービスメッシュKumaのデモ環境の構築について担当させていただいたため、ここにその手順とポイントを残しておきます。
登壇については以下の記事をご参照ください。
 

サービスメッシュとは

サービスメッシュとは、マイクロサービスを開発する上で問題となるネットワークの複雑さを、サービスからネットワークを切り離すことで解決する考え方、及びそれを実現するソフトウェアのことを指します。
詳しくは以下の記事で解説しておりますので、参考にしていただけると幸いです。

[CNDT2020]サービスメッシュって何?

サービスメッシュを実現するソフトウェアとして最も有名なものはIstioLinkerdなどがありますが、今回は比較的機能が少なく分かり易いKong社が提供するKumaを題材にサービスメッシュを構築していきます。
 

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ではプロキシにはEnvoyProxyを使っていますが、kuma-dpにバンドルされているため、開発者はEnvoyProxyを理解せずにData-Planeを展開することができます。また、Kubernetesモードではプロキシの挿入も自動で行われるため、開発者はそれらも意識する必要がなくなります。

Kumaの導入

 

環境

今回はAzure Kubernetes Service上にサービスメッシュのデモ環境を構築していきます。
また、Kubernetesについて多少の知識がある方を対象にしています。

AKS / kubectl

AzureCLI

AzureCLIをインストールします。使用されているOSによって、以下に従ってインストールしてください。

Azure Kubernetes Service / kubectl

Azureで以下のようにAzure Kubernetes Serviceリソースを立ち上げてください。

次に、AzureCLIを用いてkubectlコマンドを扱えるようにします。

kubectlを使ってKubernetesクラスターを扱うため、資格情報をダウンロードします。

kubectlを使ってKubernetesクラスターが立ち上がっているか確認をします。

 

Kuma

AKS上にKong社が提供するサービスメッシュKumaをインストールしていきます。

kumactl

Kumaを扱うためkumactlをダウンロードします。

現時点での最新バージョンは0.7.2です。

パスが通っているディレクトリにkumactlを移しておくことをお勧めします。以下のようにリンクを張っても構いません。

 

kuma-cp

AKSにKumaのkuma-cpをインストールします。

KumaでWebブラウザを通してダッシュボードを閲覧することができます。以下のコマンドで、kuma-cpをポートフォワードしてください。127.0.0.1:5681/guiへアクセスし、DataPlanesが一つもないことを確認してください。

Meshの構築

デモ用のアプリケーションを立ち上げます。
kubectlを使って、名前空間kuma-demoにアプリケーションを立ち上げます。
これは、k8sを用いた一般的なアプリケーションで、通常通りServiceとDeploymentが定義されています。

Kumaのダッシュボードか、以下を使ってDataplaneが立ち上がっていることを確認してください。

立ち上がったウェブアプリケーションは127.0.0.1:8080で確認できます。

 

この際重要な部分は、名前空間kuma-demoを宣言する際、annotationskuma.io/sidecar-injectionが有効になっていることです。
これにより、KumaはすべてのDeploymentに対して、自動的にサイドカープロキシ(Envoy)を挿入しkuma-dpを構成します。

おわりに

今回は、Kumaを使って実際にサービスメッシュを構成する部分まで行いました。次回以降、サービスメッシュの肝である監視や管理の部分について行っていきたいと思いますので、お付き合いいただけると幸いです。

では、また。





ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!


ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメント投稿

メールアドレスは表示されません。


*