GKE 用 Anthos Service Mesh クイックスタート

このチュートリアルでは、Google 提供のスクリプト install_asm を使用して、Anthos Service Mesh 1.9.8-asm.6 を新しい Google Kubernetes Engine(GKE)クラスタにインストールします。このチュートリアルでは、次のことについて説明します。

  1. Google Cloud プロジェクトを構成する。
  2. Anthos Service Mesh で必要な最小限の vCPU を使用して GKE クラスタを作成する。
  3. クラスタ内コントロール プレーンを使用して Anthos Service Mesh をインストールする
  4. サンプル アプリケーションをデプロイして、Google Cloud コンソールの Anthos Service Mesh ダッシュボードにテレメトリー データを表示できるようにする。

費用

このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。 新しい Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

このクイックスタートの終了後、クラスタを削除するとそれ以上の請求が発生しなくなります。詳細については、クリーンアップをご覧ください。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Kubernetes Engine API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Kubernetes Engine API.

    Enable the API

  8. プロジェクト ID をメモします。

Anthos Service Mesh には他の API も必要ですが、install_asm スクリプトにより、API が自動的に有効になります。課金費用を抑えるため、install_asm スクリプトは GKE Enterprise API を有効にしません。GKE Enterprise API が有効になっている場合、Google Cloud コンソールにはいくつかの違いがあります。詳細については、GKE Enterprise と Anthos Service Mesh の UI の違いをご覧ください。

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

スクリプトは、Cloud Shell 上、または Linux を実行するローカルマシン上で実行できます。Cloud Shell で必要なすべてのツールがプリインストールされます。macOS には bash の古いバージョンが付属しているため、サポートされませんので注意してください。

Cloud Shell

Cloud Shell は、Debian ベースの Linux オペレーティング システムを実行している g1-small Compute Engine 仮想マシン(VM)をプロビジョニングします。Cloud Shell を使用する利点は次のとおりです。

  • Cloud Shell には、gcloudkubectlkpt、必要な他のコマンドライン ツールが含まれています。

  • Cloud Shell の $HOME ディレクトリには 5 GB の永続ストレージ スペースがあります。

  • テキスト エディタを選択できます。

    • コードエディタ。Cloud Shell ウィンドウの上部にある をクリックしてアクセスします。

    • Emacs、Vim、Nano。Cloud Shell のコマンドラインからアクセスします。

Cloud Shell を使用するには:

  1. Google Cloud コンソールに移動します。
  2. Google Cloud プロジェクトを選択します。
  3. Google Cloud コンソール ウィンドウの上部にある [Cloud Shell をアクティブにする] ボタンをクリックします。

    Google Cloud Platform コンソール

    Google Cloud コンソールの一番下にある新しいフレームの中で Cloud Shell セッションが開き、コマンドライン プロンプトが表示されます。

    Cloud Shell セッション

ローカル Linux コンピュータ

  1. 次のツールがインストールされていることを確認してください。

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

    gcloud auth login
    
  3. コンポーネントを更新します。

    gcloud components update
    
  4. kpt から検出できるように、パスに git を設定します。

GKE クラスタを作成する

  1. 次のコマンドを実行して、Anthos Service Mesh に必要な vCPU の最小数を要件とするクラスタを作成します。コマンドのプレースホルダを次の情報に置き換えます。

    • CLUSTER_NAME: クラスタの名前。名前には、小文字の英数字と - のみを使用できます。先頭には英字、末尾には英数字を使用し、40 文字以下にする必要があります。
    • PROJECT_ID: クラスタが作成されるプロジェクト ID。
    • CLUSTER_LOCATION: クラスタのゾーンus-central1-a など)。
    gcloud container clusters create CLUSTER_NAME  \
        --project=PROJECT_ID \
        --zone=CLUSTER_LOCATION  \
        --machine-type=e2-standard-4 \
        --num-nodes=2 \
        --workload-pool=PROJECT_ID.svc.id.goog
    
  2. クラスタとやり取りするために必要な認証情報を取得します。このコマンドは、クラスタに対して kubectl の現在のコンテキストも設定します。

    gcloud container clusters get-credentials CLUSTER_NAME  \
        --project=PROJECT_ID \
        --zone=CLUSTER_LOCATION
    

ASM インストール スクリプトをダウンロードする

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

    curl https://storage.googleapis.com/csm-artifacts/asm/install_asm_1.9 > install_asm
    
  2. 現在の作業ディレクトリにファイルの SHA-256 をダウンロードします。

    curl https://storage.googleapis.com/csm-artifacts/asm/install_asm_1.9.sha256 > install_asm.sha256
    
  3. 両方のファイルを同じディレクトリに置いて、ダウンロードを検証します。

    sha256sum -c --ignore-missing install_asm.sha256
    

    検証が成功すると、コマンドは install_asm: OK を出力します。

    互換性を維持するため、install_asm.sha256 にはチェックサムを 2 回含めて、スクリプトのすべてのバージョンの名前を install_asm に変更できるようにします。--ignore-missing が存在しないというエラーが表示された場合は、--ignore-missing フラグを指定せずに上記のコマンドを再実行します。

  4. スクリプトを実行可能にします。

    chmod +x install_asm
    

Anthos Service Mesh をインストールする

以前に作成したクラスタに Anthos Service Mesh をインストールするには、次のオプションを使用して install_asm スクリプトを実行します。クラスタを作成してからこのページを閉じていない場合は、gcloud container clusters create コマンドに入力した値がプレースホルダに設定されます。

./install_asm \
  --project_id PROJECT_ID \
  --cluster_name CLUSTER_NAME  \
  --cluster_location CLUSTER_LOCATION  \
  --mode install \
  --output_dir ./asm-downloads \
  --enable_all

install_asm スクリプトが完了するまでに数分かかる場合があります。このスクリプトは、進捗状況を追跡できるように情報メッセージを出力します。

このコマンドは、次のオプションを指定して install_asm を実行します。

  • --mode install: 新規インストールのスクリプトを実行し、Anthos Service Mesh 認証局(Mesh CA)を有効にします。これは、インストール用のデフォルトの認証局(CA)になります。
  • --output_dir ./asm-downloads: スクリプトが anthos-service-mesh リポジトリからファイルをダウンロードするディレクトリ。このディレクトリから istioctl、サンプル、マニフェストが含まれる Anthos Service Mesh のインストール ファイルのダウンロードと抽出を行います。
  • --enable-registration: スクリプトによって、クラスタが属するプロジェクトにクラスタを登録できるようにします。
  • --enable_all: スクリプトによって必要な Google API の有効化、Identity and Access Management の権限の設定、GKE Workload Identity の有効化など、クラスタに必要な更新を行うことができるようにします。

Online Boutique のサンプルをデプロイする

  1. kpt を使用してサンプルをダウンロードします。

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/microservices-demo.git/release \
    online-boutique
    
  2. アプリケーションの名前空間を作成します。

    kubectl create namespace demo
    
  3. 自動サイドカー インジェクション(自動挿入)を有効にします。次のコマンドを使用して、istiod サービスのラベルを見つけます。このラベルには、後のステップで使用するリビジョン ラベルの値が含まれます。

    kubectl -n istio-system get pods -l app=istiod --show-labels
    

    出力は次のようになります。

    NAME                                READY   STATUS    RESTARTS   AGE   LABELS
    istiod-asm-198-6-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-198-6-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586

    出力の LABELS 列で、接頭辞 istio.io/rev= に続く istiod リビジョン ラベルの値をメモします。この例での値は asm-198-6 です。

  4. リビジョン ラベルを名前空間に適用します。次のコマンドにおいて、REVISION は前の手順でメモした istiod リビジョン ラベルの値です。

    kubectl label namespace demo istio-injection- istio.io/rev=REVISION --overwrite
    

    出力中のメッセージ "istio-injection not found" は無視します。これは、今までは名前空間に istio-injection ラベルが付いていなかったことを意味します。Anthos Service Mesh の新規インストールや新規デプロイでは、こうなって当然です。名前空間に istio-injection とリビジョン ラベルの両方があると自動インジェクションが失敗するため、Anthos Service Mesh ドキュメント内のすべての kubectl label コマンドには istio-injection ラベルの削除が含まれています。

  5. サンプルをクラスタにデプロイします。

    kubectl apply -n demo -f online-boutique
    
  6. Ingress ゲートウェイの外部 IP アドレスを取得します。

    kubectl get service istio-ingressgateway -n istio-system
    

    出力は次のようになります。

    NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                                      AGE
    istio-ingressgateway   LoadBalancer   10.19.247.233   35.239.7.64   80:31380/TCP,443:31390/TCP,31400:31400/TCP   27m

    この例では、Ingress ゲートウェイの IP アドレスは 35.239.7.64 です。

  7. ブラウザでアプリケーションに移動して、インストールを確認します。

    http://EXTERNAL_IP/
    

サービス メッシュ ダッシュボードを表示する

サイドカー プロキシが挿入されたクラスタにワークロードをデプロイすると、Google Cloud コンソールの Anthos Service Mesh ページで、Anthos Service Mesh が提供するすべてのオブザーバビリティ機能を確認できます。ワークロードをデプロイした後、Google Cloud コンソールにテレメトリー データが表示されるまでに 1~2 分ほどかかることがあります。

Google Cloud コンソールでの Anthos Service Mesh へのアクセスは、Identity and Access Management(IAM)によって制御されます。Anthos Service Mesh ページにアクセスするには、プロジェクト オーナーがユーザーに対して、プロジェクト編集者または閲覧者のロール、または、より限定的なロール(Google Cloud コンソールでの Anthos Service Mesh に対するアクセス制御を参照)を付与する必要があります。

  1. Google Cloud コンソールで、[Anthos Service Mesh] に移動します。

    Anthos の [サービス メッシュ] に移動する

  2. メニューバーのプルダウン リストから Google Cloud プロジェクトを選択します。

  3. 複数のサービス メッシュがある場合は、[サービス メッシュ] プルダウン リストからメッシュを選択します。

詳細については、Google Cloud コンソールでの Anthos Service Mesh の確認をご覧ください。

クリーンアップ

クリーンアップの前に、相互 TLS の詳細を確認される場合は、Anthos Service Mesh の例: mTLS をご覧ください。

  • 追加料金の発生を回避するには、クラスタを削除します。

    gcloud container clusters delete  CLUSTER_NAME  \
        --project=PROJECT_ID \
        --zone=CLUSTER_LOCATION
    
  • クラスタを維持して Online Boutique のサンプルを削除するには:

    kubectl delete namespaces demo
    

次のステップ

以下の詳細を確認する