このトピックでは、公開および限定公開のサブネットを使用し、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 セキュリティ グループ。
ワークスペースの作成
テキスト エディタで
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)のマウントに置き換えます。
volumeType
がGP3
の場合のみ有効です。詳細については、汎用 SSD ボリューム(gp3)をご覧ください。 - ROOT_VOLUME_KEY は、管理サービス インスタンスのルート ボリュームを暗号化する AWS KMS 鍵の Amazon リソース名に置き換えます。詳細については、顧客管理の CMK を使用したボリュームの暗号化をご覧ください。
省略可: SSH トンネルで Anthos clusters 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 で実行されます。
クラスタ名でサブネットにタグを付ける
Anthos clusters on AWS で既存の AWS サブネットの使用中にロードバランサを作成する場合は、VPC とサブネットに管理サービスの名前のタグを付ける必要があります。anthos-gke
を使用して VPC を作成した場合、またはサブネットにすでにタグを付けている場合は、この手順をスキップします。
サブネットにタグを付ける手順は次のとおりです。
Anthos clusters 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)
aws
CLI ツールを使用して、プライベート サブネット 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 を使用するか、ウィンドウを閉じて処理を停止します。
Anthos clusters on AWS 構成のディレクトリに移動します。
cd anthos-aws
認証情報を生成して接続する
Anthos clusters 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
はクラスタのステータスを出力します。
次のステップ
- ユーザー クラスタを作成する。
- Anthos clusters on AWS でプロキシを使用する。
- 少ないコマンドライン オプションで Anthos clusters on AWS に接続できるように、
kubectl
構成を変更する。 - Anthos clusters on AWS の管理サービスとユーザー クラスタに最低限必要なセキュリティ グループを確認する。