バンドルされた Istio を Cloud Service Mesh に移行する

この手順は、Knative serving GKE アドオンにデフォルトで含まれている Istio のバンドル バージョンに固有のものです。

Knative serving の GKE アドオンのアンインストール プロセスを実行したときに Istio のバンドル バージョンがアンインストールされるため、このページで説明する手順では、クラスタに Cloud Service Mesh をインストールして、Ingress ゲートウェイを構成します。

始める前に

概要

一般に、バンドルされている Istio から移行するときに Cloud Service Mesh をインストールするプロセスは、Cloud Service Mesh を新規にインストールする場合と同じです。このプロセスでは、クラスタ内コントロール プレーンとともに Cloud Service Mesh バージョン 1.18 がインストールされます。

Cloud Service Mesh バージョン 1.18 をインストールする

Cloud Service Mesh をインストールする際は、Cloud Service Mesh のインストール ドキュメントをご覧ください。

始める前に:

  • 移行の場合は、後続の構成手順で Ingress ゲートウェイを個別にインストールする必要があります。インストール スクリプトは、デフォルトでは Ingress ゲートウェイをインストールしません。

  • 省略可: Cloud Service Mesh 認証局(Mesh CA)を使用する場合は、Cloud Service Mesh インストール スクリプトに --ca mesh_ca フラグを含める必要があります。

Cloud Service Mesh をインストールするには:

Cloud Service Mesh のドキュメントの Cloud Service Mesh バージョン 1.18 をインストールするの手順に沿って操作します。

必須フラグを含むデフォルト コマンドの例を次に示します。

./asmcli install \
  --project_id ${PROJECT_ID} \
  --cluster_name ${CLUSTER_NAME} \
  --cluster_location ${CLUSTER_LOCATION} \
  --ca mesh_ca \
  --output_dir DIR_PATH \
  --enable_all

Cloud Service Mesh Ingress を構成する

このセクションでは、移行スクリプトを使用して、gke-system Namespace 内に Cloud Service Mesh Ingress ゲートウェイを作成します。

移行の場合、gke-system Namespace を使用して、最近削除された「バンドルされた Istio」で使用されているのと同じ Namespace に Ingress ゲートウェイが配置されるようにします。そのため、Cloud Service Mesh Ingress Pod は、Ingress サービスに必要な構成を変更することなく、トラフィックをシームレスに引き継ぐことができます。たとえば、新しい外部 IP アドレスを構成する必要はありません。

  1. gke-system Namespace に Ingress ゲートウェイを作成するには、次のコマンドを実行して移行スクリプトを開始します。

    ./migration-addon.sh --command set-up-asm-ingress
    

    処理中のターミナル出力は次のようになります。

    Setting up Cloud Service Mesh ingress. Note that the Cloud Service Mesh ingress is not
    serving traffic at this step.
    namespace/gke-system labeled
    deployment.apps/istio-ingressgateway created
    horizontalpodautoscaler.autoscaling/istio-ingressgateway created
    role.rbac.authorization.k8s.io/istio-ingressgateway-sds created
    rolebinding.rbac.authorization.k8s.io/istio-ingressgateway-sds created
    Cloud Service Mesh ingress is successfully installed.
    
  2. 次のコマンドを実行して、istio-ingrerssgateway Ingress ゲートウェイが gke-system Namespace で実行されていることを確認します。

    kubectl get deployment istio-ingressgateway -n gke-system
    

    istio-ingressgateway Pod の数は意図的に 0 になっています。Knative serving フリート コンポーネントをインストールしたら、後続のステップで Cloud Service Mesh Ingress にすべてのトラフィックを移行します。

次のステップ

フリート コンポーネントをインストールする

ロールバック

上記の手順で加えた変更をロールバックする必要がある場合は、移行スクリプトを使用して次の処理を行います。

  • Cloud Service Mesh の Ingress ゲートウェイを削除します。
  • Cloud Service Mesh をアンインストールします。

Cloud Service Mesh の構成とインストールをロールバックするには:

  1. 次のコマンドを実行して、ロールバックを開始します。

    ./migration-addon.sh --command rollback-set-up-asm-ingress
    

    処理中のターミナル出力は次のようになります。

    Deleting Cloud Service Mesh ingress
    deployment.apps "istio-ingressgateway" deleted
    horizontalpodautoscaler.autoscaling "istio-ingressgateway" deleted
    role.rbac.authorization.k8s.io "istio-ingressgateway-sds" deleted
    rolebinding.rbac.authorization.k8s.io "istio-ingressgateway-sds" deleted
    Cloud Service Mesh ingress is successfully deleted.
    
  2. Cloud Service Mesh Ingress ゲートウェイが削除されたことを確認するため、istio-ingressgateway サービスが gke-system Namespace に存在しないことを確認します。

    kubectl get deployment istio-ingressgateway -n gke-system
    
  3. Cloud Service Mesh をアンインストールする

  4. すべての変更をロールバックしてインストールを元の状態に戻すには、Knative serving GKE アドオンをロールバックします。