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

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

始める前に

GKE on AWS の使用を始める前に、次のことを確認してください。

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

必要な値

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

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

管理サービスの構成

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

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

  2. AWS on GKE 構成用に空のディレクトリを作成し、そのディレクトリに移動します。GKE 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 データベースを保護する鍵エイリアスの Amazon リソース名に置き換えます。例: arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

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

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

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

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

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

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

    • PRIVATE_CIDR_BLOCK_1PRIVATE_CIDR_BLOCK_2PRIVATE_CIDR_BLOCK_3 は、プライベート サブネットの CIDR ブロックに置き換えます。管理サービスなどの GKE 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 は、GKE on AWS 構成データの 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 を使用して GKE on AWS 管理サービスに接続し、認証します。

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

  • Amazon の AWS Direct Connect サービスを経由する。
  • インターネットと GKE on AWS サブネット間の接続をプロキシする踏み台インスタンスを使用する。
  • VPN を使用する。

専用の VPC で管理サービスを作成すると、GKE 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. 新しいターミナルを開き、GKE 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 が含まれます。

次のステップ