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

概要

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

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

本番環境と非本番環境

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

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

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

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

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

GKE 上の Workload Identity

GKE 上の Apigee ハイブリッド インストールの場合、Google Cloud にはハイブリッド ランタイム コンポーネントを認証するための Workload Identity と呼ばれるオプションが用意されています。このオプションでは、サービス アカウントの認証に、ダウンロードした証明書ファイルを使用しません。代わりに、この手順で作成した Google Cloud サービス アカウントを Kubernetes クラスタ内の Kubernetes サービス アカウントに関連付けます。

Workload Identity は GKE インストールでのみ使用できます。

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

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

本番環境

サービス アカウント IAM ロール Apigee Helm チャート
apigee-cassandra Storage オブジェクト管理者 apigee-datastore
apigee-logger ログ書き込み apigee-telemetry
apigee-mart Apigee Connect エージェント apigee-org
apigee-metrics モニタリング指標の書き込み apigee-telemetry
apigee-runtime ロールは不要 apigee-env
apigee-synchronizer Apigee Synchronizer 管理者 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

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

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

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

本番環境

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

    create-service-account tool uses the value of thePROJECT_ID environment variable 。この変数を定義していない場合は、Google Cloud プロジェクト ID の ID を使用して定義するか、create-service-account コマンドに --project-id my_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-org
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-watcher \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-org
  3. 各チャートのディレクトリの内容を確認して、サービス アカウント ファイルが正しいディレクトリに作成されていることを確認します。出力は次のようになります。
    ls ./apigee-datastore
    Chart.yaml  my_project_id-apigee-cassandra.json  templates  values.yaml
    
    ls ./apigee-telemetry
    Chart.yaml  my_project_id-apigee-logger.json  my_project_id-apigee-metrics.json  templates  values.yaml
    
    ls ./apigee-org
    Chart.yaml                      my_project_id-apigee-udca.json     templates
    my_project_id-apigee-mart.json  my_project_id-apigee-watcher.json  values.yaml
    
    ls ./apigee-env
    Chart.yaml  my_project_id-apigee-runtime.json  my_project_id-apigee-synchronizer.json my_project_id-apigee-udca.json templates  values.yaml
    

非本番環境

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

    create-service-account tool uses the value of thePROJECT_ID environment variable 。この変数を定義していない場合は、Google Cloud プロジェクト ID の ID を使用して定義するか、create-service-account コマンドに --project-id my_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  my_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/

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

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

1 2 3 4 (次)ステップ 5: TLS 証明書を作成する 6 7 8 9 10 11 12