このステップでは、Apigee ハイブリッドの動作に必要な Google Cloud サービス アカウントを作成する方法について説明します。
概要
Apigee ハイブリッドでは Google Cloud サービス アカウントを使用して、認可された API 呼び出しによるハイブリッド コンポーネント間の通信が許可されます。
本番環境と非本番環境
このガイドでは、本番環境と非本番環境のインストールについて説明します。本番環境のインストールは、使用容量、ストレージ、スケーラビリティが向上するように調整されています。非本番環境インストールでは、使用するリソースが少なく、主に学習とデモ用に使用されます。
Apigee ハイブリッドのサービス アカウントを作成して構成する場合は、ターゲットとするインストールの種類を認識することが重要です。
本番環境のインストールでは、Apigee ハイブリッド コンポーネントごとに個別のサービス アカウントを作成することをおすすめします。たとえば、runtime、mart、metrics、udca などがそれぞれ独自のサービス アカウントを取得します。
非本番環境のインストールでは、すべてのコンポーネントに適用される単一のサービス アカウントを作成できます。
Apigee で使用されるサービス アカウントと割り当てられているロールの詳細については、ハイブリッド コンポーネントで使用されるサービス アカウントとロールをご覧ください。
GKE 上の Workload Identity
GKE 上の Apigee ハイブリッド インストールの場合、Google Cloud にはハイブリッド ランタイム コンポーネントを認証するための Workload Identity と呼ばれるオプションが用意されています。このオプションでは、サービス アカウントを認証するためにダウンロードした証明書ファイルを使用しません。代わりに、この手順で作成した Google Cloud サービス アカウントを Kubernetes クラスタ内の Kubernetes サービス アカウントに関連付けます。
Workload Identity は GKE インストールでのみ使用できます。
サービス アカウントを作成する
次の手順で、ハイブリッド インストール用の Google Cloud サービス アカウントを作成します。
create-service-account
ツール: GKE 以外のプラットフォームに Apigee ハイブリッドをインストールする場合、または GKE にインストールするものの Workload Identity を使用しない場合は、Apigee が提供するツールであるcreate-service-account
を使用して、1 つのコマンドでサービス アカウントを作成し、サービス アカウントにロールを割り当て、サービス アカウント キーファイルを作成してダウンロードできます。
create-service-account
を使用してサービス アカウントを作成するの手順に沿って操作します。- Google Cloud コンソールまたは
gcloud
: GKE に Apigee ハイブリッドをインストールし、Workload Identity を使用する場合は、Google Cloud コンソールまたはgcloud
を使用します。
Google Cloud コンソールまたはgcloud
でサービス アカウントを作成するの手順に沿って操作します。
create-service-account
を使用してサービス アカウントを作成する
create-service-account
ツールは次のような状況で使用します。
- GKE 以外のプラットフォームにインストールしようとしている
- GKE にインストールしているが、Workload Identity を使用する予定はない。
それ以外の場合は、Google Cloud コンソールまたは gcloud
でサービス アカウントを作成するに進んでください。
- 環境変数 HYBRID_FILES と PROJECT_ID が設定されていることを確認します。
PROJECT_ID は Google Cloud プロジェクト ID に設定する必要があります。これは、
create-service-account
ツールが PROJECT_ID 環境変数を読み取り、サービス アカウントを正しいプロジェクトで作成するためです。echo $HYBRID_FILES
echo $PROJECT_ID
- 次のコマンドを使用してサービス アカウントを作成します。
非本番環境
このコマンドは、非本番環境のインストールで使用する
apigee-non-prod
という名前のサービス アカウントを 1 つ作成し、サービス アカウント キーファイルを$HYBRID_FILES/service-accounts
ディレクトリにダウンロードします。$HYBRID_FILES/tools/create-service-account --env non-prod --dir $HYBRID_FILES/service-accounts
本番環境
このコマンドは、本番環境のインストールの各サービス アカウントをすべて作成し、
$HYBRID_FILES/service-accounts
ディレクトリにサービス アカウント キーファイルをダウンロードします。$HYBRID_FILES/tools/create-service-account --env prod --dir $HYBRID_FILES/service-accounts
次のプロンプトが表示されたら、「y」と入力します。
[INFO]: gcloud configured project ID is project_id. Enter: y to proceed with creating service account in project: project_id Enter: n to abort.
特定のサービス アカウントを初めて作成する場合は、プロンプトが表示されずにアカウントが作成されます。
ただし、次のメッセージとプロンプトが表示されたら、「y」を入力して新しい鍵を生成してください。
[INFO]: Service account apigee-non-prod@project_id.iam.gserviceaccount.com already exists. ... [INFO]: The service account might have keys associated with it. It is recommended to use existing keys. Press: y to generate new keys.(this does not deactivate existing keys) Press: n to skip generating new keys.
-
次のコマンドを使用して、サービス アカウント キーが作成されたことを確認します。これらの秘密鍵は安全に保存する必要があります。鍵ファイルの名前の先頭に、Google Cloud プロジェクトの名前が付加されます。
ls $HYBRID_FILES/service-accounts
結果は次のようになります。
project_id-apigee-non-prod.json
create-service-account
とそのすべてのオプションの詳細については、create-service-account
をご覧ください。- 関連する Google Cloud のコンセプトの詳細については、サービス アカウントの作成と管理とサービス アカウント キーの作成と管理をご覧ください。
Google Cloud コンソールまたは gcloud
でサービス アカウントを作成する
GKE で Workload Identity を使用してハイブリッド ランタイム コンポーネントを認証する場合は、サービス アカウント用の証明書ファイルを作成してダウンロードする必要はありません。そのため、create-service-account
ツールは使用しないでください。代わりに、Google Cloud コンソールまたは gcloud
の IAM API を使用して、サービス アカウントを作成します。
それ以外の場合は、create-service-account
を使用してサービス アカウントを作成するに進みます。
コンソール
サービス アカウントを作成するの説明に従って、次のサービス アカウントを作成して、次のロールを割り当てます。
非本番環境
非本番環境のインストールの場合:
サービス アカウント名 | IAM ロール |
---|---|
apigee-non-prod |
|
本番環境
本番環境のインストールの場合:
本番環境のインストール | |
---|---|
サービス アカウント名 | IAM ロール |
apigee-cassandra |
Storage オブジェクト管理者 |
apigee-logger |
ログ書き込み |
apigee-mart |
Apigee Connect エージェント |
apigee-metrics |
モニタリング指標の書き込み |
apigee-runtime |
ロールは不要 |
apigee-synchronizer |
Apigee Synchronizer 管理者 |
apigee-udca |
Apigee Analytics エージェント |
apigee-watcher |
Apigee ランタイム エージェント |
gcloud
次のコマンドを使用してサービス アカウントを作成し、IAM ロールを割り当てます。
非本番環境
非本番環境のインストールの場合:
apigee-non-prod
サービス アカウントを作成します。gcloud iam service-accounts create apigee-non-prod \ --display-name="apigee-non-prod" \ --project=$PROJECT_ID
- サービス アカウントに IAM ロールを割り当てます。
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/storage.objectAdmin"
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/logging.logWriter"
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/apigeeconnect.Agent"
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/apigee.synchronizerManager"
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/apigee.analyticsAgent"
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/apigee.runtimeAgent"
- ロール バインディングを確認します。
gcloud projects get-iam-policy ${PROJECT_ID} \ --flatten="bindings[].members" \ --format='table(bindings.role)' \ --filter="bindings.members:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com"
本番環境
本番環境のインストールの場合:
次のコマンドを使用して、各サービス アカウントを作成し、対応する IAM のロールを割り当てます。
apigee-cassandra
サービス アカウント:gcloud iam service-accounts create apigee-cassandra \ --display-name="apigee-cassandra" \ --project=$PROJECT_ID
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-cassandra@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/storage.objectAdmin"
apigee-logger
サービス アカウント:gcloud iam service-accounts create apigee-logger \ --display-name="apigee-logger" \ --project=$PROJECT_ID
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-logger@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/logging.logWriter"
apigee-mart
サービス アカウント:gcloud iam service-accounts create apigee-mart \ --display-name="apigee-mart" \ --project=$PROJECT_ID
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-mart@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/apigeeconnect.Agent"
apigee-metrics
サービス アカウント:gcloud iam service-accounts create apigee-metrics \ --display-name="apigee-metrics" \ --project=$PROJECT_ID
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-metrics@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"
apigee-runtime
サービス アカウント:gcloud iam service-accounts create apigee-runtime \ --display-name="apigee-runtime" \ --project=$PROJECT_ID
apigee-synchronizer
サービス アカウント:gcloud iam service-accounts create apigee-synchronizer \ --display-name="apigee-synchronizer" \ --project=$PROJECT_ID
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-synchronizer@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/apigee.synchronizerManager"
apigee-udca
サービス アカウント:gcloud iam service-accounts create apigee-udca \ --display-name="apigee-udca" \ --project=$PROJECT_ID
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-udca@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/apigee.analyticsAgent"
apigee-watcher
サービス アカウント:gcloud iam service-accounts create apigee-watcher \ --display-name="apigee-watcher" \ --project=$PROJECT_ID
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-watcher@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/apigee.runtimeAgent"
gcloud
を使用してサービス アカウントを作成する方法の詳細については、サービス アカウントを作成するをご覧ください。
これで、サービス アカウントが作成され、Apigee ハイブリッド コンポーネントに必要なロールが割り当てられました。次は、ハイブリッド Ingress ゲートウェイに必要な TLS 証明書を作成します。
1 2 3 4 (次)ステップ 5: TLS 証明書を作成する 6 7 8 9 10