依存ツールのインストールとクラスタの検証
このページでは、Cloud Service Mesh をインストールするための環境とクラスタを準備する方法について説明します。
必要なツールをインストールする
asmcli
は、Cloud Shell 上または Linux を実行しているローカルマシン上で実行できます。Cloud Shell で必要なすべてのツールがプリインストールされます。
asmcli
をローカルで実行する場合は、次のツールがインストールされていることを確認してください。
- Google Cloud CLI
- 標準のコマンドライン ツール:
awk
、curl
、grep
、sed
、tr
git
kubectl
jq
- (省略可、接続のテスト用)netcat(
nc
)
gcloud を構成する
Cloud Shell を使用している場合でも、次の手順を実施します。
Google Cloud CLI で認証します。
gcloud auth login --project PROJECT_ID
コンポーネントを更新します。
gcloud components update
Cloud Service Mesh を GKE クラスタにインストールする場合は、クラスタを参照するように
kubectl
を構成します。gcloud container clusters get-credentials CLUSTER_NAME \ --location CLUSTER_LOCATION \ --project PROJECT_ID
asmcli をダウンロードする
このセクションでは、asmcli
のダウンロード方法について説明します。
Cloud Service Mesh 1.18.7 をインストールするバージョンを現在の作業ディレクトリにダウンロードします。
curl https://storage.googleapis.com/csm-artifacts/asm/asmcli_1.18 > 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
スクリプトを実行可能にします。
chmod +x asmcli
クラスタ管理者の権限を付与する
コンテキストがユーザー クラスタに設定されていることを確認します。
kubectl config use-context CONTEXT
ユーザー アカウント(Google Cloud ログイン メールアドレス)にクラスタ管理者の権限を付与します。この権限は、Cloud Service Mesh に必要なロールベースのアクセス制御(RBAC)ルールを作成するのに必要です。
kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin \ --user=USER_ACCOUNT
プロジェクトとクラスタを検証する
asmcli validate
を実行すると、プロジェクトとクラスタに対して Cloud Service Mesh のインストールに必要な設定が行われているかどうか確認できます。このオプションを使用すると、asmcli
asmcli はプロジェクトやクラスタを変更せず、Cloud Service Mesh をインストールしません。
asmcli
は、以下のことを確認します。
環境に必要なツールがある。
クラスタが最小要件を満たしている。
指定されたプロジェクトに必要な権限がある。
プロジェクトで必要な Google API がすべて有効になっている。
デフォルトでは、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
:asmcli
がasm
パッケージをダウンロードして、istioctl
、サンプル、マニフェストを含むインストール ファイルを抽出するディレクトリを指定する場合に指定します。それ以外の場合、asmcli
はファイルをtmp
ディレクトリにダウンロードします。相対パスまたはフルパスを指定できます。環境変数$PWD
はここでは機能しません。
Google Cloud 以外
asmcli validate
をプラットフォーム(Google Distributed Cloud、Google Distributed Cloud、GKE on AWS、Amazon EKS、Microsoft AKS)で実行するには、次のコマンドを使用します。
現在のコンテキストをユーザー クラスタに設定します。
kubectl config use-context CLUSTER_NAME
次のコマンドを実行して構成を検証し、インストール ファイルと
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
:asmcli
がasm
パッケージをダウンロードして、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 と互換性があることを確認してください。
--output_dir
で指定したディレクトリに移動します。次のコマンドを実行して、Kubernetes クラスタのインストールとアップグレードの要件を調べます。新しい Cloud Service Mesh バージョンで配布される
istioctl
のバージョンを使用します。istioctl experimental precheck