概要
このステップでは、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、udca などがそれぞれ独自のサービス アカウントを取得します。
非本番環境のインストールでは、すべてのコンポーネントに適用される単一のサービス アカウントを作成できます。
Apigee で使用されるサービス アカウントと、割り当てられているロールの詳細については、ハイブリッド コンポーネントで使用されるサービス アカウントとロールをご覧ください。
サービス アカウントの認証
Apigee ハイブリッドは、Google サービス アカウントの認証に次の 3 つの方法をサポートしています。
AKS、EKS、GKE での Workload Identity
GKE 上の Apigee ハイブリッド インストールの場合、Google Cloud にはハイブリッド ランタイム コンポーネントを認証するための Workload Identity と呼ばれるオプションが用意されています。このオプションでは、サービス アカウントの認証に、ダウンロードした証明書ファイルを使用しません。代わりに、この手順で作成した Google Cloud サービス アカウントを Kubernetes クラスタ内の Kubernetes サービス アカウントに関連付けます。GKE で Workload Identity を有効にするまたは AKS と EKS で Workload Identity 連携を有効にするをご覧ください。
サービス アカウントを作成する
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 アナリティクス エージェント | apigee-org |
apigee-watcher |
Apigee ランタイム エージェント | apigee-org |
非本番環境
サービス アカウント | IAM ロール | Apigee Helm チャート |
---|---|---|
apigee-non-prod |
Storage オブジェクト管理者 ログ書き込み Apigee Connect エージェント モニタリング指標の書き込み Apigee Synchronizer 管理者 Apigee アナリティクス エージェント 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 では、チャート ディレクトリ外のファイルへの参照はサポートされません。したがって、対応するハイブリッド コンポーネントのチャート ディレクトリ内に、各サービス アカウント証明書ファイルを作成します。
以降の手順で、本番環境と非本番環境のどちらのインストールを構成するかを選択します。
本番環境
PROJECT_ID
環境変数が定義されていることを確認します。echo $PROJECT_ID
create-service-account tool uses the value of the
。この変数を定義していない場合は、Google Cloud プロジェクト ID の ID を使用して定義するか、PROJECT_ID
environment variablecreate-service-account
コマンドに--project-id my_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
- 各チャートのディレクトリの内容を確認して、サービス アカウント ファイルが正しいディレクトリに作成されていることを確認します。出力は次のようになります。
ls ./apigee-datastore
Chart.yaml my_project_id-apigee-cassandra.json templates values.yamlls ./apigee-telemetry
Chart.yaml my_project_id-apigee-logger.json my_project_id-apigee-metrics.json templates values.yamlls ./apigee-org
Chart.yaml my_project_id-apigee-udca.json templates my_project_id-apigee-mart.json my_project_id-apigee-watcher.json values.yamlls ./apigee-env
Chart.yaml my_project_id-apigee-runtime.json my_project_id-apigee-synchronizer.json templates values.yaml
非本番環境
PROJECT_ID
環境変数が定義されていることを確認します。echo $PROJECT_ID
create-service-account tool uses the value of the
。この変数を定義していない場合は、Google Cloud プロジェクト ID の ID を使用して定義するか、PROJECT_ID
environment variablecreate-service-account
コマンドに--project-id my_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 my_project_id-apigee-non-prod.json templates values.yaml
- サービス アカウント ファイルを、参照する必要のある他のチャート ディレクトリにコピーします。
cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME.json $APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME.json $APIGEE_HELM_CHARTS_HOME/apigee-org/
cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME.json $APIGEE_HELM_CHARTS_HOME/apigee-env/
サービス アカウントと create-service-account
ツールの詳細については、以下をご覧ください。
これで、サービス アカウントが作成され、Apigee ハイブリッド コンポーネントに必要なロールが割り当てられました。次は、ハイブリッド Ingress ゲートウェイに必要な TLS 証明書を作成します。