Service Mesh (ASM) では、データプレーンのクラスターの Kubernetes API を使用して、Istio リソースの作成、削除、変更、およびクエリを実行できます。 また、Helm を使用してクラスター内のアプリケーションを管理することもできます。 このトピックでは、データプレーンのクラスターの Kubernetes API を使用して Istio リソースにアクセスする方法について説明します。
前提条件
Enterprise Edition または Ultimate Edition の ASM インスタンスが作成されており、ASM インスタンスの Istio バージョンが 1.12.4.50 以降であること。 詳細については、「ASM インスタンスを作成する」および「ASM インスタンスを更新する」をご参照ください。
クラスターが ASM インスタンスに追加されていること。 詳細については、「ASM インスタンスにクラスターを追加する」をご参照ください。
背景情報
Kubernetes API は、HTTP によって提供されるリソースベースのプログラマティック インターフェイスです。 POST、PUT、PATCH、DELETE、GET などの標準 HTTP メソッドをサポートしています。 これらのメソッドを使用して、デプロイメントやサービスなどのプライマリクラスターリソースのクエリ、作成、更新、および削除を実行できます。 詳細については、「Kubernetes API Concepts」をご参照ください。
注意事項
データプレーンにクラスターが 1 つだけ含まれている ASM インスタンスの Istio リソースにアクセスするには、Kubernetes API を使用することをお勧めします。 データプレーンに複数のクラスターが含まれる ASM インスタンスでこの機能を有効にすると、すべてのクラスターの Kubernetes API を使用して、ASM インスタンスの Istio リソースの作成、削除、変更、およびクエリを実行できます。
データプレーンのクラスターの Kubernetes API を使用して Istio リソースにアクセスできるようにする機能を有効にした後、クラスターから istio-system 名前空間を削除することはできません。 istio-system 名前空間を削除するには、まず ASM インスタンスからクラスターを削除する必要があります。
データプレーンのクラスターの Kubernetes API を使用して Istio リソースにアクセスできるようにする機能を有効にした後、設定が有効になるまで 1 ~ 2 分待ちます。
データプレーンから名前空間を削除しても、コントロールプレーンの対応する名前空間とコントロールプレーンの名前空間内の Istio リソースは削除されません。
コントロールプレーンに名前空間が含まれているが、データプレーンに同じ名前空間が含まれていない場合は、データプレーンの名前空間を作成する必要があります。 そうしないと、名前空間内の Istio リソースの作成、削除、変更、またはクエリを実行できず、次のエラーメッセージが表示されます。
Error from server (NotFound): error when creating "xx.yaml": namespaces "daily-01" not foundIstio リソース用にデータプレーンで作成された名前空間がコントロールプレーンに存在しない場合、名前空間はコントロールプレーン用に自動的に作成されます。
データプレーンのクラスターの Kubernetes API を使用してコントロールプレーン用に作成する Istio リソースは、コントロールプレーンに保存されます。 したがって、データプレーンのクラスターの Kubernetes API を使用してこれらの Istio リソースを作成または更新する場合、所有者参照フィールドを追加して、データプレーンのリソースをリソース所有者として指定しないでください。 そうしないと、リソースの所有者が存在しないと見なされるため、コントロールプレーンの Istio リソースはガベージコレクションされます。
クラスターの Kubernetes API を使用して Istio リソースにアクセスできるようにする機能を有効にする
ASM インスタンスの作成時にこの機能を有効にする
デフォルトでは、この機能は 2024 年 11 月以降(UTC + 08:00)に作成された ASM インスタンスで有効になっています。 追加の操作は必要ありません。この日付より前に作成されたインスタンスの場合は、既存の ASM インスタンスに対してこの機能を有効にする を参照して、この機能を有効にすることができます。
既存の ASM インスタンスに対してこの機能を有効にする
ASM コンソール にログインします。
左側のナビゲーションウィンドウで、 を選択します。
[メッシュ管理] ページで、構成する ASM インスタンスを見つけます。[管理] 列で ASM インスタンスの名前をクリックするか、[アクション] をクリックします。
[基本情報] ページで、有効にする[データプレーン KubeAPI アクセスを有効にする] パラメーターの をクリックします。
[データプレーン クラスター KubeAPI アクセスの有効化を確認する] メッセージで、[OK] をクリックします。
シナリオ 1:kubectl を使用して Istio リソースを管理する
クラスターの Kubernetes API を使用して Istio リソースにアクセスできるようにする機能を有効にすると、kubectl を使用してクラスターに接続し、クラスターの kubeconfig ファイルを使用して Istio リソースの作成、クエリ、変更、および削除を実行できます。 この例では、仮想サービスを使用します。
仮想サービスを作成するには、次のコマンドを実行します。
kubectl apply -f <仮想サービスの YAML ファイル名>仮想サービスをクエリするには、次のコマンドを実行します。
kubectl get Virtualservice仮想サービスを変更するには、次のコマンドを実行します。
kubectl edit Virtualservice <仮想サービス名>仮想サービスを削除するには、次のコマンドを実行します。
kubectl delete Virtualservice <仮想サービス名>
シナリオ 2:Helm を使用してアプリケーションをインストールする
クラスターの Kubernetes API を使用して Istio リソースにアクセスできるようにする機能を有効にすると、Helm はクラスターの kubeconfig ファイルを使用してクラスターにアプリケーションをインストールし、ASM インスタンスに Istio リソースを追加できます。
kubectl を使用して ACK クラスターに接続します。 詳細については、「クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する」をご参照ください。
オンプレミス デバイスに Helm をインストールします。 詳細については、「Helm」をご参照ください。
説明kubectl を使用してクラスターに接続すると、Helm クライアントは自動的に kubeconfig ファイルを使用してクラスターに接続します。
istio-bookinfo サンプル Helm チャート パッケージをダウンロードしてオンプレミス デバイスに解凍します。
istio-bookinfo ディレクトリで次のコマンドを実行して、istio-bookinfo をインストールします。
helm install -f values.yaml istio-bookinfo ./予期される出力:
NAME:istio-bookinfo LAST DEPLOYED:THU May 26 16:44:19 2022 NAMESPACE:default STATUE:deployed REVISION:1 TEST SUITE:NoneHelm を使用してアプリケーションがインストールされているかどうかを確認します。
Container Service for Kubernetes (ACK) コンソールで Bookinfo アプリケーションをクエリします。
ACK コンソール にログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。 左側のウィンドウで、 を選択します。
表示されるページの上部で、[名前空間] ドロップダウンリストから [default] を選択します。
Helm を使用してインストールされた details、productpage、ratings などのアプリケーションを表示できます。
説明左側のナビゲーションウィンドウで Helm を選択すると、 ページで Helm のインストールパッケージを表示できます。

ASM コンソールで仮想サービスと Istio ゲートウェイを表示します。
ASM コンソール にログインします。
左側のナビゲーションウィンドウで、 を選択します。
[メッシュ管理] ページで、構成する ASM インスタンスを見つけます。 ASM インスタンスの名前をクリックするか、[アクション] 列の [管理] をクリックします。
ASM インスタンスの詳細ページで、左側のナビゲーションウィンドウの を選択します。
[VirtualService] ページで、Helm を使用してインストールされた bookinfo 仮想サービスを表示できます。

ASM インスタンスの詳細ページで、左側のナビゲーションウィンドウの を選択します。
[ゲートウェイ] ページで、Helm を使用してインストールされた bookinfo-gateway ゲートウェイを表示できます。

関連操作
Helm を使用してインストールされたアプリケーションを表示するには、次のコマンドを実行します。
helm listHelm チャートを更新するには、次のコマンドを実行します。
helm upgrade -f values.yaml istio-bookinfo ./