🎼

Istio-based Service Mesh add-on for AKS を試す

2023/10/20に公開

ずーっと横目で見つつ放置していた Istio-based Service Mesh add-on for AKS ですが、試してみましたので備忘録です。

試してみる

環境

  • Windows 10
  • Azure CLI

構築

まずは Istio-based Service Mesh add-on for AKS (以下、本アドオン) のインストールからですね。

今回は、新しく本アドオンが有効なクラスターを作成しました。

基本的にはドキュメントの手順に沿って実施すれば OK。おおまかな流れは下記のとおりです。

  1. 環境変数の設定
  2. AKS プレビュー拡張機能のインストール
  3. AzureServiceMeshPreview 機能フラグの登録
  4. 本アドオンが有効なクラスターを新規作成する
  5. サンプルアプリケーションをデプロイする

動作確認

ここから先は、下記のドキュメントを参照していきます。

外部からのアクセス (Ingress Gateway)

手順の中で実行する「az aks mesh」コマンドの詳細は、こちらのドキュメントを参照。

外部からのアクセスのために apply が必要な yaml ファイルは下記の通りです。

external.yaml
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: bookinfo-gateway-external
spec:
  selector:
    istio: aks-istio-ingressgateway-external
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: bookinfo-vs-external
spec:
  hosts:
  - "*"
  gateways:
  - bookinfo-gateway-external
  http:
  - match:
    - uri:
        exact: /productpage
    - uri:
        prefix: /static
    - uri:
        exact: /login
    - uri:
        exact: /logout
    - uri:
        prefix: /api/v1/products
    route:
    - destination:
        host: productpage
        port:
          number: 9080

項目の詳細は、それぞれ下記の Istio のドキュメントが参考になります。

kind: Gateway でゲートウェイを定義し、それを kind: VirtualService 側の gateways: で指定していますね。 spec.http.matchexact:prefix: はドキュメントによると、前者は「その文字列への完全一致」というもの、後者は「プレフィックスつまり前方一致」とのことです。他にも regex: という正規表現が使える指定もできるとのこと。

サンプルアプリケーション (http://<IP>:<PORT>/productpage) にアクセスし、下記のような応答が得られれば OK です。

内部からのアクセス (Internal Ingress Gateway)

こちらも基本的には公式ドキュメントの手順に沿って実施すれば OK でした。内容は大きく変わらないので割愛です。

その他

Istio コンポーネントのアップデートもドキュメント化されています。

ただ、現時点では 1.17 が最新とのこと。なお、自動的にパッチが適用されて Pod を再起動することでバージョンアップが完了する形になります。

まとめ

ということで、Istio Service Mesh add-on on AKS を試してみました。
まだプレビューが外れていないですが、サクッと試せるのは嬉しいですね!

Discussion