管理サービスのインストール

管理サービスは、Anthos clusters on AWS(GKE on AWS)クラスタを作成、更新、削除します。このトピックでは、専用の AWS Virtual Private Cloud(VPC)内に管理サービスを作成する方法について説明します。既存の VPC がある場合は、既存のインフラストラクチャとの統合をご覧ください。

始める前に

Anthos clusters on AWS を使用する前に、次のタスクが完了していることを確認してください。

  • 前提条件を満たしている。
  • Google Cloud CLI で認証します。
    gcloud auth login && \
        gcloud auth application-default login

必要な値

このトピックを完了するには、前提条件の次の情報が必要です。

  • KMS 鍵の ARN またはエイリアス
  • Google Cloud サービス アカウント キー
  • Google Cloud プロジェクト
  • インストールして構成されている awsterraformanthos-gke コマンドライン ツール。
  • Anthos clusters on AWS が管理クラスタを作成する AWS リージョンとアベイラビリティ ゾーン。

管理サービスの構成

Anthos clusters on AWS 管理サービスは YAML ファイルを使用して構成します。このファイルは Kubernetes カスタム リソース構成に似ていますが、リソースの表現ではありません。

  1. awsterraformanthos-gke コマンドライン ツールがインストールされ、構成されている PC でターミナルを開きます。

  2. Anthos clusters on AWS の構成に空のディレクトリを作成し、そのディレクトリに移動します。Anthos clusters on AWS のドキュメントでは、サンプルの構成ディレクトリとして anthos-aws を使用します。

    mkdir anthos-aws
    cd anthos-aws
    
  3. テキスト エディタで anthos-gke.yaml という名前のファイルを作成します。次の内容をファイルに貼り付けます。

     apiVersion: multicloud.cluster.gke.io/v1
     kind: AWSManagementService
     metadata:
       name: management
     spec:
       version: aws-1.14.1-gke.0
       region: AWS_REGION
       authentication:
         awsIAM:
           adminIdentityARNs:
           - ADMIN_AWS_IAM_ARN
       kmsKeyARN: KMS_KEY_ARN
       databaseEncryption:
         kmsKeyARN: DATABASE_KMS_KEY_ARN
       googleCloud:
         projectID: GCP_PROJECT_ID
         serviceAccountKeys:
           managementService: MANAGEMENT_KEY_PATH
           connectAgent: HUB_KEY_PATH
           node: NODE_KEY_PATH
       dedicatedVPC:
         vpcCIDRBlock: VPC_CIDR_BLOCK
         availabilityZones:
         - ZONE_1
         - ZONE_2
         - ZONE_3
         privateSubnetCIDRBlocks:
         - PRIVATE_CIDR_BLOCK_1
         - PRIVATE_CIDR_BLOCK_2
         - PRIVATE_CIDR_BLOCK_3
         publicSubnetCIDRBlocks:
         - PUBLIC_CIDR_BLOCK_1
         - PUBLIC_CIDR_BLOCK_2
         - PUBLIC_CIDR_BLOCK_3
       # Optional
       bastionHost:
         allowedSSHCIDRBlocks:
         - SSH_CIDR_BLOCK
       proxy: PROXY_JSON_FILE # optional
    

    次の値を置き換えます。

    • AWS_REGION は、クラスタを実行する AWS リージョンに置き換えます。

    • ADMIN_AWS_IAM_ARN は、管理サービスを作成するための AWS IAM 権限を持つユーザーの Amazon リソース名に置き換えます。aws ツールに対して認証されたユーザーの ARN を取得するには、aws sts get-caller-identity を実行します。

    • KMS_KEY_ARN は、作成時に管理サービスのデータを保護する AWS KMS 鍵または KMS 鍵エイリアスの Amazon リソース名に置き換えます。例: arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890abARN がない場合は、aws kms list-keys を実行して ARN のリストを取得します。

    • DATABASE_KMS_KEY_ARN は、AWS KMS 鍵、または管理サービスの etcd データベース(arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab など)を保護する鍵エイリアスの Amazon リソース名に置き換えます。

    • GCP_PROJECT_ID は、Anthos 環境をホストする Google Cloud プロジェクト ID に置き換えます。

    • MANAGEMENT_KEY_PATH は、Google Cloud 管理のサービス アカウント キーの場所に置き換えます。

    • HUB_KEY_PATH は、Google Cloud Connect のサービス アカウント キーの場所に置き換えます。

    • NODE_KEY_PATH は、Anthos clusters on AWS ノードのサービス アカウント キーの場所に置き換えます。

    • VPC_CIDR_BLOCK は、anthos-gke が作成した AWS VPC の IP アドレスの CIDR 範囲の合計で置き換えます(例: 10.0.0.0/16)。詳細については、AWS ドキュメントの VPC とサブネットの基本をご覧ください。

    • ZONE_1ZONE_2ZONE_3 は、ノードとコントロール プレーンを作成する AWS EC2 アベイラビリティ ゾーンに置き換えます。Anthos clusters on AWS は、これらのゾーンにサブネットを作成します。anthos-gke を使用してユーザー クラスタの構成を生成すると、Anthos clusters on AWS により、これらのアベイラビリティ ゾーンにコントロール プレーンとノードプールが作成されます(例: us-east-1a)。
      anthos-gke を使用して 1 つのゾーンにのみユーザー クラスタを作成する場合は、ZONE_2ZONE_3 を削除できます。

    • PRIVATE_CIDR_BLOCK_1PRIVATE_CIDR_BLOCK_2PRIVATE_CIDR_BLOCK_3 は、プライベート サブネットの CIDR ブロックに置き換えます。管理サービスなどの Anthos clusters on AWS コンポーネントはプライベート サブネットで実行されます。このサブネットは、vpcCIDRBlock で指定された VPC の CIDR 範囲内にある必要があります。アベイラビリティ ゾーン(10.0.1.0/24 など)ごとに 1 つのサブネットが必要です。

    • PUBLIC_CIDR_BLOCK_1PUBLIC_CIDR_BLOCK_2PUBLIC_CIDR_BLOCK_3 は、パブリック サブネットの CIDR ブロックに置き換えます。アベイラビリティ ゾーンごとにサブネットが 1 つずつ必要です。パブリック サブネットは、AWS のネットワーク ACLセキュリティ グループで指定されたセキュリティ グループ(10.0.100.0/24 など)とアドレス範囲にロードバランサなどのクラスタ サービスを公開します。

    • SSH_CIDR_BLOCK は、踏み台インスタンス203.0.113.0/24 など)への受信 SSH を許可する CIDR ブロックに置き換えます。任意の IP アドレスからの SSH を許可するには、0.0.0.0/0 を使用します。

    • (省略可)PROXY_JSON_FILE は、プロキシ構成ファイルの相対パスで置き換えます。プロキシを使用していない場合は、この行を削除します。

  4. anthos-gke aws management init を実行して、追加構成の anthos-gke.status.yaml ファイルを生成します。init コマンドは、anthos-gke.yaml ファイル内の AWSManagementService オブジェクトも検証します。

    anthos-gke aws management init
    
  5. anthos-gke aws management apply を実行して AWS の管理サービスを作成します。

    anthos-gke aws management apply
    

    anthos-gke aws management apply コマンドが完了するまでに、最大で 10 分ほどかかる場合があります。コマンドが完了すると、管理サービスが AWS で実行されます。

省略可能フィールド

上記の anthos-gke.yaml ファイルには、ほとんどの顧客が必要となる一般的なフィールド セットが示されています。anthos-gke.yaml の構成では、さまざまなオプション フィールドもサポートされます。たとえば、次のようなものが挙げられます。

  • spec.bootstrapS3Bucket は、AWS 構成データ上の Anthos クラスタの AWS S3 バケットを指定します。
  • spec.tags は、クラスタ関連の AWS リソースにタグを付けます。
  • spec.securityGroupIDs は、管理クラスタに追加のセキュリティ グループ ID を割り当てます。
  • spec.*Volume とそのサブフィールド volumeType、iops、kmsKeyARN は、EBS ボリューム パラメータを調整します。
  • spec.terraform.stateGCSBucket は、Terraform 構成データの Google Cloud サービス バケットを指定します。

anthos-gke.yaml でサポートされているすべてのフィールドの詳細については、AWS 管理サービスのリファレンスをご覧ください。

管理サービスに接続する

次に、anthos-gke を使用して Anthos clusters on AWS 管理サービスに接続し、認証を行います。

デフォルト設定を使用して管理サービスを作成すると、コントロール プレーンには、AWS VPC の外部からはアクセスできないプライベート IP アドレスが設定されます。管理サービスには、次の 3 つの方法のいずれかでアクセスできます。

専用の VPC で管理サービスを作成すると、Anthos clusters on AWS によって、パブリック サブネットに踏み台インスタンスが自動的に作成されます。VPN や AWS Direct Connect 経由で管理サービスに接続する場合、この踏み台インスタンスは必要ありません。それ以外の場合で、踏み台インスタンスを介して管理サービスへ接続するには、次の手順を行います。

  1. terraform ツールを使用して、踏み台インスタンスへの SSH トンネルを開くスクリプトを生成します。Terraform のバージョンを選択して、次のコマンドを実行します。

    Terraform 0.12、0.13

    terraform output bastion_tunnel > bastion-tunnel.sh
    chmod 755 bastion-tunnel.sh
    

    Terraform 0.14.3 以降

    terraform output -raw bastion_tunnel > bastion-tunnel.sh
    chmod 755 bastion-tunnel.sh
    

    Terraform は、~/.ssh/anthos-gke にある踏み台インスタンスの SSH 認証鍵を参照する bastion-tunnel.sh スクリプトを作成します。

  2. トンネルを開くには、bastion-tunnel.sh スクリプトを実行します。トンネルは localhost:8118 から踏み台インスタンスに転送されます。

    踏み台インスタンスへのトンネルを開くには、次のコマンドを実行します。

    ./bastion-tunnel.sh -N -4
    

    SSH トンネルからのメッセージがこのウィンドウに表示されます。接続を閉じる準備ができたら、Ctrl+C を使用するか、ウィンドウを閉じて処理を停止します。

  3. 新しいターミナルを開き、Anthos clusters on AWS 構成のあるディレクトリに移動します。

  4. 認証用の kubeconfig を生成します。~/.kube/config に保存されている構成に anthos-gke を使用して認証情報を追加します。

    anthos-gke aws management get-credentials
    
  5. kubectl を使用して管理サービスに接続できることを確認します。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl cluster-info
    

    出力には、Management Service API サーバーの URL が含まれます。

次のステップ