Istio のセットアップ
Istio マネージド・アドオンのセットアップ
IBM Cloud® Kubernetes Service 上の Istio は、Istio のシームレス・インストール、Istio コントロール・プレーン・コンポーネントの自動更新とライフサイクル管理、およびプラットフォームのロギングとモニタリングのツールとの統合を行います。
Istio アドオンのインストール
コミュニティー Istio の代わりに、マネージド Istio アドオンをインストールできます。
開始前に
- IBM Cloud Kubernetes Service の IAM サービスアクセスロールが Writer または Manager IBM Cloud であることを確認してください。
- それぞれが 4 コアと 16 GB のメモリー (
b3c.4x16
) 以上を備えた、少なくとも 3 つのワーカー・ノードのある標準 Kubernetes クラスターを作成します。 - クラスターにおいて管理対象 Istio アドオンと同時にコミュニティー Istio を実行することはできません。 既存のクラスターを使用している場合に、IBM Helm チャートまたは別の方法を使用して、そのクラスターに Istio を既にインストールしている場合は、その Istio インストール済み環境をクリーンアップしてください。
- クラシック・マルチゾーン・クラスター: IBM Cloud インフラストラクチャー・アカウントに対して Virtual Routing and Forwarding(VRF) を有効にしていることを確認します。 VRF を有効にするには、VRF の有効化を参照してください。
VRF が既に有効になっているかどうかを確認するには、
ibmcloud account show
コマンドを使用します。 VRF を有効にできない、または有効にしない場合は、VLAN スパンニングを有効にします。 このアクションを実行するには、 ネットワークVLANスパニングインフラストラクチャの管理権限が必要です。 VLANスパニングがすでに有効になっているかどうかを確認するには、ibmcloud ks vlan spanning get --region <region>
コマンドを 使用します。
コンソールを使用した Istio アドオンのインストール
-
クラスター・ダッシュボードで、Istioアドオンをインストールするクラスター名をクリックします。
-
**「アドオン」**セクションにナビゲートします。
-
マネージド Istio カード上で、**「インストール」**をクリックします。
-
**「インストール」**をもう一度クリックします。
-
マネージド Istio カードに、アドオンが表示されていることを確認します。
CLI を使用した Istio アドオンのインストール
アカウントにログインします。 該当する場合は、適切なリソース・グループをターゲットにします。 クラスターのコンテキストを設定します。
-
サポート対象の Istio バージョンを確認します。
ibmcloud ks addon-versions --addon istio
-
istio
アドオンを有効にします。 一般に利用可能なIstio管理アドオンのデフォルト・バージョン、 1.23.5、インストールされている。ibmcloud ks cluster addon enable istio --cluster <cluster_name_or_ID>
-
マネージド 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
-
アドオンの各コンポーネントを表示して、Istio サービスおよび対応するポッドがデプロイされていることを確認することもできます。
kubectl get svc -n istio-system
kubectl get pods -n istio-system
-
次に、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 アドオンを前のバージョンに戻すことはできません。 前のマイナー・バージョンに戻す場合は、アドオンをアンインストールしてから、前のバージョンを指定してアドオンを再インストールする必要があります。
-
Istio アドオンの現在のバージョンを確認します。
kubectl get iop managed-istio -n ibm-operators -o jsonpath='{.metadata.annotations.version}'
-
使用可能な Istio アドオン・バージョンを確認します。
ibmcloud ks addon-versions
-
Istio アドオンの変更ログで、各バージョンの変更点を確認する。
-
バージョン 1.11 からバージョン 1.12 にアップグレードする場合に、Istio コンポーネントがバージョン 1.10 以前でプロビジョンされていたのであれば、以下のようにします。
-
ミューテーション Webhook 構成の詳細を取得するコマンドを実行します。
kubectl get mutatingwebhookconfigurations
出力例
NAME WEBHOOKS AGE istio-sidecar-injector 5 32m
-
出力で
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
-
追加の Webhook が削除されたことを確認します。 ミューテーション Webhook 構成の詳細を取得し、4 つの
istio-sidecar-injector
Webhook があることを確認します。kubectl get mutatingwebhookconfigurations
出力例
NAME WEBHOOKS AGE istio-sidecar-injector 4 60s
-
検証 Webhook 構成の詳細を取得するコマンドを実行します。
kubectl get validatingwebhookconfigurations
出力例
NAME WEBHOOKS AGE istio-validator-istio-system 2 66s istiod-istio-system 1 31m
-
出力を確認します。
istiod-istio-system
Webhook がリストされている場合は、次のコマンドを実行して、その Webhook を削除します。kubectl delete ValidatingWebhookConfiguration istiod-istio-system
出力例
validatingwebhookconfiguration.admissionregistration.k8s.io "istiod-istio-system" deleted
-
istiod-istio-system
Webhook がリストされなくなったことを確認します。kubectl get validatingwebhookconfigurations
出力例
NAME WEBHOOKS AGE istio-validator-istio-system 2 2m
-
-
Istio アドオンを更新します。
ibmcloud ks cluster addon update istio --version <version> -c <cluster_name_or_ID>
-
次に進む前に、更新が完了していることを確認します。
更新処理が完了するまでに、最大で 20 分かかる場合があります。
-
Istio アドオンの Health State が
normal
で、Health Status がAddon Ready
であることを確認します。 状態がupdating
の場合、更新はまだ完了していません。ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
-
istio-system
名前空間のコントロール・プレーン・コンポーネント・ポッドの STATUS がRunning
であることを確認します。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
-
istioctl
クライアントとサイドカーの更新
Istio マネージド・アドオンを更新したら、必ず、istioctl
クライアントとアプリの Istio サイドカーを更新してください。
例えば、IBM Cloud Kubernetes Service によって自動的にアドオンのパッチ・バージョンが更新されることや、アドオンのマイナー・バージョンを更新することがあります。 どちらの場合も、istioctl
クライアントとアプリの既存の Istio サイドカーを、アドオンの Istio バージョンと一致するように更新してください。
-
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} ...
-
出力で、
client version
(istioctl
) を Istio コントロール・プレーン・コンポーネントのバージョン (pilot version
など) と比較します。client version
とコントロール・プレーン・コンポーネントのバージョンが一致しない場合は、以下のようにします。-
コントロール・プレーン・コンポーネントと同じバージョンの
istioctl
クライアントをダウンロードします。curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.23.5 sh -
-
Istio パッケージ・ディレクトリーにナビゲートします。
cd istio-1.23.5
-
Linux および macOS ユーザー:
istioctl
クライアントをPATH
システム変数に追加します。export PATH=$PWD/bin:$PATH
-
-
ステップ 1 の出力で、データ・プレーン・ポッドごとに、
pilot version
をdata plane version
と比較します。pilot version
とdata plane version
が一致する場合は、追加の更新は必要ありません。pilot version
とdata 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 構成オプションをカスタマイズできます。 これらの設定には、コントロール・プレーンおよびサービス・メッシュのモニタリング、ロギング、およびネットワーキングに対する追加の制御が含まれます。
-
managed-istio-custom
ConfigMap リソースを説明し、その内容とインライン・ドキュメントを確認する。kubectl describe cm managed-istio-custom -n ibm-operators
-
managed-istio-custom
構成マップ・リソースを編集します。kubectl edit cm managed-istio-custom -n ibm-operators
-
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"
に設定することができます。
- デフォルト値: ゾーン 1 における
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 分経過すると、新しいオプションが含まれるデフォルトの構成マップがクラスターに作成されます。 その後、以前に構成した設定をバックアップからこのデフォルト構成マップにコピーし、新しい設定を構成し、変更を適用できます。
-
構成ファイルを保存して閉じます。
-
istio-global-logging-level
またはistio-global-proxy-accessLogFile
の設定を変更した場合、データ・プレーン・ポッドを再始動して、変更を適用する必要があります。-
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"}
-
各ポッドを削除して、再始動します。 前のステップの出力では、ポッド名と名前空間が各項目に
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アドオンをアンインストールする前に保存してください。
-
managed-istio-custom
ConfigMap を保存して、問題のトラブルシューティングを行ったり、後でアドオンを再インストールしたりします。kubectl get cm -n ibm-operators managed-istio-custom -o yaml > Customizations.yaml
-
すべての 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 アドオンのアンインストール
-
クラスター・ダッシュボードで、Istioアドオンを削除するクラスター名をクリックします。
-
**「アドオン」**セクションにナビゲートします。
-
マネージド Istio カード上で、「アクション」メニュー・アイコンをクリックします。
-
**「アンインストール」**をクリックします。 このクラスター内のマネージド Istio アドオンが無効になり、このクラスター内の Istio リソースがすべて削除されます。
-
マネージド Istio カードに、アンインストールしたアドオンが表示されなくなったことを確認します。
CLIからIstioアドオンをアンインストールする
非推奨の istio-sample-bookinfo
と istio-extras
アドオンをインストールしていない場合は、ステップ 1 と 2 を省略してください。
istio-sample-bookinfo
アドオンを無効にします。ibmcloud ks cluster addon disable istio-sample-bookinfo --cluster <cluster_name_or_ID>
istio-extras
アドオンを無効にします。ibmcloud ks cluster addon disable istio-extras --cluster <cluster_name_or_ID>
istio
アドオンを無効にします。ibmcloud ks cluster addon disable istio --cluster <cluster_name_or_ID> -f
- このクラスター内のすべてのマネージド Istio アドオンが無効になっていることを確認します。 どのような Istio アドオンも出力で返されません。
ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
ステップ 3: リソースの削除
リソースが保存され、アドオンが無効になった後、リソースを削除できます。
-
アンインストール中に
managed-istio-custom
構成マップが削除されることはありません。 後で Istio アドオンを再有効化する場合、構成マップに対して行ったカスタマイズ設定がインストール時に適用されます。 後から Istio をインストールするときにカスタム設定を再使用しない場合は、configmap を削除する必要があります。kubectl delete cm -n ibm-operators managed-istio-custom
-
カスタム Ingress ゲートウェイの場合など、作成したすべてのカスタム Istio オペレーター (IOP) リソースを削除します。 このコマンドを実行すると、Istio オペレーターにより、IOP リソースが作成したすべてのリソース (デプロイメントやサービスなど) が自動的に削除されます。
kubectl delete IstioOperator <resource_name> -n <namespace>
-
Istio 1.21 以降の場合は、
managed-istio
IOP を削除します。kubectl delete iop -n ibm-operators managed-istio
-
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 をインストールした場合は、以下のようにします。
- Istio Helm デプロイメントをアンインストールします。
helm del istio --purge
- Helm 2.9 以前を使用した場合は、さらにジョブ・リソースを削除します。
kubectl -n istio-system delete job --all
- アンインストール処理には、最大 10 分かかります。 Istio マネージド・アドオンをクラスターにインストールする前に、
kubectl get namespaces
を実行して、istio-system
名前空間が削除されたことを確認します。
- Istio Helm デプロイメントをアンインストールします。
-
Istioを手動でインストールした場合、またはIstioコミュニティ Helm チャートを使用した場合は、 Istioアンインストールドキュメントを参照してください。
-
以前にクラスター内に BookInfo をインストールした場合は、それらのリソースをクリーンアップします。
- ディレクトリーを Istio ファイルの場所に切り替えます。
cd <filepath>/istio-1.23.5
- クラスター内の BookInfo サービス、ポッド、デプロイメントをすべて削除します。
samples/bookinfo/platform/kube/cleanup.sh
- アンインストール処理には、最大 10 分かかります。 Istio マネージド・アドオンをクラスターにインストールする前に、
kubectl get namespaces
を実行して、istio-system
名前空間が削除されたことを確認します。
- ディレクトリーを Istio ファイルの場所に切り替えます。
Istio アドオンのトラブルシューティング
マネージド Istio アドオンの使用時によく起きる問題の解決方法については、マネージド・アドオンのトラブルシューティングを参照してください。
istioctl
CLI のインストール
ご使用のコンピューターに istioctl
CLI クライアントをインストールします。 詳しくは、 istioctl
コマンドリファレンスを参照。
- クラスターにインストールした Istio のバージョンを確認します。
istioctl version
- クラスターのIstioバージョンに合った
istioctl
のバージョンをコンピューターにダウンロードする。curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.23.5 sh -
- Istio パッケージ・ディレクトリーにナビゲートします。
cd istio-1.23.5
- Linux および macOS ユーザー:
istioctl
クライアントをPATH
システム変数に追加します。export PATH=$PWD/bin:$PATH
Istio アドオン 1.21 からコミュニティー Istio 1.21 へのマイグレーション
マネージド Istio アドオンの代わりにコミュニティー Istio を使用するようにマイグレーションできます。
開始前に
- 1.21より前のバージョンを使用している場合は、 Istio アドオンをバージョン 1.21に更新します。 このバージョンでは、アドオンを無効にしても、以前のバージョンで行われていたようなカスタム・リソースは削除されないため、このアップグレードは重要です。
- Istio が不要になった場合は、これらのステップを実行する代わりに、 コミュニティー Istio をインストールせずにアドオンをアンインストール できます。
ステップ 1: コンソールからの Istio アドオンの無効化
コンソールまたはCLIからアドオンを無効にする。
-
クラスター・ダッシュボードで、Istioアドオンを削除するクラスター名をクリックします。
-
**「アドオン」**セクションにナビゲートします。
-
マネージド Istio カード上で、「アクション」メニュー・アイコンをクリックします。
-
**「アンインストール」**をクリックします。 このクラスターではマネージド Istio アドオンが無効になっています。
-
マネージド Istio カードに、アンインストールしたアドオンが表示されなくなったことを確認します。
ステップ 1: CLI から Istio アドオンを使用不可にする
アドオンを無効にして、追加の Istio アドオンが残っていないことを確認します。
istio
アドオンを無効にします。ibmcloud ks cluster addon disable istio --cluster <cluster_name_or_ID> -f
- このクラスター内のすべてのマネージド Istio アドオンが無効になっていることを確認します。 どのような Istio アドオンも出力で返されません。
ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
- 10 分間待ってから、次のステップに進みます。 これでistio演算子をアンマネージする時間ができた。
ステップ2:Istioオペレータのスケールダウン
Istioオペレータのデプロイメントをスケールダウンする。
以下のコマンドを実行します。
kubectl scale deployment -n ibm-operators addon-istio-operator --replicas=0
ステップ 3: リソースの保存
istio-system
ネームスペースで作成または変更したリソースと、カスタム・リソース定義 (CRD)によって自動的に生成されたすべての Kubernetes リソースを保存します。
-
managed-istio-custom
ConfigMap を保存して、問題のトラブルシューティングを行ったり、後でアドオンを再インストールしたりします。kubectl get cm -n ibm-operators managed-istio-custom -o yaml > Customizations.yaml
-
すべての 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
- IOP リソースをリストします。
-
10 分間待ってから、次のステップに進みます。
ステップ 4: IOPS のインストーラーの変更
カスタム Ingress ゲートウェイなど、すべての Istio オペレーター (IOP) リソースを削除します。
-
istioctl
cliツールが必要なパッチバージョンであることを確認してください。istioctl version
-
前のステップで保存した IOP ファイルごとに、
upgrade
コマンドを実行します。istioctl upgrade -f <filename>.yaml
ステップ5:IstioオペレータとIOPの削除
Istioオペレータのデプロイメント、サービス・アカウント、クラスタ・ロール・バインディング、クラスタ・ロール、およびすべてのIOPを削除します。
-
以下のコマンドを実行して、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
-
IOPを削除する。
- IOP リソースをリストします。
kubectl get iop -A
- リストされた各IOPリソースについて、それを削除する:
kubectl delete IstioOperator <resource_name> -n <namespace>
- IOP リソースをリストします。
ステップ6:ConfigMapの削除
ConfigMap は以前に保存されているため、削除できます。
managed-istio-custom
ConfigMapを削除します。
kubectl delete cm -n ibm-operators managed-istio-custom
アドオンの削除が完了しました。必要に応じて、引き続きコミュニティー Istio を使用してアップグレードすることができます。