前提条件

このページでは、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 を実行してインストールを確定します。実行可能ファイルが見つからない場合は、PATHaws ツールを追加します。
  • aws configure を使用して、AWS IAM 認証情報と AWS リージョンを構成します。

管理ユーザーの権限

GKE on AWS では、管理サービスの作成者に特定の権限が付与されている必要があります。管理サービスまたはユーザー クラスタを作成する前に、要件を満たす AWS IAM 認証情報を作成するか、アクセス権を取得します。

KMS 鍵の作成

GKE on AWS には、2 つの AWS KMS 鍵が必要です。KMS 鍵は次のものを暗号化します。

  • データ。インストール プロセス中にエンベロープ暗号化を行います。
  • ユーザー クラスタ内のアプリケーション レイヤのシークレット。

以下の手順で 2 つの AWS KMS 鍵を作成します。

コマンドライン

  1. AWS アカウントで KMS 鍵を作成します。

    aws kms create-key
    

    出力には、鍵のメタデータが含まれます。

  2. 前のコマンドの出力で、Arn フィールドから鍵の Amazon リソース名(ARN)をコピーします。たとえば、us-west-2 リージョン内の鍵には ARN arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab があります。

  3. aws kms create-alias で鍵のエイリアスを作成します。エイリアスを使用すると、AWS KMS 鍵を名前で管理できます。

    aws kms create-alias \
        --alias-name=alias/key-name \
        --target-key-id=key-arn
    
  4. もう 1 つの鍵についても上記の手順を繰り返します。

コンソール

  1. AWS コンソールにログインします。
  2. [KMS] に移動し、サイドバーから [Customer managed keys] を選択します。
  3. [Create Key] をクリックします。
  4. デフォルトで選択されているオプションはそのままにします。
  5. 作成したら、リストから鍵を選択します。
  6. 鍵の ARN をコピーします。
  7. もう 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 へのアクセス権。

コマンドライン

  1. Google Cloud CLI で認証します。

    gcloud auth login &&\
    gcloud auth application-default login
    

    cloud.google.com にアクセスして、Google アカウントで認証するように 2 回求められます。

  2. Google Cloud プロジェクトを環境変数として設定し、gcloud CLI を使用してデフォルトの project-id を設定します。

    export PROJECT_ID=project-id
    
    gcloud config set project $PROJECT_ID
    

    project-id の値は、実際の Google Cloud プロジェクトに置き換えます。

  3. 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
    
  4. 次のコマンドを実行して、gcloud でサービス アカウントを作成します。

    gcloud iam service-accounts create management-sa
    gcloud iam service-accounts create hub-sa
    gcloud iam service-accounts create node-sa
    
  5. 次のコマンドを実行して、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
    
  6. 管理サービス アカウントにロールを付与します。

    gcloud projects add-iam-policy-binding \
        $PROJECT_ID \
        --member serviceAccount:management-sa@$PROJECT_ID.iam.gserviceaccount.com \
        --role roles/gkehub.admin
    
  7. Hub サービス アカウントにロールを付与します。

    gcloud projects add-iam-policy-binding \
        $PROJECT_ID \
        --member serviceAccount:hub-sa@$PROJECT_ID.iam.gserviceaccount.com \
        --role roles/gkehub.connect
    
  8. ノード サービス アカウントにロールを付与します。

    gcloud projects add-iam-policy-binding \
          $PROJECT_ID \
          --member serviceAccount:node-sa@$PROJECT_ID.iam.gserviceaccount.com \
          --role roles/storage.objectViewer
    

コンソール

  1. Google Cloud コンソールで API ライブラリ ページを開きます。
  2. 画面上部にあるプルダウンからプロジェクトを選択します。
  3. 次の API を見つけて有効にします。

    • Anthos
    • Cloud Resource Manager
    • Cloud Storage
    • Cloud Logging
    • Google Cloud Storage JSON API
    • GKE Hub
    • GKE Connect API
    • Service Usage
    • Stackdriver
    • Stackdriver Monitoring
  4. [サービス アカウント] ページを開きます。

  5. 次に、サービス アカウントを作成し、management-sa サービス アカウントにロールを割り当てます。

    1. [サービス アカウントを作成] をクリックします。
    2. アカウント管理サービス アカウントに名前を付けて、[作成] をクリックします。[このサービス アカウントにプロジェクトへのアクセスを許可する] 画面が表示されます。
    3. GKE HUB 管理者ロールを追加します。
    4. [続行] をクリックします。[ユーザーにこのサービス アカウントへのアクセスを許可] 画面が表示されます。
    5. [完了] をクリックします。プロジェクトのサービス アカウントの画面が表示されます。
    6. サービス アカウントのメールアドレス を含む行(management-sa@project_id.iam.gserviceaccount.com)を探します。
    7. サービス アカウントの操作メニューをクリックし、[鍵を管理] を選択します。
    8. [鍵を追加] プルダウン メニューをクリックします。
    9. [新しい鍵を作成] をクリックします。
    10. 鍵のタイプとして [JSON] を選択し、[作成] をクリックします。ブラウザでサービス アカウント キーをダウンロードします。
    11. management-key.json ファイルの名前を変更します。
  6. 次に、サービス アカウントを作成し、hub-sa サービス アカウントにロールを割り当てます。

    1. [サービス アカウントを作成] をクリックします。
    2. アカウント ハブ サービス アカウントに名前を付けて、[作成] をクリックします。[このサービス アカウントにプロジェクトへのアクセスを許可する] 画面が表示されます。
    3. GKE Hub 接続エージェント ロールを追加します。
    4. [続行] をクリックします。[ユーザーにこのサービス アカウントへのアクセスを許可] 画面が表示されます。
    5. [完了] をクリックします。プロジェクトのサービス アカウントの画面が表示されます。
    6. サービス アカウントのメールアドレス を含む行(hub-sa@project_id.iam.gserviceaccount.com)を探します。
    7. サービス アカウントの操作メニューをクリックし、[鍵を管理] を選択します。
    8. [鍵を追加] プルダウン メニューをクリックします。
    9. [新しい鍵を作成] をクリックします。
    10. 鍵のタイプとして [JSON] を選択し、[作成] をクリックします。ブラウザでサービス アカウント キーをダウンロードします。
    11. hub-key.json ファイルの名前を変更します。
  7. 次に、サービス アカウントを作成し、node-sa サービス アカウントにロールを割り当てます。

    1. [サービス アカウントを作成] をクリックします。
    2. アカウント ノード サービス アカウントに名前を付けて、[作成] をクリックします。[このサービス アカウントにプロジェクトへのアクセスを許可する] 画面が表示されます。
    3. Storage オブジェクト閲覧者ロールを追加します。
    4. [完了] をクリックします。プロジェクトのサービス アカウントの画面が表示されます。
    5. サービス アカウントのメールアドレス を含む行(node-sa@project_id.iam.gserviceaccount.com)を探します。
    6. サービス アカウントの操作メニューをクリックし、[鍵を管理] を選択します。
    7. [鍵を追加] プルダウン メニューをクリックします。
    8. [新しい鍵を作成] をクリックします。
    9. 鍵のタイプとして [JSON] を選択し、[作成] をクリックします。ブラウザでサービス アカウント キーをダウンロードします。
    10. node-key.json ファイルの名前を変更します。

anthos-gke コマンドライン ツール

anthos-gke は、GKE on AWS のコマンドライン ツールです。anthos-gke を使用して構成を作成し、管理サービスをインストールしますanthos-gke の最新バージョンは aws-1.14.1-gke.0 です。

anthos-gke コマンドライン ツールは、Linux と macOS のみをサポートしています。

  1. 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 .
    
  2. anthos-gke の権限を更新し、/usr/local/bin にコピーします。

    chmod 755 anthos-gke
    sudo mv anthos-gke /usr/local/bin
    
  3. バージョンが 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 initanthos-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 の新しいバージョンをインストールします。

次のステップ