ステップ 4: サービス アカウントを作成する

概要

このステップでは、Apigee ハイブリッドの運用に必要な Google Cloud サービス アカウントを作成し、適切な IAM ロールを割り当てる方法について説明します。

この手順では、ステップ 2: Apigee Helm チャートをダウンロードするで定義した次の 2 つの環境変数を使用します。これらの変数は省略可能です。これらを定義していない場合は、コードサンプルの各変数を適切なディレクトリ パスで置き換えてください。

本番環境と非本番環境

このガイドでは、本番環境と非本番環境のインストールについて説明します。本番環境のインストールは、使用容量、ストレージ、スケーラビリティが向上するように調整されています。非本番環境のインストールは、使用するリソースが少なく、主に学習とデモ用に使用されます。

Apigee ハイブリッドのサービス アカウントを作成して構成する場合は、ターゲットとするインストールの種類を認識することが重要です。

本番環境のインストールでは、Apigee ハイブリッド コンポーネントごとに個別のサービス アカウントを作成することをおすすめします。たとえば、runtime、mart、metrics、mint、udca などの各コンポーネントには専用のサービス アカウントがあります。

非本番環境のインストールでは、すべてのコンポーネントに適用される単一のサービス アカウントを作成できます。

Apigee で使用されるサービス アカウントと、割り当てられているロールの詳細については、ハイブリッド コンポーネントで使用されるサービス アカウントとロールをご覧ください。

サービス アカウントの認証

Apigee ハイブリッドは、Google サービス アカウントの認証に次の方法をサポートしています。

  • Kubernetes Secret
  • サービス アカウントの JSON キーファイル(次のセクションの選択タブでは「JSON ファイル」)。
  • Vault
  • Workload Identity Federation for GKE(次のセクションの選択タブでは「WIF for GKE」)。
  • 他のプラットフォームの Workload Identity 連携(次のセクションの選択タブでは「他のプラットフォームの WIF」)。

次のセクションで、使用する認証タイプのプロシージャを選択します。

サービス アカウントを作成する

Apigee ハイブリッドでは、次のサービス アカウントが使用されます。

本番環境

サービス アカウント IAM ロール Apigee Helm チャート
apigee-cassandra Storage オブジェクト管理者 apigee-datastore
apigee-logger ログ書き込み apigee-telemetry
apigee-mart Apigee Connect エージェント apigee-org
apigee-metrics モニタリング指標の書き込み apigee-telemetry
apigee-mint-task-scheduler
Apigee ハイブリッドの収益化を使用している場合にのみ必要)
ロールは不要 apigee-org
apigee-runtime ロールは不要 apigee-env
apigee-synchronizer Apigee Synchronizer 管理者
Storage オブジェクト管理者
apigee-env
apigee-udca Apigee Analytics エージェント apigee-org
apigee-env
apigee-watcher Apigee ランタイム エージェント apigee-org

非本番環境

サービス アカウント IAM ロール Apigee Helm チャート
apigee-non-prod Storage オブジェクト管理者
ログ書き込み
Apigee Connect エージェント
モニタリング指標の書き込み
Apigee Synchronizer 管理者
Apigee Analytics エージェント
Apigee ランタイム エージェント
apigee-datastore
apigee-telemetry
apigee-org
apigee-env

create-service-account ツール

Apigee には、apigee-operator/etc/tools ディレクトリ内に create-service-account ツールが用意されています。

$APIGEE_HELM_CHARTS_HOME/
    └── apigee-operator/
        └── etc/
            └── tools/
                └── create-service-account

このツールは、サービス アカウントを作成し、各アカウントに IAM ロールを割り当て、アカウントごとに JSON 形式の証明書ファイルをダウンロードします。

create-service-account を実行できることを確認します。チャートをダウンロードしたばかりの場合は、create-service-account ファイルが実行可能モードになっていない可能性があります。APIGEE_HELM_CHARTS_HOME ディレクトリで、次のコマンドを実行します。

$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account --help

出力に permission denied と表示された場合は、ファイルを実行可能にする必要があります。たとえば、Linux、MacOS、UNIX、Windows エクスプローラーでは chmod を、Windows では icacls コマンドを使用します。次に例を示します。

chmod +x $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account

サービス アカウントを作成する

インストールで使用するサービス アカウント認証方法の手順を選択します。詳細については、Apigee ハイブリッドのサービス アカウント認証方法をご覧ください。

Kubernetes Secret

Kubernetes Secret に保存するサービス アカウント キーファイルを準備するには、create-service-account ツールを使用して、--dir フラグを指定してサービス アカウント キーファイルを作成し、キーファイルのディレクトリを作成します。

本番環境

  1. PROJECT_ID 環境変数が定義されていることを確認します。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。この変数を定義していない場合は、Google Cloud プロジェクト ID を使用して定義するか、create-service-account コマンドに --project-id PROJECT_ID フラグを追加します。

  2. 次のコマンドを使用してサービス アカウントを作成します。$APIGEE_HELM_CHARTS_HOME は、Apigee Helm チャートをダウンロードしたパスです。各サービス アカウントの作成を求められる場合があります。この場合は、回答に y を選択します。
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. service-accounts ディレクトリの内容を確認して、サービス アカウント ファイルが作成されていることを確認します。出力は次のようになります。
    ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
    my-project-apigee-cassandra.json            my-project-apigee-runtime.json
    my-project-apigee-logger.json               my-project-apigee-synchronizer.json
    my-project-apigee-mart.json                 my-project-apigee-udca.json
    my-project-apigee-metrics.json              my-project-apigee-watcher.json
    my-project-apigee-mint-task-scheduler.json

非本番環境

  1. PROJECT_ID 環境変数が定義されていることを確認します。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。この変数を定義していない場合は、Google Cloud プロジェクト ID を使用して定義するか、create-service-account コマンドに --project-id PROJECT_ID フラグを追加します。

  2. 次のコマンドを使用してサービス アカウントを作成します。ここで、$APIGEE_HELM_CHARTS_HOME は Apigee Helm チャートをダウンロードしたパスです。サービス アカウントの作成を求められる場合があります。この場合は、回答に y を選択します。
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. service-accounts ディレクトリの内容を確認して、サービス アカウント ファイルが作成されたことを確認します。出力は次のようになります。
    ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
    my-project-apigee-non-prod.json

JSON ファイル

Helm では、チャート ディレクトリ外のファイルへの参照はサポートされません。したがって、対応するハイブリッド コンポーネントのチャート ディレクトリ内に、各サービス アカウント証明書ファイルを作成します。

以降の手順で、本番環境と非本番環境のどちらのインストールを構成するかを選択します。

本番環境

  1. PROJECT_ID 環境変数が定義されていることを確認します。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。この変数を定義していない場合は、Google Cloud プロジェクト ID を使用して定義するか、create-service-account コマンドに --project-id PROJECT_ID フラグを追加します。

  2. 次のコマンドを使用してサービス アカウントを作成します。$APIGEE_HELM_CHARTS_HOME は、Apigee Helm チャートをダウンロードしたパスです。各サービス アカウントの作成を求められる場合があります。この場合は、回答に y を選択します。
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-cassandra \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-datastore
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-logger \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-telemetry
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-mart \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-org
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-metrics \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-telemetry
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-runtime \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-env
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-synchronizer \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-env
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-udca \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-env
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-udca \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-org
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-watcher \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-org

    Apigee ハイブリッドの収益化(Apigee ハイブリッド v1.15.1 以降)を有効にする場合:

    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-mint-task-scheduler \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-org
    
  3. apigee-udca JSON ファイルを apigee-env グラフ ディレクトリにコピーします。これは、組織スコープと環境スコープの両方のオペレーションで必要です。
    cp $APIGEE_HELM_CHARTS_HOME/apigee-org/$PROJECT_ID-apigee-udca.json $APIGEE_HELM_CHARTS_HOME/apigee-env/
  4. 各チャートのディレクトリの内容を確認して、サービス アカウント ファイルが正しいディレクトリに作成されていることを確認します。出力は次のようになります。
    ls ./apigee-datastore
    Chart.yaml  my-project-apigee-cassandra.json  templates  values.yaml
    
    ls ./apigee-telemetry
    Chart.yaml                     my-project-apigee-metrics.json  values.yaml
    my-project-apigee-logger.json  templates
    
    ls ./apigee-org
    Chart.yaml                                  my-project-apigee-udca.json
    my-project-apigee-mart.json                 my-project-apigee-watcher.json
    my-project-apigee-mint-task-scheduler.json  values.yaml
    
    ls ./apigee-env
    Chart.yaml                      my-project-apigee-synchronizer.json  templates
    my-project-apigee-runtime.json  my-project-apigee-udca.json          values.yaml
    

非本番環境

  1. PROJECT_ID 環境変数が定義されていることを確認します。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。この変数を定義していない場合は、Google Cloud プロジェクト ID を使用して定義するか、create-service-account コマンドに --project-id PROJECT_ID フラグを追加します。

  2. 次のコマンドを使用してサービス アカウントを作成します。ここで、$APIGEE_HELM_CHARTS_HOME は Apigee Helm チャートをダウンロードしたパスです。各サービス アカウントの作成を求められる場合があります。この場合は、回答に y を選択します。
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-datastore
  3. apigee-datastore ディレクトリ内に作成されたサービス アカウント ファイルの名前を確認します。
    ls $APIGEE_HELM_CHARTS_HOME/apigee-datastore
    Chart.yaml  PROJECT_ID-apigee-non-prod.json  templates  values.yaml
  4. サービス アカウント ファイルを、これを参照する必要のある他のチャート ディレクトリにコピーします。
    cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME $APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
    cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME $APIGEE_HELM_CHARTS_HOME/apigee-org/
    cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME $APIGEE_HELM_CHARTS_HOME/apigee-env/

Vault

Vault に保存するサービス アカウント キーファイルを準備するには、create-service-account ツールを使用して、--dir フラグを指定してサービス アカウント キーファイルを作成し、キーファイルのディレクトリを作成します。

本番環境

  1. PROJECT_ID 環境変数が定義されていることを確認します。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。この変数を定義していない場合は、Google Cloud プロジェクト ID を使用して定義するか、create-service-account コマンドに --project-id PROJECT_ID フラグを追加します。

  2. 次のコマンドを使用してサービス アカウントを作成します。$APIGEE_HELM_CHARTS_HOME は、Apigee Helm チャートをダウンロードしたパスです。各サービス アカウントの作成を求められる場合があります。この場合は、回答に y を選択します。
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. service-accounts ディレクトリの内容を確認して、サービス アカウント ファイルが作成されていることを確認します。出力は次のようになります。
    ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
    my-project-apigee-cassandra.json            my-project-apigee-runtime.json
    my-project-apigee-logger.json               my-project-apigee-synchronizer.json
    my-project-apigee-mart.json                 my-project-apigee-udca.json
    my-project-apigee-metrics.json              my-project-apigee-watcher.json
    my-project-apigee-mint-task-scheduler.json
    

非本番環境

  1. PROJECT_ID 環境変数が定義されていることを確認します。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。この変数を定義していない場合は、Google Cloud プロジェクト ID を使用して定義するか、create-service-account コマンドに --project-id PROJECT_ID フラグを追加します。

  2. 次のコマンドを使用してサービス アカウントを作成します。ここで、$APIGEE_HELM_CHARTS_HOME は Apigee Helm チャートをダウンロードしたパスです。サービス アカウントの作成を求められる場合があります。この場合は、回答に y を選択します。
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. service-accounts ディレクトリの内容を確認して、サービス アカウント ファイルが作成されたことを確認します。出力は次のようになります。
    ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
    my-project-apigee-non-prod.json

GKE 用 WIF

次のコマンドを使用して、インストール用のサービス アカウントを作成します。

本番環境

  1. PROJECT_ID 環境変数が定義されていることを確認します。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。この変数を定義していない場合は、Google Cloud プロジェクト ID を使用して定義するか、create-service-account コマンドに --project-id PROJECT_ID フラグを追加します。

  2. 次のコマンドを使用してサービス アカウントを作成します。$APIGEE_HELM_CHARTS_HOME は、Apigee Helm チャートをダウンロードしたパスです。各サービス アカウントの作成を求められる場合があります。この場合は、回答に y を選択します。
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. 次のコマンドを使用して、Google サービス アカウントの作成を確認します。
    gcloud iam service-accounts list --project $PROJECT_ID

    出力は次のようになります。

    DISPLAY NAME                EMAIL                                                          DISABLED
    apigee-cassandra            apigee-cassandra@my-project.iam.gserviceaccount.com            False
    apigee-mart                 apigee-mart@my-project.iam.gserviceaccount.com                 False
    apigee-metrics              apigee-metrics@my-project.iam.gserviceaccount.com              False
    apigee-mint-task-scheduler  apigee-mint-task-scheduler@my-project.iam.gserviceaccount.com  False
    apigee-runtime              apigee-runtime@my-project.iam.gserviceaccount.com              False
    apigee-synchronizer         apigee-synchronizer@my-project.iam.gserviceaccount.com         False
    apigee-udca                 apigee-udca@my-project.iam.gserviceaccount.com                 False
    apigee-watcher              apigee-watcher@my-project.iam.gserviceaccount.com              False
    

非本番環境

  1. PROJECT_ID 環境変数が定義されていることを確認します。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。この変数を定義していない場合は、Google Cloud プロジェクト ID を使用して定義するか、create-service-account コマンドに --project-id PROJECT_ID フラグを追加します。

  2. 次のコマンドを使用してサービス アカウントを作成します。ここで、$APIGEE_HELM_CHARTS_HOME は Apigee Helm チャートをダウンロードしたパスです。サービス アカウントの作成を求められる場合があります。この場合は、回答に y を選択します。
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. 次のコマンドを使用して、Google サービス アカウントの作成を確認します。
    gcloud iam service-accounts list --project $PROJECT_ID

    出力は次のようになります。

    DISPLAY NAME         EMAIL                                                   DISABLED
    apigee-non-prod      apigee-non-prod@my-project.iam.gserviceaccount.com      False
    

省略可: Workload Identity Federation for GKE にはサービス アカウントのキーファイルは必要ありません。完了したら、service-accounts ディレクトリを削除できます。

他のプラットフォームでの WIF

次のコマンドを使用して、インストール用のサービス アカウントを作成します。

本番環境

  1. PROJECT_ID 環境変数が定義されていることを確認します。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。この変数を定義していない場合は、Google Cloud プロジェクト ID を使用して定義するか、create-service-account コマンドに --project-id PROJECT_ID フラグを追加します。

  2. 次のコマンドを使用してサービス アカウントを作成します。$APIGEE_HELM_CHARTS_HOME は、Apigee Helm チャートをダウンロードしたパスです。各サービス アカウントの作成を求められる場合があります。この場合は、回答に y を選択します。
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. 次のコマンドを使用して、Google サービス アカウントの作成を確認します。
    gcloud iam service-accounts list --project $PROJECT_ID

    出力は次のようになります。

    DISPLAY NAME                EMAIL                                                          DISABLED
    apigee-cassandra            apigee-cassandra@my-project.iam.gserviceaccount.com            False
    apigee-mart                 apigee-mart@my-project.iam.gserviceaccount.com                 False
    apigee-metrics              apigee-metrics@my-project.iam.gserviceaccount.com              False
    apigee-mint-task-scheduler  apigee-mint-task-scheduler@my-project.iam.gserviceaccount.com  False
    apigee-runtime              apigee-runtime@my-project.iam.gserviceaccount.com              False
    apigee-synchronizer         apigee-synchronizer@my-project.iam.gserviceaccount.com         False
    apigee-udca                 apigee-udca@my-project.iam.gserviceaccount.com                 False
    apigee-watcher              apigee-watcher@my-project.iam.gserviceaccount.com              False
    

非本番環境

  1. PROJECT_ID 環境変数が定義されていることを確認します。
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 。この変数を定義していない場合は、Google Cloud プロジェクト ID を使用して定義するか、create-service-account コマンドに --project-id PROJECT_ID フラグを追加します。

  2. 次のコマンドを使用してサービス アカウントを作成します。ここで、$APIGEE_HELM_CHARTS_HOME は Apigee Helm チャートをダウンロードしたパスです。サービス アカウントの作成を求められる場合があります。この場合は、回答に y を選択します。
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. 次のコマンドを使用して、Google サービス アカウントの作成を確認します。
    gcloud iam service-accounts list --project $PROJECT_ID

    出力は次のようになります。

    DISPLAY NAME         EMAIL                                                   DISABLED
    apigee-non-prod      apigee-non-prod@my-project.iam.gserviceaccount.com      False
    

省略可: Workload Identity Federation for GKE にはサービス アカウントのキーファイルは必要ありません。完了したら、service-accounts ディレクトリを削除できます。

サービス アカウントと create-service-account ツールの詳細については、以下をご覧ください。

これで、サービス アカウントが作成され、Apigee ハイブリッド コンポーネントに必要なロールが割り当てられました。次は、ハイブリッド Ingress ゲートウェイに必要な TLS 証明書を作成します。

次のステップ

1 2 3 4 (次)ステップ 5: サービス アカウント認証を設定する 6 7 8 9 10 11