クラスタ・アドオンとしてのIstioの作業
Istioをクラスタ・アドオンとしてインストール、構成および使用して、Kubernetes Engine (OKE)で作成したクラスタでのトラフィック管理、セキュリティ、接続および可観測性を簡素化する方法をご紹介します。
スタンドアロン・プログラムとしてではなく、クラスタ・アドオン(Istioアドオン)としてIstioを使用すると、構成と継続的なメンテナンスが簡素化されます。より単純に:
- Istioを有効または無効にします。
- Oracleによる自動バージョン更新のオプト・インおよびオプト・アウト。
- Istioアドオンのバージョンを選択します。
- 承認されたキー/値ペアの構成引数を使用して、アドオン固有のカスタマイズを管理します。
Kubernetes Engineを使用してIstioをクラスタ・アドオンとしてデプロイする場合、オプションでIstioイングレス・ゲートウェイを作成して、受信HTTPおよびHTTPSリクエストをルーティングできます。または、サポートされている他のイングレスを使用して、クラスタで実行されている適切なサービスにトラフィックをルーティングすることもできます。Istioイングレス・ゲートウェイのアクセシビリティは、クラスタに指定されたロード・バランサ・サブネット(パブリックまたはプライベート)のタイプによって異なることに注意してください。
Istioアドオンの場合は、承認されたキー/値ペア構成引数を使用して、メッシュ全体の構成パラメータに対してアドオン固有のカスタマイズを行います(Istioアドオン構成引数を参照)。メッシュ・リソースの管理など、その他の構成タスクでは、istioctl (Istioコマンドライン・ツール)またはIstioでサポートされているその他のツールを使用します。承認された引数を使用してIstioアドオンを構成し、Oracleによってアドオンのバージョンが自動的に更新されるときにカスタマイズを保持する場合は、customizeConfigMap
構成引数をtrue
に設定します。customizeConfigMap
構成引数をtrue
に設定しない場合、Oracleがアドオンを更新すると、カスタマイズは破棄されます。istioctl (またはIstioでサポートされている別のツール)を使用して行ったカスタマイズは、Oracleがアドオンを更新すると常に破棄されます。
HelmおよびHelmチャートを使用してKubernetesアプリケーションを構成およびデプロイする場合、Helmは、作成したリソースのみを更新または削除できることに注意してください。したがって、HelmでIstioアドオンを管理できるようにするには:
- Helmチャートを使用して、istioおよびistio-sidecar-injector構成マップを生成します。
- Istioアドオンのデプロイ時に、
customizeConfigMap
構成引数をtrue
に設定します。
OracleでIstioアドオンを自動的に更新する場合、新しいIstioバージョンが使用可能になると、Oracleはインプレース・アップグレードを実行します。アップグレード中、OracleはIstioコントロール・プレーン(期間)およびイングレス・ゲートウェイを新しいバージョンに自動的に更新します。OracleではIstioデータ・プレーン・サイドカーは自動的に更新されないため、これらのサイドカーは古いバージョンのままです。kubectl rollout restart deployment
コマンドを使用して、Istioサイドカーを使用してポッドを再起動することで、Istioデータ・プレーンを手動で更新する必要があります。Istioコントロール・プレーンには古いサイドカー・バージョンとの下位互換性がありますが、停止時間をゼロにすることが優先される場合、OracleでIstioアドオンが自動的に更新されるのではなく、手動でIstioをアップグレードすることをお薦めします。Istioドキュメントのインプレース・アップグレードを参照してください。
これらのセクションでは、Istioアドオンを使用して、サービス間の通信とネットワークを管理する方法について説明します。
サービス・メッシュ製品(Oracle Cloud Infrastructure Service Mesh、Istio、Linkerdなど)は、ポッド・ネットワーキングにOCI VCNネイティブ・ポッド・ネットワーキングCNIプラグインを使用するときにサポートされます。Istioアドオンを除き、現在サポートはOracle Linux 7に制限されています(Oracle Linux 8のサポートが計画されています)。Istioアドオンは、Oracle Linux 7とOracle Linux 8の両方でサポートされています。ワーカー・ノードは、Kubernetes 1.26 (以降)を実行している必要があります。
また、Istioアドオンは、すでにスタンドアロン・プログラムとしてインストールされているクラスタや、Oracle Cloud Infrastructure Service Meshがインストールされているクラスタでは使用できません。
Istioは、管理対象ノード・プールで使用できますが、仮想ノード・プールでは使用できません。
Istioアドオンのデプロイ
次のステップの手順では、Istioサービス・メッシュをクラスタ・アドオン(Istioアドオン)としてデプロイし、Kubernetes Engineで作成したクラスタ内のトラフィック管理、セキュリティ、接続および可観測性を簡素化する方法について説明します。
- ステップ1: Istioアドオン構成ファイルの作成
- ステップ2: クラスタにIstioアドオンをデプロイし、デプロイメントが成功したことを確認します。
- ステップ3: Envoyサイドカー・インジェクションの有効化
- ステップ4: アプリケーションのデプロイおよびEnvoyサイドカー・コンテナの監視
作業例は、例: クラスタ・アドオンとしてのIstioのデプロイを参照してください。
ステップ1: Istioアドオン構成ファイルの作成
次の手順では、CLIを使用してIstioアドオンをデプロイできるようにするIstioアドオン構成ファイルを作成する方法について説明します。構成ファイルには、承認されたキー/値ペアの構成引数が含まれています。CLI (またはAPI)を使用してアドオンをデプロイする場合は、構成ファイルを作成する必要があります。コンソールを使用してIstioアドオンをデプロイすることもできます。その場合は、UIで構成引数を指定します。コンソールを使用したIstioアドオンのデプロイの詳細は、クラスタ・アドオンのインストールを参照してください。
-
適切なエディタで、選択した名前でJSONファイルを作成します(これらの手順は、ファイルが
enableistio.json
という名前であると想定しています)。これには、次のものが含まれます。{ "addonName": "Istio", "configurations": [ ] }
このコンテンツは、Istioアドオンを有効にするのに十分です。
- (オプション)
enableistio.json
ファイルで、次のようにIstioイングレス・ゲートウェイをインストールするかどうかを指定します:- Istioイングレス・ゲートウェイをインストールするには、次のように
enableistio.json
ファイルを更新します:{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "true" } ] }
- Istioイングレス・ゲートウェイをインストールしない場合は、次のように
enableistio.json
ファイルを更新します。{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "false" } ] }
構成ファイルに
enableIngressGateway
を含めない場合、デフォルトの動作はIstioイングレス・ゲートウェイをインストールしないことに注意してください(enableIngressGateway
をfalse
に設定するのと同じです)。 - Istioイングレス・ゲートウェイをインストールするには、次のように
-
(オプション)作成した
enableistio.json
ファイルで、他の構成引数を指定してIstioアドオンをカスタマイズします。設定できる構成引数の詳細は、Istioアドオン構成引数を参照してください。 - (オプション)アドオンのバージョンがOracleによって自動的に更新された場合、Istioアドオンに対して行ったカスタマイズを保持する場合は、
customizeConfigMap
引数をtrue
に設定します。例:- Istioイングレス・ゲートウェイをインストールしてカスタマイズを保持するには、次のように
enableistio.json
ファイルを更新します。{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "true" }, { "key": "customizeConfigMap", "value": "true" } ] }
- Istioイングレス・ゲートウェイをインストールせず、カスタマイズを保持する場合は、次のように
enableistio.json
ファイルを更新します。{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "false" }, { "key": "customizeConfigMap", "value": "true" } ] }
構成ファイルに
customizeConfigMap
を含めない場合、アドオンのバージョンがOracleによって自動的に更新された場合(customizeConfigMap
をfalse
に設定した場合と同等)は、デフォルトの動作によってカスタマイズが破棄されます。
- Istioイングレス・ゲートウェイをインストールしてカスタマイズを保持するには、次のように
enableistio.json
ファイルを保存して閉じます。
ステップ2: クラスタにIstioアドオンをデプロイし、デプロイメントが成功したことを確認します。
次の手順では、CLIおよび構成ファイルを使用してIstioアドオンをデプロイする方法について説明します。コンソールとAPIを使用してアドオンをデプロイすることもできます。詳細は、クラスタ・アドオンのインストールを参照してください。
-
まだ実行していない場合は、ステップに従って、クラスタのkubeconfig構成ファイルを設定し、(必要に応じて)そのファイルを指すようにKUBECONFIG環境変数を設定します。自分のkubeconfigファイルを設定する必要があります。別のユーザーが設定したkubeconfigファイルを使用してクラスタにアクセスすることはできません。クラスタ・アクセスの設定を参照してください。
- 次のように入力して、Istioアドオンがまだクラスタにインストールされていないことを確認します。
oci ce cluster list-addons --cluster-id <cluster-ocid>
<cluster-ocid>
は、IstioアドオンをデプロイするクラスタのOCIDです。 -
次のように入力して、クラスタにIstioアドオンをデプロイします。
oci ce cluster install-addon --addon-name Istio --cluster-id <cluster-ocid> --from-json file://./<path-to-config-file>
ここでは:
--cluster-id <cluster-ocid>
は、IstioアドオンをデプロイするクラスタのOCIDです。--from-json file://<path-to-config-file>
は、前に作成したIstioアドオン構成ファイルの場所を指定します。たとえば、--from-json file://./enableistio.json
です。
例:
oci ce cluster install-addon --addon-name Istio --from-json file://./enableistio.json --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr
Istioアドオンをデプロイするための作業リクエストが作成されます。
-
次のように、Istioアドオン(およびIstioアドオン構成ファイルで指定した場合はIstioイングレス・ゲートウェイ)が正常にデプロイされたことを確認します。
- 次のように入力して、Istioアドオンがクラスタにインストールされていることを確認します:
oci ce cluster list-addons --cluster-id <cluster-ocid>
デプロイメントが成功すると、ACTIVEのライフサイクル状態を持つIstioアドオンが出力に表示されます。例:
{ "data": [ { "addon-error": null, "current-installed-version": "v1.19.0", "lifecycle-state": "ACTIVE", "name": "Istio", "time-created": "2023-11-06T11:21:11+00:00", "version": null } ] }
- 次のように入力して、istiodポッド(Istioコントロールプレーン)およびistio-ingressgatewayポッド(構成ファイルで指定した場合)がistio-systemネームスペースで実行されていることを確認します。
kubectl get pods -n istio-system
デプロイメントが成功すると、出力にはステータスが「実行中」のポッドが表示されます。例:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-df7d86548-n2vxr 1/1 Running 0 102s istiod-65d95bd5f9-vb2qk 1/1 Running 0 101s
- 構成ファイルでIstioイングレス・ゲートウェイを指定した場合は、次のように入力して、istio-ingressgatewayサービスが正常にデプロイされていることを確認します:
kubectl get svc istio-ingressgateway -n istio-system
デプロイメントが成功すると、出力には、タイプがLoadBalancerのサービスとしてのistio-ingressgatewayサービス、およびパブリックにアクセス可能なIPアドレスを持つ(クラスタのロード・バランサ・サブネットがパブリックの場合)が表示されます。例:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.96.31.174 <EXTERNAL-IP> 15021:30089/TCP,80:31662/TCP,443:32217/TCP 2m50s
- 次のように入力して、Istioアドオンがクラスタにインストールされていることを確認します:
ステップ3: Envoyサイドカー・インジェクションの有効化
Istioが各サービスにEnvoyサイドカーを注入して通信、構成およびセキュリティを提供できるようにするには:
- 次のように入力して、アプリケーションをデプロイするネームスペースを作成します(ネームスペースがまだ存在しない場合)。
kubectl create namespace <namespace-name>
- 次のように入力して、アプリケーションをデプロイするネームスペースをデフォルト・ネームスペースにします。
kubectl config set-context --current --namespace=<namespace-name>
- 次のように入力して、アプリケーションをデプロイするネームスペースがデフォルトのネームスペースであることを確認します。
kubectl config view --minify | grep namespace
- ネームスペースに
istio-injection=enabled
ラベルを追加して、次のように入力して、ネームスペースにデプロイされた新しいアプリケーション・ポッドにEnvoyサイドカーを自動的にインストールします:kubectl label namespace <namespace-name> istio-injection=enabled
- 次のように入力して、ネームスペースに正しくラベル付けされていることを確認します:
kubectl get namespace -L istio-injection
ステップ4: アプリケーションのデプロイおよびEnvoyサイドカー・コンテナの監視
アプリケーションの通信、構成およびセキュリティの提供にIstioが使用されていることを確認するには:
- アプリケーションのデプロイたとえば、次のように入力します:
kubectl apply -f <manifest-name>
- 次のように入力して、アプリケーションのサービスが正常に作成されたことを確認します。
kubectl get services
- 次のように入力して、アプリケーションのポッドのステータスが「実行中」であることを確認します:
kubectl get pods
出力は、各アプリケーション・ポッドに2つのコンテナがあることを示しています。ポッドごとに、1つのコンテナがアプリケーション・コンテナで、もう1つのコンテナがIstioが注入したEnvoyサイドカーです。
- 次のように入力して、アプリケーションのポッドの1つに2つのコンテナ(1つはアプリケーション・コンテナ、もう1つはIstioによって注入されるEnvoyサイドカー)があることを確認します。
kubectl get pods <application-pod-name> -o jsonpath='{.spec.containers[*].name}'
デフォルトでは、イングレス・ゲートウェイを有効にした後は、クラスタ外からアプリケーションにアクセスできないことに注意してください。アプリケーションにアクセス可能にする方法の例は、例: クラスタ・アドオンとしてのIstioのデプロイを参照してください。
例: Istioのクラスタ・アドオンとしてのデプロイ
この例では、Kubernetes Engineで作成したクラスタにIstioアドオンおよびIstioイングレス・ゲートウェイをインストールします。Istioアドオンおよびイングレス・ゲートウェイをインストールしたら、IstioのサンプルBookinfoアプリケーションをデプロイし、クラスタ外からアプリケーションにアクセスできるようにします。
- 便宜上、次のように入力して、CLUSTER_IDという名前の環境変数をクラスタのOCIDの値に設定します。
export CLUSTER_ID=<cluster-ocid>
- 次のものを含む
enableistio-ig.json
という名前のJSONファイルを作成します。{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "true" } ] }
この構成ファイルでは、IstioアドオンおよびIstioイングレス・ゲートウェイがインストールされます。
- 次のように入力して、IstioアドオンおよびIstioイングレス・ゲートウェイをクラスタにインストールします:
oci ce cluster install-addon --addon-name Istio --cluster-id $CLUSTER_ID --from-json file://./enableistio-ig.json
Istioアドオンをインストールするための作業リクエストが作成されます。
- IstionアドオンおよびIstioイングレス・ゲートウェイが正常にインストールされたことを確認します。
- 次のように入力して、Istioアドオンが正常にインストールされたことを確認します。
oci ce cluster list-addons --cluster-id $CLUSTER_ID
デプロイメントが成功すると、ACTIVEのライフサイクル状態を持つIstioアドオンが出力に表示されます。たとえば、次の出力は、いくつかの重要なクラスタ・アドオンとともに、Istioアドオンを示しています。
{ "data": [ { "addon-error": null, "current-installed-version": "v1.10.1-multiarch-7", "lifecycle-state": "ACTIVE", "name": "CoreDNS", "time-created": "2023-11-06T10:35:26+00:00", "version": null }, { "addon-error": null, "current-installed-version": "v1.19.0", "lifecycle-state": "ACTIVE", "name": "Istio", "time-created": "2023-11-06T11:21:11+00:00", "version": null }, { "addon-error": null, "current-installed-version": "v1.27.2-oke.0.2.20-multiarch-98", "lifecycle-state": "ACTIVE", "name": "KubeProxy", "time-created": "2023-11-06T10:35:26+00:00", "version": null }, { "addon-error": null, "current-installed-version": "v2.0.1", "lifecycle-state": "ACTIVE", "name": "OciVcnIpNative", "time-created": "2023-11-06T10:35:26+00:00", "version": null } ] }
- 次のように入力して、Istioコントロール プレーン(ピリオド)ポッドとistio-ingressgatewayポッドが両方ともistio-system名前空間で実行されていることを確認します。
kubectl get pods -n istio-system
デプロイメントが成功すると、出力にはステータスが「実行中」の両方のポッドが表示されます。例:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-df7d86548-n2vxr 1/1 Running 0 102s istiod-65d95bd5f9-vb2qk 1/1 Running 0 101s
- 次のように入力して、istio-ingressgatewayサービスが正常にデプロイされたことを確認します:
kubectl get svc istio-ingressgateway -n istio-system
デプロイメントが成功すると、出力には、タイプがLoadBalancerのサービスとしてのistio-ingressgatewayサービス、およびパブリックにアクセス可能なIPアドレスを持つ(クラスタのロード・バランサ・サブネットがパブリックの場合)が表示されます。例:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.96.31.174 <EXTERNAL-IP> 15021:30089/TCP,80:31662/TCP,443:32217/TCP 2m50s
- 次のように入力して、Istioアドオンが正常にインストールされたことを確認します。
- Bookinfoサンプル・アプリケーションをデプロイする新しいネームスペースを作成します。
- 次のように入力して、
bookinfo
ネームスペースを作成します。kubectl create namespace bookinfo
- 次のように入力して、
bookinfo
ネームスペースをデフォルト・ネームスペースにします。kubectl config set-context --current --namespace=bookinfo
- 次のように入力して、bookinfoがデフォルトのネームスペースであることを確認します。
kubectl config view --minify | grep namespace
- 次のように入力して、
istio-injection=enabled
ラベルをbookinfoネームスペースに追加して、ネームスペースにデプロイされた新しいアプリケーション・ポッドにEnvoyサイドカーを自動的にインストールします。- 次のように入力して、ラベルをbookinfoネームスペースに追加します。
kubectl label namespace bookinfo istio-injection=enabled
- 次のように入力して、bookinfo名前空間が正しくラベル付けされていることを確認します。
kubectl get namespace -L istio-injection
- 次のように入力して、ラベルをbookinfoネームスペースに追加します。
- 次のように入力してBookinfoサンプル・アプリケーションをデプロイします:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/platform/kube/bookinfo.yaml
デプロイメントが成功すると、出力には、次のようにクラスタ上に作成された複数のデプロイメントおよびサービスが表示されます。
service/details created serviceaccount/bookinfo-details created deployment.apps/details-v1 created service/ratings created serviceaccount/bookinfo-ratings created deployment.apps/ratings-v1 created service/reviews created serviceaccount/bookinfo-reviews created deployment.apps/reviews-v1 created deployment.apps/reviews-v2 created deployment.apps/reviews-v3 created service/productpage created serviceaccount/bookinfo-productpage created deployment.apps/productpage-v1 created
- Bookinfoサンプル・アプリケーションの正常なデプロイメントを確認します。
- 次のように入力して、サービスが正常に作成されたことを確認します。
kubectl get services
デプロイメントが成功すると、出力には、次のようなクラスタで作成されたサービスが表示されます。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE details ClusterIP 10.96.72.219 <none> 9080/TCP 54s productpage ClusterIP 10.96.65.83 <none> 9080/TCP 54s ratings ClusterIP 10.96.101.51 <none> 9080/TCP 54s reviews ClusterIP 10.96.14.9 <none> 9080/TCP 54s
- 次のように入力して、すべてのポッドのステータスが「Running」であることを確認します。
kubectl get pods
デプロイメントが成功すると、出力には、次のような実行中のポッドが表示されます。
NAME READY STATUS RESTARTS AGE details-v1-5f4d584748-hcm9t 2/2 Running 0 81s productpage-v1-564d4686f-48lpw 2/2 Running 0 80s ratings-v1-686ccfb5d8-bpl8t 2/2 Running 0 81s reviews-v1-86896b7648-6c8d4 2/2 Running 0 81s reviews-v2-b7dcd98fb-fsv7c 2/2 Running 0 81s reviews-v3-5c5cc7b6d-qgrv2 2/2 Running 0 81s
出力は、各アプリケーション・ポッドに2つのコンテナがあることを示しています。ポッドごとに、1つのコンテナがアプリケーション・コンテナで、もう1つのコンテナがIstioによって注入されるEnvoyサイドカーです。
ratings
ポッドに2つのコンテナ(1つはアプリケーション・コンテナ、もう1つはIstioによって注入されるEnvoyサイドカー)があることを確認します。たとえば、次のように入力します:kubectl get pods ratings-v1-686ccfb5d8-bpl8t -o jsonpath='{.spec.containers[*].name}'
出力には、アプリケーション・コンテナ(評価)とIstioによって注入されたEnvoyサイドカー・コンテナ(istio-proxy)の2つのコンテナが表示されます。
ratings istio-proxy
- ポッドからcurlコマンドを送信して、アプリケーションが実行中であることを確認します。
kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>" <title>Simple Bookstore App</title>
Bookinfoサンプル・アプリケーションは、イングレス・ゲートウェイを有効にした後でも、クラスタの外部からまだアクセスできないことに注意してください。また、Istioイングレス・ゲートウェイのアクセシビリティは、クラスタに指定されたロード・バランサ・サブネット(パブリックまたはプライベート)のタイプによって異なります。
- 次のように入力して、サービスが正常に作成されたことを確認します。
-
クラスタの外部からBookinfoサンプル・アプリケーションにアクセスできるようにします。
- 次のように入力して、サンプル・デプロイメントのイングレスをIstioイングレス・ゲートウェイにマップします:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/networking/bookinfo-gateway.yaml
出力は、Kubernetes GatewayおよびVirtualServiceリソースが作成されたことを示しています:
gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created
- 次のように入力して、サンプル・デプロイメントのイングレスをIstioイングレス・ゲートウェイにマップします:
- Bookinfoサンプル・アプリケーションにアクセス可能で、Istioイングレス・ゲートウェイを使用していることを確認します。
- 次のように入力して、イングレス・ホストおよびイングレス・ポートの環境変数を設定します:
export INGRESS_NAME=istio-ingressgateway
export INGRESS_NS=istio-system
export INGRESS_HOST=$(kubectl -n "$INGRESS_NS" get service "$INGRESS_NAME" -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
export INGRESS_PORT=$(kubectl -n "$INGRESS_NS" get service "$INGRESS_NAME" -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
- 次のように入力して、Bookinfoサンプル・アプリケーションにアクセスでき、Istioイングレス・ゲートウェイを使用していることを確認します:
curl -s "http://${INGRESS_HOST}:${INGRESS_PORT}/productpage" | grep -o "<title>.*</title>"
デプロイメントが成功すると、出力には、次のようなクラスタで作成されたサービスが表示されます。
<title>Simple Bookstore App</title>
- 次のURLを開いて、ブラウザでBookinfo Webページを表示します。
http://${INGRESS_HOST}:${INGRESS_PORT}/productpage
- ブラウザで、Bookinfo Webページを数回リフレッシュして、ページに表示されるレビューの異なるバージョンを表示します。
- 次のように入力して、イングレス・ホストおよびイングレス・ポートの環境変数を設定します:
- (オプション)例を完了したら、作成したリソースを削除できるようになりました。
- 次を入力して、Bookinfoサンプル・アプリケーションを削除します:
kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/platform/kube/bookinfo.yaml
-
次のように入力して、oci ce cluster disable-addonコマンドを使用してIstioアドオンを無効化(およびオプションで削除)します:
oci ce cluster disable-addon --addon-name Istio --cluster-id $CLUSTER_ID --is-remove-existing-add-on <true|false>
ここで、
--is-remove-existing-add-on <true|false>
は、Istioアドオンを完全に削除するか(true
に設定されている場合)、アドオンを削除せず、単に無効にして使用しないか(false
に設定されている場合)を指定します。アドオンを無効にすると、新しいバージョンが利用可能になった時点で Oracleはアドオンのバージョンを自動的に更新しなくなります。例:
oci ce cluster disable-addon --addon-name Istio --cluster-id $CLUSTER_ID --is-remove-existing-add-on true
Istioアドオンを無効化(およびオプションで削除)するための作業リクエストが作成されます。
- 次のように入力して、デフォルトで削除されないIstio CustomResourceDefinitions (CRD)を削除します。
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
- 次のように入力して、Istioアドオンによって管理されていないIstioメッシュ・リソース(Kubernetes GatewayやVirtualServiceリソースなど)を削除します。
kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/networking/bookinfo-gateway.yaml
- 次を入力して、Bookinfoサンプル・アプリケーションを削除します:
Istioアドオンの更新
次の手順では、CLIと構成ファイルを使用してIstioアドオンを更新する方法について説明します。コンソールやAPIを使用してアドオンを更新することもできます。詳細は、「クラスタ・アドオンの更新」を参照してください。
-
適切なエディタでIstioアドオン構成ファイルを開きます。
-
必要に応じて、構成ファイルの構成引数を追加、削除または変更します。設定できる引数の詳細は、Istioアドオン構成の引数を参照してください。
- OracleでIstioアドオンのバージョンを自動的に更新するように指定し、構成変更を保持する場合は、
customizeConfigMap
構成引数をtrue
に設定します(まだ設定されていない場合)。 - oci ce cluster update-addonコマンドを使用して、次のように入力してIstioアドオンを更新します:
oci ce cluster update-addon --addon-name Istio --from-json file://<path-to-config-file> --cluster-id <cluster-ocid>
ここでは:
--cluster-id <cluster-ocid>
は、Istioアドオンを更新するクラスタのOCIDです。--from-json file://<path-to-config-file>
は、アドオンの更新時に使用するIstioアドオン構成ファイルの場所を指定します。たとえば、--from-json file://./istio-add-on.json
です。
例:
oci ce cluster update-addon --addon-name Istio --from-json file://./istio-add-on.json --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr
Istioアドオンを更新するための作業リクエストが作成されます。
- (オプション)次のように入力して、istiodおよびistio-ingressgatewayポッドのステータスを表示し、進行状況を確認します:
kubectl get pods -n istio-system
Istioアドオンの無効化(および削除)
次の手順では、CLIと構成ファイルを使用してIstioアドオンを無効化および削除する方法について説明します。コンソールやAPIを使用してアドオンを更新することもできます。詳細は、クラスタ・アドオンの無効化(および削除)を参照してください。
-
次のように入力して、oci ce cluster disable-addonコマンドを使用してIstioアドオンを無効化(およびオプションで削除)します:
oci ce cluster disable-addon --addon-name Istio --cluster-id <cluster-ocid> --is-remove-existing-add-on <true|false>
ここでは:
--cluster-id <cluster-ocid>
は、Istioアドオンを無効にする(およびオプションで削除する)クラスタのOCIDです。--is-remove-existing-add-on <true|false>
は、Istioアドオンを完全に削除する(true
に設定されている場合)か、アドオンを削除しないで無効にする(false
に設定されている場合)かを指定します。Istioアドオンを無効にすると、新しいバージョンが使用可能になったときに、Oracleによってアドオンのバージョンが自動的に更新されなくなります。
例:
oci ce cluster disable-addon --addon-name Istio --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr --is-remove-existing-add-on true
Istioアドオンを無効化(およびオプションで削除)するための作業リクエストが作成されます。
- (オプション)次のように入力して、istiodおよびistio-ingressgatewayポッドのステータスを表示し、進行状況を確認します:
kubectl get pods -n istio-system
- (オプション)次のように入力して、デフォルトで削除されないIstio CustomResourceDefinitions (CRD)を削除します。
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
- (オプション)
kubectl delete
コマンドを使用して、Istioアドオンによって管理されていないIstioメッシュ・リソース(Kubernetes GatewayやVirtualServiceリソースなど)を削除します。