このトピックでは、公開および限定公開のサブネットを使用し、anthos-gke を実行して既存の AWS Virtual Private Cloud(VPC)を構成することで管理サービスのインストールを完了します。
始める前に
次の手順を完了するには、以下が必要です。
- 要件で説明されている AWS IAM 権限。 
- 以下を持つ既存の AWS VPC。 - 少なくとも 1 つの公開サブネット。
- 少なくとも 1 つの限定公開サブネット。
- 公開サブネットへのルートを持つインターネット ゲートウェイ。
- 限定公開サブネットへのルートを持つ NAT ゲートウェイ。
- DNS ホスト名が有効なこと。
- DHCP オプション セットに domain-nameのカスタム値はありません。詳細については、トラブルシューティングをご覧ください。GKE on AWS は、デフォルトの EC2 ドメイン名以外の値をサポートしていません。
 - AWS VPC の構成の詳細については、公開サブネットと限定公開サブネットを持つ VPC をご覧ください。 
- 既存の VPC の公開サブネット ID と限定公開サブネット ID。例: - subnet-1234567890abcdefg
- クラスタ バージョン 1.20 以前の場合、AWS インストールの GKE on AWS を管理するセキュリティ グループまたは IP 範囲からの SSH(ポート 22)の受信を許可する AWS セキュリティ グループ。 
- クラスタ バージョン 1.21 以降の場合は、AWS ノードプール上の GKE on AWS を含む VPC IP 範囲から外向きの Konnectivity(ポート 8132)接続を許可する AWS セキュリティ グループ。 
ワークスペースを作成しています
- テキスト エディタで - 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 は、GKE on AWS 環境をホストする Google Cloud プロジェクトに置き換えます。
- MANAGEMENT_KEY_PATH は、 Google Cloud管理のサービス アカウント キーの場所に置き換えます。
- HUB_KEY_PATH は、 Google CloudConnect のサービス アカウント キーの場所に置き換えます。
- NODE_KEY_PATH は、GKE 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)のマウントに置き換えます。volumeTypeがGP3の場合のみ有効です。詳細については、汎用 SSD ボリューム(gp3)をご覧ください。
- ROOT_VOLUME_KEY は、管理サービス インスタンスのルート ボリュームを暗号化する AWS KMS 鍵の Amazon リソース名に置き換えます。詳細については、顧客管理の CMK を使用したボリュームの暗号化をご覧ください。
 - 任意: SSH トンネルで GKE on AWS 環境に踏み台インスタンスを作成する場合は、次の値を置き換えます。 - BASTION_HOST_SUBNET_ID は、踏み台インスタンスが実行されるサブネット ID に置き換えます。VPC_SUBNET_ID が BASTION_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 は、プロキシ構成ファイルの相対パスで置き換えます。プロキシを使用していない場合は、この行を削除します。
 
- anthos-gke aws management initを実行して構成ファイルを作成します。- anthos-gke aws management init
- anthos-gke aws management applyを実行してクラスタを作成します。- anthos-gke aws management apply- anthos-gke aws management applyコマンドが完了するまでに、最大で 10 分ほどかかる場合があります。- anthos-gkeが完了すると、管理サービスが AWS で実行されます。
クラスタ名でサブネットにタグを付ける
GKE on AWS で既存の AWS サブネットを使用し、ロードバランサを作成する場合は、VPC とサブネットに管理サービスの名前でタグを付ける必要があります。anthos-gke を使用して VPC を作成した場合、またはサブネットにすでにタグを付けている場合は、この手順をスキップします。
サブネットにタグを付ける手順は次のとおりです。
- GKE on AWS 構成のディレクトリに移動します。このディレクトリは、管理サービスをインストールしたときに作成したものです。 - cd anthos-aws 
- クラスタ 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)
- 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)
- awsCLI ツールを使用して、プライベート サブネット ID を取得します。- aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \ --query "Subnets[*].SubnetId" \ --output text
- クラスタ 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 にホストを構成します。次に、以下の手順に沿ってトンネルを開くスクリプトを作成します。
- terraformを使用して、踏み台インスタンスへの SSH トンネルを開くスクリプトを生成します。- terraform output bastion_tunnel > bastion-tunnel.sh chmod 755 bastion-tunnel.sh- Terraform は、踏み台インスタンスの SSH 認証鍵( - ~/.ssh/anthos-gke)を参照する- bastion-tunnel.shスクリプトを作成します。
- トンネルを開くには、 - bastion-tunnel.shスクリプトを実行します。トンネルは- localhost:8118から踏み台インスタンスに転送されます。- 踏み台インスタンスへのトンネルを開くには、次のコマンドを実行します。 - ./bastion-tunnel.sh -N- SSH トンネルからのメッセージがこのウィンドウに表示されます。接続を閉じる準備ができたら、Ctrl+C を使用するか、ウィンドウを閉じて処理を停止します。 
- GKE on AWS 構成のディレクトリに移動します。 - cd anthos-aws 
認証情報を生成して接続する
GKE on AWS のドキュメントは、クラスタへのアクセスに localhost ポート 8118 の SSH トンネルを使用していることを前提としています。直接相互接続や VPN など、別のタイプの接続を使用して VPC に接続する場合は、コマンドから env HTTP_PROXY=http://localhost:8118 行を削除します。
- 認証用の - kubeconfigを生成します。- ~/.kube/configに保存されている構成に- anthos-gkeを使用して認証情報を追加します。- anthos-gke aws management get-credentials
- kubectlを使用して管理サービスに接続できることを確認します。- env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info- kubectlはクラスタのステータスを出力します。
次のステップ
- ユーザー クラスタを作成する。
- GKE on AWS でプロキシを使用する。
- kubectl構成を変更して、より少ないコマンドライン オプションで GKE on AWS に接続する。
- GKE on AWS の管理サービスとユーザー クラスタに最低限必要なセキュリティ グループを確認する。