バージョン 1.10

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

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

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

費用

このチュートリアルでは、課金対象である次の Google Cloud コンポーネントを使用します。

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

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

始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. Kubernetes Engine API を有効にします。

    API を有効にする

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

Anthos Service Mesh には他の API も必要ですが、install_asm スクリプトにより、API が自動的に有効になります。課金費用を抑えるため、install_asm スクリプトは Anthos API を有効にしません。Anthos API が有効になっている場合、Cloud Console にはいくつかの違いがあります。詳細については、Anthos と 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. Cloud Console に移動します。
  2. Cloud プロジェクトを選択します。
  3. Cloud Console ウィンドウの上部にある [Cloud Shell をアクティブにする] ボタンをクリックします。

    Google Cloud Platform Console

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

    Cloud Shell セッション

ローカル Linux コンピュータ

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

    • Cloud SDKgcloud コマンドライン ツール)
    • 標準のコマンドライン ツール: awkcurlgrepsedsha256sumtr
    • git
    • kpt
    • kubectl
    • jq
  2. Cloud SDK で認証します。

    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
    
  2. クラスタとやり取りするために必要な認証情報を取得します。このコマンドは、クラスタに対して kubectl の現在のコンテキストも設定します。

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

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

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

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

    curl https://storage.googleapis.com/csm-artifacts/asm/install_asm_1.10.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-1102-3-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-1102-3,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-1102-3-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-1102-3,istio=istiod,pod-template-hash=5788d57586
    

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

  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/
    

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

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

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

  1. Google Cloud Console で、[Anthos Service Mesh] に移動します。

    [Anthos Service Mesh] に移動する

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

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

詳細については、Cloud Console での 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
    

次のステップ

以下の詳細を確認する