依存ツールのインストールとクラスタの検証

このページでは、Cloud Service Mesh をインストールするための環境とクラスタを準備する方法について説明します。

必要なツールをインストールする

asmcli は、Cloud Shell 上または Linux を実行しているローカルマシン上で実行できます。Cloud Shell で必要なすべてのツールがプリインストールされます。

asmcli をローカルで実行する場合は、次のツールがインストールされていることを確認してください。

  • Google Cloud CLI
  • 標準のコマンドライン ツール: awkcurlgrepsedtr
  • git
  • kubectl
  • jq
  • (省略可、接続のテスト用)netcat(nc

gcloud を構成する

Cloud Shell を使用している場合でも、次の手順を実施します。

  1. Google Cloud CLI で認証します。

    gcloud auth login --project PROJECT_ID
    
  2. コンポーネントを更新します。

    gcloud components update
    
  3. Cloud Service Mesh を GKE クラスタにインストールする場合は、クラスタを参照するように kubectl を構成します。

    gcloud container clusters get-credentials CLUSTER_NAME \
         --location CLUSTER_LOCATION \
         --project PROJECT_ID
    

asmcli をダウンロードする

このセクションでは、asmcli のダウンロード方法について説明します。

  1. Cloud Service Mesh 1.19.10 をインストールするバージョンを現在の作業ディレクトリにダウンロードします。

    curl https://storage.googleapis.com/csm-artifacts/asm/asmcli_1.19 > asmcli
    

    予想される出力:

    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
    100  167k  100  167k    0     0   701k      0 --:--:-- --:--:-- --:--:--  701k
    
  2. スクリプトを実行可能にします。

    chmod +x asmcli
    

クラスタ管理者の権限を付与する

  1. コンテキストがユーザー クラスタに設定されていることを確認します。

    kubectl config use-context CONTEXT
  2. ユーザー アカウント(Google Cloud ログイン メールアドレス)にクラスタ管理者の権限を付与します。この権限は、Cloud Service Mesh に必要なロールベースのアクセス制御(RBAC)ルールを作成するのに必要です。

    kubectl create clusterrolebinding cluster-admin-binding \
      --clusterrole=cluster-admin \
      --user=USER_ACCOUNT

プロジェクトとクラスタを検証する

asmcli validate を実行すると、プロジェクトとクラスタに対して Cloud Service Mesh のインストールに必要な設定が行われているかどうか確認できます。このオプションを使用すると、asmcliasmcli はプロジェクトやクラスタを変更せず、Cloud Service Mesh をインストールしません。

asmcli は、以下のことを確認します。

デフォルトでは、asmcli でインストール ファイルをダウンロードして抽出し、GitHub から asm 構成パッケージを一時ディレクトリにダウンロードします。終了する前に、asmcli で一時ディレクトリの名前を指定するメッセージが出力されます。--output_dir DIR_PATH オプションを使用して、ダウンロード用のディレクトリを指定することをおすすめします。--output_dir オプションを使用すると、istioctl コマンドライン ツールを簡単に使用できます(構成に関する問題のトラブルシューティングまたは限定公開 GKE クラスタでのマルチクラスタ メッシュの設定で、istioctl が必要になる場合があります)。また、asmcli を使用してオプションの機能を有効にする構成ファイルが asm/istio/options ディレクトリにあります。

次のコマンドを実行して構成を検証し、インストール ファイルと asm パッケージを OUTPUT_DIR ディレクトリにダウンロードします。

GKE

./asmcli validate \
  --project_id PROJECT_ID \
  --cluster_name CLUSTER_NAME \
  --cluster_location CLUSTER_LOCATION \
  --fleet_id FLEET_PROJECT_ID \
  --output_dir DIR_PATH
  • --project_id--cluster_name--cluster_location: クラスタが属するプロジェクト ID、クラスタ名、クラスタゾーンまたはリージョンを指定します。

  • --fleet_id: フリート ホスト プロジェクトのプロジェクト ID。asmcli validate は、クラスタが指定されたフリートに登録されていることを確認します。

  • --output_dir: asmcliasm パッケージをダウンロードして、istioctl、サンプル、マニフェストを含むインストール ファイルを抽出するディレクトリを指定する場合に指定します。それ以外の場合、asmcli はファイルを tmp ディレクトリにダウンロードします。相対パスまたはフルパスを指定できます。環境変数 $PWD はここでは機能しません。

Google Cloud 以外

asmcli validate をプラットフォーム(Google Distributed Cloud、Google Distributed Cloud、GKE on AWS、Amazon EKS、Microsoft AKS)で実行するには、次のコマンドを使用します。

  1. 現在のコンテキストをユーザー クラスタに設定します。

    kubectl config use-context CLUSTER_NAME
    
  2. 次のコマンドを実行して構成を検証し、インストール ファイルと asm パッケージを OUTPUT_DIR ディレクトリにダウンロードします。

    ./asmcli validate \
      --kubeconfig KUBECONFIG_FILE \
      --fleet_id FLEET_PROJECT_ID \
      --output_dir DIR_PATH \
      --platform multicloud
    
    • --kubeconfig: kubeconfig のパス。相対パスまたはフルパスを指定できます。環境変数 $PWD はここでは機能しません。

    • --fleet_id: フリート ホスト プロジェクトのプロジェクト ID。asmcli validate は、クラスタが指定されたフリートに登録されていることを確認します。

    • --output_dir: asmcliasm パッケージをダウンロードして、istioctl、サンプル、マニフェストを含むインストール ファイルを抽出するディレクトリを指定する場合に指定します。それ以外の場合、asmcli はファイルを tmp ディレクトリにダウンロードします。相対パスまたはフルパスを指定できます。環境変数 $PWD はここでは機能しません。

    • --platform multicloud プラットフォームがオンプレミスやマルチクラウドなど、Google Cloud 以外であることを指定します。

成功すると、asmcli から次の出力が返されます。

asmcli: Setting up necessary files...
asmcli: Using asm_kubeconfig as the kubeconfig...
asmcli: Checking installation tool dependencies...
asmcli: Fetching/writing GCP credentials to kubeconfig file...
asmcli: Verifying connectivity (10s)...
asmcli: kubeconfig set to asm_kubeconfig
asmcli: using context gke_example-project-12345_us-central1_cluster-2
asmcli: Getting account information...
asmcli: Downloading ASM..
asmcli: Downloading ASM kpt package...
fetching package "/asm" from "https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages" to "asm"
asmcli: Checking required APIs...
asmcli: Checking for project example-project-12345...
asmcli: Reading labels for us-central1/cluster-2...
asmcli: Checking for istio-system namespace...
asmcli: Confirming node pool requirements for example-project-12345/us-central1/cluster-2...
asmcli: Checking Istio installations...
asmcli: [WARNING]: There is no way to validate that the meshconfig API has been initialized.
asmcli: [WARNING]: This needs to happen once per GCP project. If the API has not been initialized
asmcli: [WARNING]: for example-project-12345, please re-run this tool with the --enable_gcp_components
asmcli: [WARNING]: flag. Otherwise, installation will succeed but Anthos Service Mesh
asmcli: [WARNING]: will not function correctly.
asmcli: Successfully validated all requirements to install ASM.

テストが検証で 1 つでも不合格だと、asmcli はエラー メッセージを出力します。 たとえば、プロジェクトで必要な Google API が有効になっていない場合は、次のエラーが表示されます。

ERROR: One or more APIs are not enabled. Please enable them and retry, or run
`asmcli` with the '--enable_gcp_apis' flag to allow `asmcli` to enable them
on your behalf.

イネーブルメント フラグを使用した asmcli を実行する必要があるというエラー メッセージが表示された場合は、次の選択肢があります。

  • asmcli を実行して実際にインストールする場合は、エラー メッセージの特別なフラグまたは --enable_all フラグを使用します。

  • また、プロジェクトと GKE クラスタを自分で設定するの説明に従って、asmcli を実行する前にプロジェクトとクラスタを自分で更新することもできます。

asmcli validate では、プロジェクトとクラスタをインストールする準備ができていることのみが検証されるため、イネーブルメント フラグは使用できません。

クラスタのインストールとアップグレードの要件を調べる

アップグレードを行う前に、構成が新しいバージョンの Cloud Service Mesh と互換性があることを確認してください。

  1. --output_dir で指定したディレクトリに移動します。

  2. 次のコマンドを実行して、Kubernetes クラスタのインストールとアップグレードの要件を調べます。新しい Cloud Service Mesh バージョンで配布される istioctl のバージョンを使用します。

    istioctl experimental precheck
    

次のステップ