既存のインフラストラクチャとの統合

このトピックでは、公開および限定公開のサブネットを使用し、anthos-gke を実行して既存の AWS Virtual Private Cloud(VPC)を構成することで管理サービスのインストールを完了します。

始める前に

次の手順を完了するには、以下が必要です。

  • 要件で説明されている AWS IAM 権限。

  • 以下を持つ既存の AWS VPC

    • 少なくとも 1 つの公開サブネット。
    • 少なくとも 1 つの限定公開サブネット。
    • 公開サブネットへのルートを持つインターネット ゲートウェイ。
    • 限定公開サブネットへのルートを持つ NAT ゲートウェイ。
    • DNS ホスト名が有効なこと。
    • DHCP オプション セットに domain-name のカスタム値はありません。詳細については、トラブルシューティングをご覧ください。Anthos clusters on AWS は、デフォルトの EC2 ドメイン名以外の値をサポートしていません。

    AWS VPC の構成の詳細については、公開サブネットと限定公開サブネットを持つ VPC をご覧ください。

  • 既存の VPC の公開サブネット ID と限定公開サブネット ID。例: subnet-1234567890abcdefg

  • クラスタ バージョン 1.20 以前の場合、AWS インストールの Anthos クラスタを管理するセキュリティ グループまたは IP 範囲からの SSH(ポート 22)の受信を許可する AWS セキュリティ グループ

  • クラスタ バージョン 1.21 以降の場合は、AWS ノードプール上の Anthos クラスタを含む VPC IP 範囲から外向きの Konnectivity(ポート 8132)接続を許可する AWS セキュリティ グループ

ワークスペースの作成

  1. テキスト エディタで 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
       securityGroupIDs:
       - SECURITY_GROUP_IDS
       googleCloud:
         projectID: GCP_PROJECT_ID
         serviceAccountKeys:
           managementService: MANAGEMENT_KEY_PATH
           connectAgent: HUB_KEY_PATH
           node: NODE_KEY_PATH
       existingVPC:
         subnetID: VPC_SUBNET_ID
         allowedSSHSecurityGroupIDs:
         - SSH_SECURITY_GROUP
       # Optional fields
       rootVolume:
         sizeGiB: ROOT_VOLUME_SIZE
         volumeType: ROOT_VOLUME_TYPE
         iops: ROOT_VOLUME_IOPS
         kmsKeyARN: ROOT_VOLUME_KEY
       bastionHost:
         subnetID: BASTION_HOST_SUBNET_ID
         allowedSSHCIDRBlocks:
         - SSH_CIDR_BLOCK
         rootVolume: # Optional
           kmsKeyARN: BASTION_VOLUME_KEY
       proxy: PROXY_JSON_FILE
    

    次の値を置き換えます。

    • AWS_REGION は、クラスタを実行する AWS リージョンに置き換えます。
    • ADMIN_AWS_IAM_ARN は、管理者の AWS IAM キーの Amazon リソース名に置き換えます。
    • KMS_KEY_ARN は、管理サービスの作成時に管理サービスのデータを保護する AWS KMS キーの Amazon リソースネームに置き換えます。
    • DATABASE_KMS_KEY_ARN は、etcd データベースを保護する AWS KMS キーの Amazon リソースネームに置き換えます。
    • SECURITY_GROUP_IDS は、管理サービス VM へのアクセスを許可する追加のセキュリティ グループ ID で置き換えます。
    • GCP_PROJECT_ID は、Anthos 環境をホストする Google Cloud プロジェクトに置き換えます。
    • MANAGEMENT_KEY_PATH は、Google Cloud 管理のサービス アカウント キーの場所に置き換えます。
    • HUB_KEY_PATH は、Google Cloud Connect のサービス アカウント キーの場所に置き換えます。
    • NODE_KEY_PATH は、Anthos clusters on AWS ノードのサービス アカウント キーの場所に置き換えます。
    • VPC_SUBNET_ID は、管理サービスが実行されるサブネット ID に置き換えます。
    • SSH_SECURITY_GROUP は、管理サービス インスタンス内で SSH アクセスが許可されているセキュリティ グループ ID のリストに置き換えます。

    (省略可)管理サービスのボリュームを暗号化する場合は、次の値を置き換えます。

    • ROOT_VOLUME_SIZE は、管理サービスのボリューム サイズ(ギガバイト単位)に置き換えます。例: 10
    • ROOT_VOLUME_TYPE は、EBS ボリューム タイプに置き換えます。例: gp3
    • ROOT_VOLUME_IOPS は、ボリューム用にプロビジョニングされた IO オペレーション/秒(IOPS)のマウントに置き換えます。volumeTypeGP3 の場合のみ有効です。詳細については、汎用 SSD ボリューム(gp3)をご覧ください。
    • ROOT_VOLUME_KEY は、管理サービス インスタンスのルート ボリュームを暗号化する AWS KMS 鍵の Amazon リソース名に置き換えます。詳細については、顧客管理の CMK を使用したボリュームの暗号化をご覧ください。

    省略可: SSH トンネルで Anthos clusters on AWS 環境にアクセスするための踏み台インスタンスを作成する場合は、次の値を置き換えます。

    • BASTION_HOST_SUBNET_ID は、踏み台インスタンスが実行されるサブネット ID に置き換えます。VPC_SUBNET_IDBASTION_HOST_SUBNET_ID からの受信接続を許可していることを確認します。
    • SSH_CIDR_BLOCK は、踏み台インスタンスによって受信 SSH 接続が許可される CIDR ブロックに置き換えます。例: 203.0.113.0/24任意の IP アドレスからの SSH を許可するには、0.0.0.0/0 を使用します。
    • BASTION_VOLUME_KEY は、踏み台のルート ボリュームを保護する AWS KMS 鍵の Amazon リソース名に置き換えます。

    省略可: HTTP プロキシ経由のトラフィックを直接送信する場合は、次の値を置き換えます。

    • PROXY_JSON_FILE は、プロキシ構成ファイルの相対パスで置き換えます。プロキシを使用していない場合は、この行を削除します。
  2. anthos-gke aws management init を実行して構成ファイルを作成します。

    anthos-gke aws management init
    
  3. anthos-gke aws management apply を実行してクラスタを作成します。

    anthos-gke aws management apply
    

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

クラスタ名でサブネットにタグを付ける

Anthos clusters on AWS で既存の AWS サブネットの使用中にロードバランサを作成する場合は、VPC とサブネットに管理サービスの名前のタグを付ける必要があります。anthos-gke を使用して VPC を作成した場合、またはサブネットにすでにタグを付けている場合は、この手順をスキップします。

サブネットにタグを付ける手順は次のとおりです。

  1. Anthos clusters on AWS 構成のディレクトリに移動します。このディレクトリは、管理サービスをインストールしたときに作成したものです。

    cd anthos-aws

  2. クラスタ ID を環境変数 $CLUSTER-ID としてエクスポートします。 Terraform のバージョンを選択して、次のコマンドを実行します。

    Terraform 0.12、0.13

    export CLUSTER_ID=$(terraform output cluster_id)
    

    Terraform 0.14.3 以降

    export CLUSTER_ID=$(terraform output -raw cluster_id)
    
  3. AWS VPC ID を環境変数 $VPC_ID としてエクスポートします。 Terraform のバージョンを選択して、次のコマンドを実行します。

    Terraform 0.12、0.13

    export VPC_ID=$(terraform output vpc_id)
    

    Terraform 0.14.3 以降

    export VPC_ID=$(terraform output -raw vpc_id)
    
  4. aws CLI ツールを使用して、プライベート サブネット ID を取得します。

      aws ec2 describe-subnets \
          --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \
          --query "Subnets[*].SubnetId" \
          --output text
    
  5. クラスタ ID を使用してサブネットにタグを設定します。各サブネットに次のコマンドを実行します。

      aws ec2 create-tags \
          --resources SUBNET_IDS \
          --tags Key=gke:multicloud:cluster-id,Value=$CLUSTER_ID
    

    SUBNET_IDS は、スペース区切りのサブネット ID のリストで置き換えます。例: subnet-012345678abcdef subnet-abcdef123456789 subnet-123456789abcdef

管理サービスへの接続

このセクションでは、管理サービスへの接続を確立します。コマンドは、踏み台インスタンスを介してトンネリングできます。AWS VPC に直接接続している場合は、認証情報を生成して接続するに進みます。

踏み台インスタンスへの接続

踏み台インスタンスを使用して SSH トンネルを設定する場合は、まず anthos-gke.yaml にホストを構成します。次に、以下の手順に沿ってトンネルを開くスクリプトを作成します。

  1. terraform を使用して、踏み台インスタンスへの SSH トンネルを開くスクリプトを生成します。

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

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

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

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

    ./bastion-tunnel.sh -N
    

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

  3. Anthos clusters on AWS 構成のディレクトリに移動します。

    cd anthos-aws

認証情報を生成して接続する

Anthos clusters on AWS に関するドキュメントでは、localhost ポート 8118 で SSH トンネルを使用してクラスタにアクセスすることを前提としています。直接相互接続や VPN など、別のタイプの接続を使用して VPC に接続する場合は、コマンドから env HTTP_PROXY=http://localhost:8118 行を削除します。

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

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

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

    kubectl はクラスタのステータスを出力します。

次のステップ