概要
このステップでは、Apigee ハイブリッドの運用に必要な Google Cloud サービス アカウントを作成し、適切な IAM ロールを割り当てる方法について説明します。
この手順では、ステップ 2: Apigee Helm チャートをダウンロードするで定義した次の 2 つの環境変数を使用します。これらの変数は省略可能です。これらを定義していない場合は、コードサンプルの各変数を適切なディレクトリ パスで置き換えてください。
$APIGEE_HELM_CHARTS_HOME
: ステップ 2: Apigee Helm チャートをダウンロードするで定義した、Apigee Helm チャートをダウンロードしたディレクトリ。$PROJECT_ID
: パート 1: プロジェクトと組織を設定する - ステップ 1: API を有効にするで定義した Google Cloud プロジェクト ID。
本番環境と非本番環境
このガイドでは、本番環境と非本番環境のインストールについて説明します。本番環境のインストールは、使用容量、ストレージ、スケーラビリティが向上するように調整されています。非本番環境のインストールは、使用するリソースが少なく、主に学習とデモ用に使用されます。
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
フラグを指定してサービス アカウント キーファイルを作成し、キーファイルのディレクトリを作成します。
本番環境
PROJECT_ID
環境変数が定義されていることを確認します。echo $PROJECT_ID
create-service-account tool uses the value of the
。この変数を定義していない場合は、Google Cloud プロジェクト ID を使用して定義するか、PROJECT_ID
environment variablecreate-service-account
コマンドに--project-id PROJECT_ID
フラグを追加します。-
次のコマンドを使用してサービス アカウントを作成します。
$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
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
非本番環境
PROJECT_ID
環境変数が定義されていることを確認します。echo $PROJECT_ID
create-service-account tool uses the value of the
。この変数を定義していない場合は、Google Cloud プロジェクト ID を使用して定義するか、PROJECT_ID
environment variablecreate-service-account
コマンドに--project-id PROJECT_ID
フラグを追加します。-
次のコマンドを使用してサービス アカウントを作成します。ここで、
$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
service-accounts
ディレクトリの内容を確認して、サービス アカウント ファイルが作成されたことを確認します。出力は次のようになります。ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
my-project-apigee-non-prod.json
JSON ファイル
Helm では、チャート ディレクトリ外のファイルへの参照はサポートされません。したがって、対応するハイブリッド コンポーネントのチャート ディレクトリ内に、各サービス アカウント証明書ファイルを作成します。
以降の手順で、本番環境と非本番環境のどちらのインストールを構成するかを選択します。
本番環境
PROJECT_ID
環境変数が定義されていることを確認します。echo $PROJECT_ID
create-service-account tool uses the value of the
。この変数を定義していない場合は、Google Cloud プロジェクト ID を使用して定義するか、PROJECT_ID
environment variablecreate-service-account
コマンドに--project-id PROJECT_ID
フラグを追加します。-
次のコマンドを使用してサービス アカウントを作成します。
$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
apigee-udca
JSON ファイルをapigee-env
グラフ ディレクトリにコピーします。これは、組織スコープと環境スコープの両方のオペレーションで必要です。cp $APIGEE_HELM_CHARTS_HOME/apigee-org/$PROJECT_ID-apigee-udca.json $APIGEE_HELM_CHARTS_HOME/apigee-env/
- 各チャートのディレクトリの内容を確認して、サービス アカウント ファイルが正しいディレクトリに作成されていることを確認します。出力は次のようになります。
ls ./apigee-datastore
Chart.yaml my-project-apigee-cassandra.json templates values.yamlls ./apigee-telemetry
Chart.yaml my-project-apigee-metrics.json values.yaml my-project-apigee-logger.json templatesls ./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.yamlls ./apigee-env
Chart.yaml my-project-apigee-synchronizer.json templates my-project-apigee-runtime.json my-project-apigee-udca.json values.yaml
非本番環境
PROJECT_ID
環境変数が定義されていることを確認します。echo $PROJECT_ID
create-service-account tool uses the value of the
。この変数を定義していない場合は、Google Cloud プロジェクト ID を使用して定義するか、PROJECT_ID
environment variablecreate-service-account
コマンドに--project-id PROJECT_ID
フラグを追加します。-
次のコマンドを使用してサービス アカウントを作成します。ここで、
$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
apigee-datastore
ディレクトリ内に作成されたサービス アカウント ファイルの名前を確認します。ls $APIGEE_HELM_CHARTS_HOME/apigee-datastore
Chart.yaml PROJECT_ID-apigee-non-prod.json templates values.yaml
- サービス アカウント ファイルを、これを参照する必要のある他のチャート ディレクトリにコピーします。
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
フラグを指定してサービス アカウント キーファイルを作成し、キーファイルのディレクトリを作成します。
本番環境
PROJECT_ID
環境変数が定義されていることを確認します。echo $PROJECT_ID
create-service-account tool uses the value of the
。この変数を定義していない場合は、Google Cloud プロジェクト ID を使用して定義するか、PROJECT_ID
environment variablecreate-service-account
コマンドに--project-id PROJECT_ID
フラグを追加します。-
次のコマンドを使用してサービス アカウントを作成します。
$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
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
非本番環境
PROJECT_ID
環境変数が定義されていることを確認します。echo $PROJECT_ID
create-service-account tool uses the value of the
。この変数を定義していない場合は、Google Cloud プロジェクト ID を使用して定義するか、PROJECT_ID
environment variablecreate-service-account
コマンドに--project-id PROJECT_ID
フラグを追加します。-
次のコマンドを使用してサービス アカウントを作成します。ここで、
$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
service-accounts
ディレクトリの内容を確認して、サービス アカウント ファイルが作成されたことを確認します。出力は次のようになります。ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
my-project-apigee-non-prod.json
GKE 用 WIF
次のコマンドを使用して、インストール用のサービス アカウントを作成します。
本番環境
PROJECT_ID
環境変数が定義されていることを確認します。echo $PROJECT_ID
create-service-account tool uses the value of the
。この変数を定義していない場合は、Google Cloud プロジェクト ID を使用して定義するか、PROJECT_ID
environment variablecreate-service-account
コマンドに--project-id PROJECT_ID
フラグを追加します。-
次のコマンドを使用してサービス アカウントを作成します。
$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
-
次のコマンドを使用して、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
非本番環境
PROJECT_ID
環境変数が定義されていることを確認します。echo $PROJECT_ID
create-service-account tool uses the value of the
。この変数を定義していない場合は、Google Cloud プロジェクト ID を使用して定義するか、PROJECT_ID
environment variablecreate-service-account
コマンドに--project-id PROJECT_ID
フラグを追加します。-
次のコマンドを使用してサービス アカウントを作成します。ここで、
$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
-
次のコマンドを使用して、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
次のコマンドを使用して、インストール用のサービス アカウントを作成します。
本番環境
PROJECT_ID
環境変数が定義されていることを確認します。echo $PROJECT_ID
create-service-account tool uses the value of the
。この変数を定義していない場合は、Google Cloud プロジェクト ID を使用して定義するか、PROJECT_ID
environment variablecreate-service-account
コマンドに--project-id PROJECT_ID
フラグを追加します。-
次のコマンドを使用してサービス アカウントを作成します。
$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
-
次のコマンドを使用して、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
非本番環境
PROJECT_ID
環境変数が定義されていることを確認します。echo $PROJECT_ID
create-service-account tool uses the value of the
。この変数を定義していない場合は、Google Cloud プロジェクト ID を使用して定義するか、PROJECT_ID
environment variablecreate-service-account
コマンドに--project-id PROJECT_ID
フラグを追加します。-
次のコマンドを使用してサービス アカウントを作成します。ここで、
$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
-
次のコマンドを使用して、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 証明書を作成します。