IBM Cloud Docs
Istio のセットアップ

Istio のセットアップ

Istio マネージド・アドオンのセットアップ

IBM Cloud® Kubernetes Service 上の Istio は、Istio のシームレス・インストール、Istio コントロール・プレーン・コンポーネントの自動更新とライフサイクル管理、およびプラットフォームのロギングとモニタリングのツールとの統合を行います。

Istio アドオンのインストール

コミュニティー Istio の代わりに、マネージド Istio アドオンをインストールできます。

開始前に

コンソールを使用した Istio アドオンのインストール

  1. クラスター・ダッシュボードで、Istioアドオンをインストールするクラスター名をクリックします。

  2. **「アドオン」**セクションにナビゲートします。

  3. マネージド Istio カード上で、**「インストール」**をクリックします。

  4. **「インストール」**をもう一度クリックします。

  5. マネージド Istio カードに、アドオンが表示されていることを確認します。

CLI を使用した Istio アドオンのインストール

アカウントにログインします。 該当する場合は、適切なリソース・グループをターゲットにします。 クラスターのコンテキストを設定します。

  1. サポート対象の Istio バージョンを確認します。

    ibmcloud ks addon-versions --addon istio
    
  2. istioアドオンを有効にします。 一般に利用可能なIstio管理アドオンのデフォルト・バージョン、 1.23.5、インストールされている。

    ibmcloud ks cluster addon enable istio --cluster <cluster_name_or_ID>
    
  3. マネージド Istio アドオンの状態が Addon Ready になっていることを確認します。

    ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
    

    出力例

    NAME            Version     Health State   Health Status
    istio           1.23.5       normal         Addon Ready
    
  4. アドオンの各コンポーネントを表示して、Istio サービスおよび対応するポッドがデプロイされていることを確認することもできます。

    kubectl get svc -n istio-system
    
    kubectl get pods -n istio-system
    
  5. 次に、Istio サービス・メッシュにアプリを含めることができます。

Istio アドオンの更新

Istio アドオンを更新します。これは、 IBM Cloud によってテストされ、 IBM Cloud Kubernetes Serviceでの使用が承認されています。

マネージド・アドオンによってインストールされたバージョンの Istio を更新する際は、 istioctl を使用しないでください。 Istio マネージド・アドオンの更新には、Istio バージョンの更新も含まれる、以下の手順のみを使用してください。

サポートされないバージョンの Istio アドオンから更新するには、 Istio コンポーネント を、 IBM Cloud Kubernetes Serviceでサポートされる最新のパッチ・バージョンに更新します。

Istio アドオンのマイナー・バージョンの更新

IBM Cloud が、IBM Cloud Kubernetes Service でサポートされる最新バージョンの Istio へのパッチの更新を自動的にロールアウトして、すべての Istio コンポーネントを最新に保ちます。 IBM Cloud Kubernetes Service によってサポートされる次のマイナー・バージョンの Istio に Istio コンポーネントを更新する (バージョン 1.9 から 1.10 に更新するなど) には、アドオンを手動で更新する必要があります。 Istio を手動で更新できるのは、一度に 1 つのバージョンのみです。

Istio アドオンは、一度に 1 つのバージョンのみを手動で更新できます。 Istio アドオンを複数のバージョンで更新する場合は、手動更新プロセスを繰り返すか、または対象のアドオンをアンインストールして削除してから新しいバージョンで再インストールします。

istio-system 名前空間内の Istio コントロール・コンポーネントを最新のマイナー・バージョンに更新すると、抜本的な変更が発生する場合があります。 マイナー・バージョンの更新中に発生する以下の変更を確認します。

  • コントロール・プレーン・ポッドに更新がロールアウトされると、ポッドが再作成されます。 Istio コントロール・プレーンは、更新が完了するまで完全には使用できません。
  • Istio データ・プレーンは、更新中も機能し続けます。 ただし、サービス・メッシュ内のアプリへのトラフィックの一部は、短時間中断される可能性があります。
  • istio-ingressgateway ロード・バランサーの外部 IP アドレスは、更新の実行中に変更されることも、更新後に変更されることもありません。

管理対象 Istio アドオンを前のバージョンに戻すことはできません。 前のマイナー・バージョンに戻す場合は、アドオンをアンインストールしてから、前のバージョンを指定してアドオンを再インストールする必要があります。

  1. Istio アドオンの現在のバージョンを確認します。

    kubectl get iop managed-istio -n ibm-operators -o jsonpath='{.metadata.annotations.version}'
    
  2. 使用可能な Istio アドオン・バージョンを確認します。

    ibmcloud ks addon-versions
    
  3. Istio アドオンの変更ログで、各バージョンの変更点を確認する。

  4. バージョン 1.11 からバージョン 1.12 にアップグレードする場合に、Istio コンポーネントがバージョン 1.10 以前でプロビジョンされていたのであれば、以下のようにします。

    1. ミューテーション Webhook 構成の詳細を取得するコマンドを実行します。

      kubectl get mutatingwebhookconfigurations
      

      出力例

      NAME                     WEBHOOKS   AGE
      istio-sidecar-injector   5          32m
      
    2. 出力で istio-sidecar-injector を見つけて Webhook 列を確認します。 Webhook が 5 つ以上ある場合は、次のコマンドを実行して追加の Webhook を削除します。

      kubectl delete mutatingwebhookconfigurations istio-sidecar-injector && kubectl rollout restart deploy addon-istio-operator -n ibm-operators
      

      出力例

      mutatingwebhookconfiguration.admissionregistration.k8s.io "istio-sidecar-injector" deleted
      
    3. 追加の Webhook が削除されたことを確認します。 ミューテーション Webhook 構成の詳細を取得し、4 つの istio-sidecar-injector Webhook があることを確認します。

      kubectl get mutatingwebhookconfigurations
      

      出力例

      NAME                     WEBHOOKS   AGE
      istio-sidecar-injector   4          60s
      
    4. 検証 Webhook 構成の詳細を取得するコマンドを実行します。

      kubectl get validatingwebhookconfigurations
      

      出力例

      NAME                           WEBHOOKS   AGE
      istio-validator-istio-system   2          66s
      istiod-istio-system            1          31m
      
    5. 出力を確認します。 istiod-istio-system Webhook がリストされている場合は、次のコマンドを実行して、その Webhook を削除します。

      kubectl delete ValidatingWebhookConfiguration istiod-istio-system
      

      出力例

      validatingwebhookconfiguration.admissionregistration.k8s.io "istiod-istio-system" deleted
      
    6. istiod-istio-system Webhook がリストされなくなったことを確認します。

      kubectl get validatingwebhookconfigurations
      

      出力例

      NAME                           WEBHOOKS   AGE
      istio-validator-istio-system   2          2m
      
  5. Istio アドオンを更新します。

    ibmcloud ks cluster addon update istio --version <version> -c <cluster_name_or_ID>
    
  6. 次に進む前に、更新が完了していることを確認します。

    更新処理が完了するまでに、最大で 20 分かかる場合があります。

    1. Istio アドオンの Health Statenormal で、Health StatusAddon Ready であることを確認します。 状態が updating の場合、更新はまだ完了していません。

      ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
      
    2. istio-system 名前空間のコントロール・プレーン・コンポーネント・ポッドの STATUSRunning であることを確認します。

      kubectl get pods -n istio-system
      
      NAME                                                     READY   STATUS    RESTARTS   AGE
      istio-system    istio-egressgateway-6d4667f999-gjh94     1/1     Running     0          61m
      istio-system    istio-egressgateway-6d4667f999-txh56     1/1     Running     0          61m
      istio-system    istio-ingressgateway-7bbf8d885-b9xgp     1/1     Running     0          61m
      istio-system    istio-ingressgateway-7bbf8d885-xhkv6     1/1     Running     0          61m
      istio-system    istiod-5b9b5bfbb7-jvcjz                  1/1     Running     0          60m
      istio-system    istiod-5b9b5bfbb7-khcht                  1/1     Running     0          60m
      
  7. istioctl クライアントとサイドカーを更新します

istioctl クライアントとサイドカーの更新

Istio マネージド・アドオンを更新したら、必ず、istioctl クライアントとアプリの Istio サイドカーを更新してください。

例えば、IBM Cloud Kubernetes Service によって自動的にアドオンのパッチ・バージョンが更新されることや、アドオンのマイナー・バージョンを更新することがあります。 どちらの場合も、istioctl クライアントとアプリの既存の Istio サイドカーを、アドオンの Istio バージョンと一致するように更新してください。

  1. istioctl クライアントと Istio アドオン・コントロール・プレーン・コンポーネントのバージョンを取得します。

    istioctl version --short=false
    

    出力例

    client version: version.BuildInfo{Version:"1.11.2"}
    pilot version: version.BuildInfo{Version:1.23.5}
    pilot version: version.BuildInfo{Version:1.23.5}
    data plane version: version.ProxyInfo{ID:"istio-egressgateway-77bf75c5c-vp97p.istio-system", IstioVersion:1.23.5}
    data plane version: version.ProxyInfo{ID:"istio-egressgateway-77bf75c5c-qkhgm.istio-system", IstioVersion:1.23.5}
    data plane version: version.ProxyInfo{ID:"istio-ingressgateway-6dcb67b64d-dffhq.istio-system", IstioVersion:1.23.5}
    data plane version: version.ProxyInfo{ID:"httpbin-74fb669cc6-svc8x.default", IstioVersion:1.23.5}
    data plane version: version.ProxyInfo{ID:"istio-ingressgateway-6dcb67b64d-cs9r9.istio-system", IstioVersion:1.23.5}
    ...
    
  2. 出力で、client version (istioctl) を Istio コントロール・プレーン・コンポーネントのバージョン (pilot version など) と比較します。 client version とコントロール・プレーン・コンポーネントのバージョンが一致しない場合は、以下のようにします。

    1. コントロール・プレーン・コンポーネントと同じバージョンの istioctl クライアントをダウンロードします。

      curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.23.5 sh -
      
    2. Istio パッケージ・ディレクトリーにナビゲートします。

      cd istio-1.23.5
      
    3. Linux および macOS ユーザー: istioctl クライアントを PATH システム変数に追加します。

      export PATH=$PWD/bin:$PATH
      
  3. ステップ 1 の出力で、データ・プレーン・ポッドごとに、pilot versiondata plane version と比較します。

    • pilot versiondata plane version が一致する場合は、追加の更新は必要ありません。
    • pilot versiondata plane version が一致しない場合は、古いバージョンを実行するデータ・プレーン・ポッドのデプロイメントを再始動します。 ポッド名と名前空間は、各エントリーに data plane version: version.ProxyInfo{ID:"<pod_name>.<namespace>", IstioVersion:"1.8.4"} としてリストされます。
    kubectl rollout restart deployment <deployment> -n <namespace>
    

Istio インストール済み環境のカスタマイズ

managed-istio-custom 構成マップ・リソースを編集することによって、一連の Istio 構成オプションをカスタマイズできます。 これらの設定には、コントロール・プレーンおよびサービス・メッシュのモニタリング、ロギング、およびネットワーキングに対する追加の制御が含まれます。

  1. managed-istio-custom ConfigMap リソースを説明し、その内容とインライン・ドキュメントを確認する。

    kubectl describe cm managed-istio-custom -n ibm-operators
    
  2. managed-istio-custom 構成マップ・リソースを編集します。

    kubectl edit cm managed-istio-custom -n ibm-operators
    
  3. data セクションで、以下の 1 つ以上の構成オプションの <key>: "<value>" ペアを追加します。

    istio-components-pilot-requests-cpu
    デフォルト値: "500m"
    istiod コンポーネントポッドに対して、 CPU で CPU リクエストを構成する。 milli この値を変更するときには注意してください。 この値を低く設定しすぎると、コントロールプレーンが正常に動作しなくなる可能性があり、高く設定しすぎると、 istiod ポッドがスケジューリングされなくなる可能性がある。
    istio-global-logging-level
    デフォルト値: "default:info"
    コントロール・プレーン・コンポーネントのログのスコープ、およびログ・メッセージのレベルを定義します。 スコープは、コントロール・プレーン・コンポーネント内の機能領域を表します。各スコープは特定のログ情報レベルをサポートします。 カテゴリー化されていないログ・メッセージ用の default ロギング・スコープは、基本の info レベルのコントロール・プレーンのすべてのコンポーネントに適用されます。
    個々のコンポーネント・スコープのログ・レベルを指定するには、スコープとレベルのコンマ区切りリストを入力します (例: "<scope>:<level>,<scope>:<level>")。 各制御プレーン・コンポーネントのスコープとログ・メッセージの情報レベルのリストについては、 Istio コンポーネント・ロギングのドキュメントを参照してください。 データプレーンのログレベルを変更するには、 istioctl proxy-config log <pod> --level <level> コマンドを使用します。
    istio-global-outboundTrafficPolicy-mode
    デフォルト値: "ALLOW_ANY"
    デフォルトでは、サービス・メッシュからのアウトバウンド・トラフィックはすべて許可されます。 サービス・レジストリー内に定義されていないホスト、またはサービス・メッシュ内に ServiceEntry が含まれないホストへのサービス・メッシュからのアウトバウンド・トラフィックをブロックするには、REGISTRY_ONLY に設定します。
    istio-egressgateway-public-1-enabled
    デフォルト値: "true"
    デフォルトの Istio egress gateway を無効にするには、 "false" に設定する。 例えば、代わりにカスタム Egress ゲートウェイを作成することができます。
    istio-global-proxy-accessLogFile
    デフォルト値: ""
    Envoy プロキシーは、標準出力にアクセス情報を出力します。 これらのログは、Ingress または Egress に関する問題をデバッグする際に役立ちます。 Envoy コンテナーに対して kubectl logs コマンドを実行するときにこのアクセス情報を表示するには、"/dev/stdout" に設定します。
    istio-ingressgateway-public-1|2|3-enabled
    デフォルト値: ゾーン 1 における "true" のみ。
    アプリの可用性を高めるには、"true" に、パブリック istio-ingressgateway ロード・バランサーを作成するゾーンごとに設定します。 デフォルトの Ingress ゲートウェイの代わりにカスタム Ingress ゲートウェイを使用するには、"false" に設定することができます。
    istio-ingressgateway-zone-1|2|3
    デフォルト値: "<zone>"
    ワーカーノードが配置されるゾーンで、アドオンをインストールしたときや、Istioのパッチアップデートを適用したときに自動的に入力されます。 これらのフィールドにより、クラスターのゾーンが istio-ingressgateway-public-1|2|3-enabled フィールドに適用されます。 この設定に表示されているゾーンがクラスタ・ゾーンと同期していない場合は、 kubectl delete pod -n ibm-system -l addon.cleanup=istio および kubectl delete job -n ibm-system -l addon.cleanup=istio を実行することで、自動配置ジョブを再起動できることに注意してください。
    istio-monitoring-telemetry
    デフォルト値: "true"
    テレメトリー・メトリックと Prometheus のサポートは、デフォルトで有効になっています。 テレメトリー・メトリックに関連するすべてのパフォーマンス問題を削除し、すべてのモニタリングを無効にするには、"false" に設定します。
    istio-meshConfig-enableTracing
    デフォルト値: "true"
    デフォルトでは、Istioは100リクエストのうち1リクエストについてトレーススパンを生成する。 トレース・スパンを無効にするには、"false" に設定します。
    istio-pilot-traceSampling
    デフォルト値: "1.0"
    デフォルトでは、Istio は 100 個の要求のうち 1 つの要求に対してトレース・スパンを生成します。これは 1% のサンプリング・レートです。 より多くのトレース・スパンを生成するには、パーセンテージ値を増やします。
    istio-components-pilot-hpa-maxReplicas
    デフォルト値: "5"
    デフォルトでは、Istioは istiod 、デフォルトの水平ポッドオートスケーラー(HPA)の最大ポッドを5に設定する。 istiod 、コンフィギュレーションを更新するためにリソースを増やす必要があるような大規模なサービスメッシュでない限り、この値を増やさないでください。

    例えば、構成マップは以下の例のようになります。

    apiVersion: v1
    data:
      istio-ingressgateway-zone-1: dal10
      <key: value> # such as istio-egressgateway-public-1-enabled: "false"
    kind: ConfigMap
    metadata:
      name: managed-istio-custom
      namespace: ibm-operators
    

    構成マップにこの表のオプションがありませんか? 構成マップにユーザー定義の値が含まれているため、時間経過に伴いリリースされるオプションに照らして構成マップが更新されていません。 ここでは、構成マップのコピーをバックアップし、クラスターからその構成マップを削除できます。 約 5 分経過すると、新しいオプションが含まれるデフォルトの構成マップがクラスターに作成されます。 その後、以前に構成した設定をバックアップからこのデフォルト構成マップにコピーし、新しい設定を構成し、変更を適用できます。

  4. 構成ファイルを保存して閉じます。

  5. istio-global-logging-level または istio-global-proxy-accessLogFile の設定を変更した場合、データ・プレーン・ポッドを再始動して、変更を適用する必要があります。

    1. istio-system 名前空間に含まれていないすべてのデータ・プレーン・ポッドのリストを取得します。

      istioctl version --short=false | grep "data plane version" | grep -v istio-system
      

      出力例

      data plane version: version.ProxyInfo{ID:"test-6f86fc4677-vsbsf.default", IstioVersion:"1.23.5"}
      data plane version: version.ProxyInfo{ID:"rerun-xfs-f8958bb94-j6n89.default", IstioVersion:"1.23.5"}
      data plane version: version.ProxyInfo{ID:"test2-5cbc75859c-jh6bx.default", IstioVersion:"1.23.5"}
      data plane version: version.ProxyInfo{ID:"minio-test-78b5d4597d-hkpvt.default", IstioVersion:"1.23.5"}
      data plane version: version.ProxyInfo{ID:"sb-887f89d7d-7s8ts.default", IstioVersion:"1.23.5"}
      data plane version: version.ProxyInfo{ID:"gid-deployment-5dc86db4c4-kdshs.default", IstioVersion:"1.23.5"}
      
    2. 各ポッドを削除して、再始動します。 前のステップの出力では、ポッド名と名前空間が各項目に data plane version: version.ProxyInfo{ID:"<pod_name>.<namespace>", IstioVersion:"1.23.5"} としてリストされています。

      kubectl delete pod <pod_name> -n <namespace>
      
ConfigMap
configmap に追加した設定を変更したい場合は、パッチ・スクリプトを使用します。 例えば、istio-global-proxy-accessLogFile: "/dev/stdout" 設定を追加した後で、"" に戻す場合は、kubectl patch cm managed-istio-custom -n ibm-operators --type='json' -p='[{"op": "add", "path": "/data/istio-global-proxy-accessLogFile", "value":""}]' を実行します。
カスタマイズ・セットアップのデバッグが必要ですか?
addon-istio-operator (Istio バージョン 1.10 以降)または managed-istio-operator (Istio バージョン 1.9 以前)ポッドのログを、 kubectl logs -n ibm-operators -l name=managed-istio-operator を実行して確認する。 行われたすべてのカスタム Istio の変更は、Istio オペレーターにより検証および調整されます。

Istio アドオンを無効化する場合、アンインストール中に managed-istio-custom 構成マップが削除されることはありません。 Istio アドオンを再有効化すると、カスタマイズした構成マップがインストール中に適用されます。 Istio を後からインストールするときにカスタム設定を再使用しない場合は、kubectl delete cm -n ibm-operators managed-istio-custom を実行して Istio アドオンを無効にした後で configmap を削除する必要があります。 Istio アドオンを再有効化するときに、インストール中にデフォルトの構成マップが適用されます。

Istio アドオンをアンインストールしています

Istioでの作業が終了したら、クラスタ内のIstioリソースをクリーンアップし、Istioアドオンをアンインストールすることができます。

ステップ1:アンインストール前のリソースの保存

istio-system 名前空間で作成または変更したリソースはすべて削除されます。 これらのリソースを保持するには、Istioアドオンをアンインストールする前に保存してください。

  1. managed-istio-custom ConfigMap を保存して、問題のトラブルシューティングを行ったり、後でアドオンを再インストールしたりします。

    kubectl get cm -n ibm-operators managed-istio-custom -o yaml > Customizations.yaml
    
  2. すべての IstioOperator CR (IOP) を保存します。

    a. IOP リソースをリストします。

    kubectl get iop -A
    

    b. リストされた IOP リソースごとに、それぞれをファイルに保管します。

    kubectl get iop -n <IOP_namespace> <IOP_name> -o yaml > <IOP_name>.yaml
    

ステップ 2: Istio アドオンのアンインストール

コンソールまたは CLI からアドオンをアンインストールします。 Istio 1.20 以前の場合、カスタム Istio オペレーター (IOP) リソースはすべて自動的に削除されます。

コンソールからの Istio アドオンのアンインストール
  1. クラスター・ダッシュボードで、Istioアドオンを削除するクラスター名をクリックします。

  2. **「アドオン」**セクションにナビゲートします。

  3. マネージド Istio カード上で、「アクション」メニュー・アイコンをクリックします。

  4. **「アンインストール」**をクリックします。 このクラスター内のマネージド Istio アドオンが無効になり、このクラスター内の Istio リソースがすべて削除されます。

  5. マネージド Istio カードに、アンインストールしたアドオンが表示されなくなったことを確認します。

CLIからIstioアドオンをアンインストールする

非推奨の istio-sample-bookinfoistio-extras アドオンをインストールしていない場合は、ステップ 1 と 2 を省略してください。

  1. istio-sample-bookinfoアドオンを無効にします。
    ibmcloud ks cluster addon disable istio-sample-bookinfo --cluster <cluster_name_or_ID>
    
  2. istio-extrasアドオンを無効にします。
    ibmcloud ks cluster addon disable istio-extras --cluster <cluster_name_or_ID>
    
  3. istioアドオンを無効にします。
    ibmcloud ks cluster addon disable istio --cluster <cluster_name_or_ID> -f
    
  4. このクラスター内のすべてのマネージド Istio アドオンが無効になっていることを確認します。 どのような Istio アドオンも出力で返されません。
    ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
    

ステップ 3: リソースの削除

リソースが保存され、アドオンが無効になった後、リソースを削除できます。

  1. アンインストール中に managed-istio-custom 構成マップが削除されることはありません。 後で Istio アドオンを再有効化する場合、構成マップに対して行ったカスタマイズ設定がインストール時に適用されます。 後から Istio をインストールするときにカスタム設定を再使用しない場合は、configmap を削除する必要があります。

    kubectl delete cm -n ibm-operators managed-istio-custom
    
  2. カスタム Ingress ゲートウェイの場合など、作成したすべてのカスタム Istio オペレーター (IOP) リソースを削除します。 このコマンドを実行すると、Istio オペレーターにより、IOP リソースが作成したすべてのリソース (デプロイメントやサービスなど) が自動的に削除されます。

    kubectl delete IstioOperator <resource_name> -n <namespace>
    
  3. Istio 1.21 以降の場合は、 managed-istio IOP を削除します。

    kubectl delete iop -n ibm-operators managed-istio
    
  4. 10 分間待ってから、次のステップに進みます。

ステップ4:Istioオペレータを削除する

アドオンが完全にアンインストールされたら、Istio オペレーターを削除できます。

Istio オペレーター・デプロイメント、サービス・アカウント、クラスター役割バインディング、およびクラスター役割を削除します。

kubectl delete deployment -n ibm-operators addon-istio-operator --ignore-not-found=true
kubectl delete serviceaccount -n ibm-operators addon-istio-operator --ignore-not-found=true
kubectl delete clusterrolebinding addon-istio-operator --ignore-not-found=true
kubectl delete clusterrole addon-istio-operator --ignore-not-found=true

クラスター内にインストールされている他の Istio のアンインストール

IBM Helm チャートまたは別の方法を使用して既にクラスターに Istio をインストールした場合は、その Istio インストール済み環境をクリーンアップしてから、クラスター内のマネージド Istio アドオンを有効にしてください。 クラスター内に Istio が既に存在しているかどうかを確認するには、kubectl get namespaces を実行し、出力で istio-system 名前空間を探します。

  • IBM Cloud Istio Helm チャートを使用して Istio をインストールした場合は、以下のようにします。

    1. Istio Helm デプロイメントをアンインストールします。
      helm del istio --purge
      
    2. Helm 2.9 以前を使用した場合は、さらにジョブ・リソースを削除します。
      kubectl -n istio-system delete job --all
      
    3. アンインストール処理には、最大 10 分かかります。 Istio マネージド・アドオンをクラスターにインストールする前に、kubectl get namespaces を実行して、istio-system 名前空間が削除されたことを確認します。
  • Istioを手動でインストールした場合、またはIstioコミュニティ Helm チャートを使用した場合は、 Istioアンインストールドキュメントを参照してください。

  • 以前にクラスター内に BookInfo をインストールした場合は、それらのリソースをクリーンアップします。

    1. ディレクトリーを Istio ファイルの場所に切り替えます。
      cd <filepath>/istio-1.23.5
      
    2. クラスター内の BookInfo サービス、ポッド、デプロイメントをすべて削除します。
      samples/bookinfo/platform/kube/cleanup.sh
      
    3. アンインストール処理には、最大 10 分かかります。 Istio マネージド・アドオンをクラスターにインストールする前に、kubectl get namespaces を実行して、istio-system 名前空間が削除されたことを確認します。

Istio アドオンのトラブルシューティング

マネージド Istio アドオンの使用時によく起きる問題の解決方法については、マネージド・アドオンのトラブルシューティングを参照してください。

istioctl CLI のインストール

ご使用のコンピューターに istioctl CLI クライアントをインストールします。 詳しくは、 istioctl コマンドリファレンスを参照。

  1. クラスターにインストールした Istio のバージョンを確認します。
    istioctl version
    
  2. クラスターのIstioバージョンに合った istioctl のバージョンをコンピューターにダウンロードする。
    curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.23.5 sh -
    
  3. Istio パッケージ・ディレクトリーにナビゲートします。
    cd istio-1.23.5
    
  4. Linux および macOS ユーザー: istioctl クライアントを PATH システム変数に追加します。
    export PATH=$PWD/bin:$PATH
    

Istio アドオン 1.21 からコミュニティー Istio 1.21 へのマイグレーション

マネージド Istio アドオンの代わりにコミュニティー Istio を使用するようにマイグレーションできます。

開始前に

ステップ 1: コンソールからの Istio アドオンの無効化

コンソールまたはCLIからアドオンを無効にする。

  1. クラスター・ダッシュボードで、Istioアドオンを削除するクラスター名をクリックします。

  2. **「アドオン」**セクションにナビゲートします。

  3. マネージド Istio カード上で、「アクション」メニュー・アイコンをクリックします。

  4. **「アンインストール」**をクリックします。 このクラスターではマネージド Istio アドオンが無効になっています。

  5. マネージド Istio カードに、アンインストールしたアドオンが表示されなくなったことを確認します。

ステップ 1: CLI から Istio アドオンを使用不可にする

アドオンを無効にして、追加の Istio アドオンが残っていないことを確認します。

  1. istioアドオンを無効にします。
    ibmcloud ks cluster addon disable istio --cluster <cluster_name_or_ID> -f
    
  2. このクラスター内のすべてのマネージド Istio アドオンが無効になっていることを確認します。 どのような Istio アドオンも出力で返されません。
    ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
    
  3. 10 分間待ってから、次のステップに進みます。 これでistio演算子をアンマネージする時間ができた。

ステップ2:Istioオペレータのスケールダウン

Istioオペレータのデプロイメントをスケールダウンする。

以下のコマンドを実行します。

kubectl scale deployment -n ibm-operators addon-istio-operator --replicas=0

ステップ 3: リソースの保存

istio-system ネームスペースで作成または変更したリソースと、カスタム・リソース定義 (CRD)によって自動的に生成されたすべての Kubernetes リソースを保存します。

  1. managed-istio-custom ConfigMap を保存して、問題のトラブルシューティングを行ったり、後でアドオンを再インストールしたりします。

    kubectl get cm -n ibm-operators managed-istio-custom -o yaml > Customizations.yaml
    
  2. すべての IstioOperator CR (IOP) を保存します。

    • IOP リソースをリストします。
      kubectl get iop -A
      
    • リストアップされた各IOPリソースについて、ファイナライザを削除する。 managed-istio IOP の使用例:
      kubectl patch -n ibm-operators istiooperator/managed-istio --type json --patch='[ { "op": "remove", "path": "/metadata/finalizers" } ]'
      
    • リストされた IOP リソースごとに、それぞれをファイルに保管します。
      kubectl get iop -n <IOP_namespace> <IOP_name> -o yaml > <IOP_name>.yaml
      
  3. 10 分間待ってから、次のステップに進みます。

ステップ 4: IOPS のインストーラーの変更

カスタム Ingress ゲートウェイなど、すべての Istio オペレーター (IOP) リソースを削除します。

  1. istioctl cliツールが必要なパッチバージョンであることを確認してください。

    istioctl version
    
  2. 前のステップで保存した IOP ファイルごとに、 upgrade コマンドを実行します。

    istioctl upgrade -f <filename>.yaml
    

ステップ5:IstioオペレータとIOPの削除

Istioオペレータのデプロイメント、サービス・アカウント、クラスタ・ロール・バインディング、クラスタ・ロール、およびすべてのIOPを削除します。

  1. 以下のコマンドを実行して、istio operator deploymentを削除します:

    kubectl delete deployment -n ibm-operators addon-istio-operator --ignore-not-found=true
    kubectl delete serviceaccount -n ibm-operators addon-istio-operator --ignore-not-found=true
    kubectl delete clusterrolebinding addon-istio-operator --ignore-not-found=true
    kubectl delete clusterrole addon-istio-operator --ignore-not-found=true
    
  2. IOPを削除する。

    • IOP リソースをリストします。
      kubectl get iop -A
      
    • リストされた各IOPリソースについて、それを削除する:
      kubectl delete IstioOperator <resource_name> -n <namespace>
      

ステップ6:ConfigMapの削除

ConfigMap は以前に保存されているため、削除できます。

managed-istio-custom ConfigMapを削除します。

kubectl delete cm -n ibm-operators managed-istio-custom

アドオンの削除が完了しました。必要に応じて、引き続きコミュニティー Istio を使用してアップグレードすることができます。