🕌

Istioに入門する

2024/12/22に公開

IstioとService Mesh

Istioは、開発されたサービスメッシュ・プラットフォームの一つです。

https://istio.io/latest/

サービスメッシュは、マイクロサービスの間の通信を簡単に管理し、監視し、保証するためのレイヤーです。

Istioは、Envoyプロキシを使用したデータプレーンメシュとして、トラフィックのロードバランシングやポリシーの実装など、複雑な広い機能を提供します。

Envoyプロキシは、高性能なオープンソースのエッジおよびサービスプロキシで、サービス間通信の管理を効率化するために設計されています。HTTPやgRPCを含む多様なプロトコルをサポートし、ロードバランシング、トラフィックルーティング、観測性、セキュリティ機能を提供します。

https://www.envoyproxy.io/

今回は個人の興味として、istioの機能を検証しています。基本的にローカル環境でMinikube使って単一クラスタ・単一ノードで検証します、今後は必要であればKindを使って多数のノード環境で検証してみます。

Bookinfoを使ったIstioの実装

今回はローカルでクラスタを作ります、Minikubeを使います。ここでは、Minikubeを使用し、Bookinfoアプリを使ってIstioの実装手順を紹介します。

Istioのダウンロードとインストール

  1. Istioのダウンロード

curl -L https://istio.io/downloadIstio | sh --

  1. istioctl クライアントをパスに追加する

export PATH=$PWD/bin:$PATHH

  1. Istioのインストール

istioctl install -f samples/bookinfo/demo-profile-no-gateways.yaml -y

  1. deafultのnamespaceにIstioのラベルを設定、defaultのnamespaceにアプリケーションをデプロイする際に、Istioのsidecarを自動設定するようになります

kubectl label namespace default istio-injection=enabled

  1. Bookinfoのデプロイするために、Kubernetes Gatewayを設定します
kubectl get crd gateways.gateway.networking.k8s.io &> /dev/null || \
{ kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd?ref=v1.2.0" | kubectl apply -f -; }

  1. Bookinfoをデプロイします

kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/platform/kube/bookinfo.yaml

7. クラスターの外からアクセスできるために、以下の設定を実施します

(1)Bookinfo アプリケーションの Kubernetes Gateway を作成します

kubectl apply -f samples/bookinfo/gateway-api/bookinfo-gateway.yaml

(2)アノテーションを使用してゲートウェイのサービスタイプを ClusterIP に変更します

kubectl annotate gateway bookinfo-gateway networking.istio.io/service-type=ClusterIP --namespace=default

(3)ゲートウェイの状態を確認します

kubectl get gateway

  1. kubectl port-forwardコマンドによりクラスターの外からBookinfoのページをアクセスします

kubectl port-forward svc/bookinfo-gateway-istio 8080:80

そして、http://localhost:8080/productpageを確認すればBookinfoのページを見れます

Kialiを使ったサービス構造の視覚化

Kialiは、Istioサービスメッシュを視覚化するためのツールです。Kialiを使うと、サービス構造やトラフィックの状況をグラフで解りやすく表示できます。

https://kiali.io/

Kialiをインストールします

kubectl apply -f samples/addons
kubectl rollout status deployment/kiali -n istio-system

Kialiのダッシュボードをアクセスします

istioctl dashboard kiali

以上です

イオングループで、一緒に働きませんか?

イオングループでは、エンジニアを積極採用中です。少しでもご興味もった方は、キャリア登録やカジュアル面談登録などもしていただけると嬉しいです。

皆さまとお話できるのを楽しみにしています!

https://engineer-recuruiting.aeon.info/

AEON TECH HUB

Discussion