このページでは、GKE on AWS をインストールする前に行う必要がある操作について説明します。
環境
GKE on AWS をインストールするには、さまざまなツールをインストールして実行できる環境が必要です。以下の操作は、Linux または macOS で bash シェルを使用していることを前提としています。bash シェル環境にアクセスできない場合は、Cloud Shell を使用できます。
AWS の要件
このトピックを完了するには、コマンドライン アクセスが可能な AWS アカウントが必要となります。また、ユーザー クラスタと同じリージョンに AWS Key Management Service(KMS)鍵が 2 つ必要です。
その他の必要な AWS リソースについては、要件をご覧ください。
AWS の構成
始める前に
このセクションを完了する前に:
- AWS CLI をダウンロードしてインストールします。
aws --version
を実行してインストールを確定します。実行可能ファイルが見つからない場合は、PATH
にaws
ツールを追加します。 aws configure
を使用して、AWS IAM 認証情報と AWS リージョンを構成します。
管理ユーザーの権限
GKE on AWS では、管理サービスの作成者に特定の権限が付与されている必要があります。管理サービスまたはユーザー クラスタを作成する前に、要件を満たす AWS IAM 認証情報を作成するか、アクセス権を取得します。
KMS 鍵の作成
GKE on AWS には、2 つの AWS KMS 鍵が必要です。KMS 鍵は次のものを暗号化します。
- データ。インストール プロセス中にエンベロープ暗号化を行います。
- ユーザー クラスタ内のアプリケーション レイヤのシークレット。
以下の手順で 2 つの AWS KMS 鍵を作成します。
コマンドライン
AWS アカウントで KMS 鍵を作成します。
aws kms create-key
出力には、鍵のメタデータが含まれます。
前のコマンドの出力で、
Arn
フィールドから鍵の Amazon リソース名(ARN)をコピーします。たとえば、us-west-2
リージョン内の鍵には ARNarn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
があります。aws kms create-alias
で鍵のエイリアスを作成します。エイリアスを使用すると、AWS KMS 鍵を名前で管理できます。aws kms create-alias \ --alias-name=alias/key-name \ --target-key-id=key-arn
もう 1 つの鍵についても上記の手順を繰り返します。
コンソール
- AWS コンソールにログインします。
- [KMS] に移動し、サイドバーから [Customer managed keys] を選択します。
- [Create Key] をクリックします。
- デフォルトで選択されているオプションはそのままにします。
- 作成したら、リストから鍵を選択します。
- 鍵の ARN をコピーします。
- もう 1 つの鍵についても上記の手順を繰り返します。
Google Cloud の要件
組織で定義されているセキュリティの制約により、次の手順を完了できない場合があります。トラブルシューティング情報については、制約のある Google Cloud 環境でアプリケーションを開発するをご覧ください。
始める前に
GKE on AWS 環境に接続する Google Cloud プロジェクトで API を有効にするには、Google アカウントにプロジェクト オーナーの権限があることを確認します。次のセクションでは、GKE on AWS のサービス アカウントを作成する場合にのみオーナー権限を使用します。
Google Cloud CLI をインストールします。
Google Cloud プロジェクトで GKE Enterprise API を有効にする必要があります。この API を有効にすると、Google Cloud プロジェクトで他の GKE Enterprise 機能を使用できるようになります。
GKE on AWS サービス アカウントを作成する
このセクションでは、GKE on AWS 用に 3 つの IAM サービス アカウントとキーを作成します。これらのサービス アカウントについては、次の一覧をご覧ください。
名前 | ロール | 説明 |
---|---|---|
management-sa
|
gkehub.admin | Hub のメンバーシップを管理する権限。 |
hub-sa
|
gkehub.connect | ユーザー クラスタと Hub の間の接続を設定する権限。 |
node-sa
|
storage.objectViewer | Container Registry へのアクセス権。 |
コマンドライン
Google Cloud CLI で認証します。
gcloud auth login &&\ gcloud auth application-default login
cloud.google.com
にアクセスして、Google アカウントで認証するように 2 回求められます。Google Cloud プロジェクトを環境変数として設定し、gcloud CLI を使用してデフォルトの project-id を設定します。
export PROJECT_ID=project-id gcloud config set project $PROJECT_ID
project-id の値は、実際の Google Cloud プロジェクトに置き換えます。
Google Cloud APIs を有効にします。
gcloud services enable anthos.googleapis.com gcloud services enable cloudresourcemanager.googleapis.com gcloud services enable gkehub.googleapis.com gcloud services enable gkeconnect.googleapis.com gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com gcloud services enable serviceusage.googleapis.com gcloud services enable stackdriver.googleapis.com gcloud services enable storage-api.googleapis.com gcloud services enable storage-component.googleapis.com
次のコマンドを実行して、
gcloud
でサービス アカウントを作成します。gcloud iam service-accounts create management-sa gcloud iam service-accounts create hub-sa gcloud iam service-accounts create node-sa
次のコマンドを実行して、
gcloud
で各サービス アカウントのキーをダウンロードします。gcloud iam service-accounts keys create management-key.json \ --iam-account management-sa@$PROJECT_ID.iam.gserviceaccount.com gcloud iam service-accounts keys create hub-key.json \ --iam-account hub-sa@$PROJECT_ID.iam.gserviceaccount.com gcloud iam service-accounts keys create node-key.json \ --iam-account node-sa@$PROJECT_ID.iam.gserviceaccount.com
管理サービス アカウントにロールを付与します。
gcloud projects add-iam-policy-binding \ $PROJECT_ID \ --member serviceAccount:management-sa@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/gkehub.admin
Hub サービス アカウントにロールを付与します。
gcloud projects add-iam-policy-binding \ $PROJECT_ID \ --member serviceAccount:hub-sa@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/gkehub.connect
ノード サービス アカウントにロールを付与します。
gcloud projects add-iam-policy-binding \ $PROJECT_ID \ --member serviceAccount:node-sa@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/storage.objectViewer
コンソール
- Google Cloud コンソールで API ライブラリ ページを開きます。
- 画面上部にあるプルダウンからプロジェクトを選択します。
次の API を見つけて有効にします。
- Anthos
- Cloud Resource Manager
- Cloud Storage
- Cloud Logging
- Google Cloud Storage JSON API
- GKE Hub
- GKE Connect API
- Service Usage
- Stackdriver
- Stackdriver Monitoring
[サービス アカウント] ページを開きます。
次に、サービス アカウントを作成し、
management-sa
サービス アカウントにロールを割り当てます。- [サービス アカウントを作成] をクリックします。
- アカウント管理サービス アカウントに名前を付けて、[作成] をクリックします。[このサービス アカウントにプロジェクトへのアクセスを許可する] 画面が表示されます。
- GKE HUB 管理者ロールを追加します。
- [続行] をクリックします。[ユーザーにこのサービス アカウントへのアクセスを許可] 画面が表示されます。
- [完了] をクリックします。プロジェクトのサービス アカウントの画面が表示されます。
- サービス アカウントのメールアドレス を含む行(
management-sa@project_id.iam.gserviceaccount.com
)を探します。 - サービス アカウントの操作メニューをクリックし、[鍵を管理] を選択します。more_vert
- [鍵を追加] プルダウン メニューをクリックします。
- [新しい鍵を作成] をクリックします。
- 鍵のタイプとして [JSON] を選択し、[作成] をクリックします。ブラウザでサービス アカウント キーをダウンロードします。
management-key.json
ファイルの名前を変更します。
次に、サービス アカウントを作成し、
hub-sa
サービス アカウントにロールを割り当てます。- [サービス アカウントを作成] をクリックします。
- アカウント ハブ サービス アカウントに名前を付けて、[作成] をクリックします。[このサービス アカウントにプロジェクトへのアクセスを許可する] 画面が表示されます。
- GKE Hub 接続エージェント ロールを追加します。
- [続行] をクリックします。[ユーザーにこのサービス アカウントへのアクセスを許可] 画面が表示されます。
- [完了] をクリックします。プロジェクトのサービス アカウントの画面が表示されます。
- サービス アカウントのメールアドレス を含む行(
hub-sa@project_id.iam.gserviceaccount.com
)を探します。 - サービス アカウントの操作メニューをクリックし、[鍵を管理] を選択します。more_vert
- [鍵を追加] プルダウン メニューをクリックします。
- [新しい鍵を作成] をクリックします。
- 鍵のタイプとして [JSON] を選択し、[作成] をクリックします。ブラウザでサービス アカウント キーをダウンロードします。
hub-key.json
ファイルの名前を変更します。
次に、サービス アカウントを作成し、
node-sa
サービス アカウントにロールを割り当てます。- [サービス アカウントを作成] をクリックします。
- アカウント ノード サービス アカウントに名前を付けて、[作成] をクリックします。[このサービス アカウントにプロジェクトへのアクセスを許可する] 画面が表示されます。
- Storage オブジェクト閲覧者ロールを追加します。
- [完了] をクリックします。プロジェクトのサービス アカウントの画面が表示されます。
- サービス アカウントのメールアドレス を含む行(
node-sa@project_id.iam.gserviceaccount.com
)を探します。 - サービス アカウントの操作メニューをクリックし、[鍵を管理] を選択します。more_vert
- [鍵を追加] プルダウン メニューをクリックします。
- [新しい鍵を作成] をクリックします。
- 鍵のタイプとして [JSON] を選択し、[作成] をクリックします。ブラウザでサービス アカウント キーをダウンロードします。
node-key.json
ファイルの名前を変更します。
anthos-gke コマンドライン ツール
anthos-gke
は、GKE on AWS のコマンドライン ツールです。anthos-gke
を使用して構成を作成し、管理サービスをインストールします。anthos-gke
の最新バージョンは aws-1.14.1-gke.0 です。
anthos-gke
コマンドライン ツールは、Linux と macOS のみをサポートしています。
Cloud Storage からバイナリをダウンロードします。
Linux
gsutil cp gs://gke-multi-cloud-release/aws/aws-1.14.1-gke.0/bin/linux/amd64/anthos-gke .
macOS
gsutil cp gs://gke-multi-cloud-release/aws/aws-1.14.1-gke.0/bin/darwin/amd64/anthos-gke .
anthos-gke
の権限を更新し、/usr/local/bin
にコピーします。chmod 755 anthos-gke sudo mv anthos-gke /usr/local/bin
バージョンが
aws-1.14.1-gke.0
であることを確認します。anthos-gke version
anthos-gke コマンドライン ツールの権限
anthos-gke
コマンドライン ツールを使用するには、コマンドを実行するユーザーに ServiceUsageViewer ロールと StorageAdmin ロールが必要です。IAM プリンシパルにロールを追加するには、次のコマンドを実行します。
gcloud projects add-iam-policy-binding PROJECT_NAME \
--member user:USER_NAME \
--role roles/serviceusage.serviceUsageViewer
gcloud projects add-iam-policy-binding PROJECT_NAME \
--member user:USER_NAME \
--role roles/storage.admin
次のように置き換えます。
PROJECT_NAME
: Google Cloud プロジェクトUSER_NAME
:anthos-gke
コマンドライン ツールを実行するユーザー名。サービス アカウントを使用している場合は、serviceAccount:SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com
を使用します。
Terraform
anthos-gke
ツールによって Terraform 構成ファイルが生成され、terraform
コマンドライン ツールが呼び出されます。
GKE on AWS には、v0.14.3 より後のバージョンの Terraform が必要です。次のコマンドで Terraform のバージョンを確認できます。
terraform version
v0.14.3 以降の Terraform がない場合は、Terraform をダウンロードしてインストールしてから、管理サービスを作成してください。
Terraform のアップグレード
GKE on AWS をインストールした後に Terraform をアップグレードするには、各マイナー バージョンを順番にインストールして、Terraform バイナリをアップグレードする必要があります。
たとえば、Terraform を v0.12.x から v0.14.x にアップグレードする場合は、v0.13.x を一時的にインストールする必要があります。v0.13.x をインストールしたら、anthos-gke aws
management init
と anthos-gke aws management apply
を実行します。GKE on AWS が構成を更新します。その後、v0.14.x にアップグレードできます。
Kubernetes
GKE on AWS では、kubectl
バージョン 1.17 以降が必要です。kubectl
のバージョンは、次のコマンドで確認できます。
kubectl version --client -o yaml | grep gitVersion
1.17 以降を使用していない場合は、kubectl
の新しいバージョンをインストールします。
次のステップ
- 踏み台インスタンスを備えた専用 VPC に管理サービスをインストールする。
- 既存の VPC に既存のインフラストラクチャを統合する。