このページの内容は Apigee を対象としています。Apigee ハイブリッドは対象としていません。
Apigee Edge のドキュメントを表示する。
このページでは、Apigee APIM Operator for Kubernetes をインストールして構成する前に完了する必要がある手順について説明します。APIM Operator を使用する利点については、Apigee APIM Operator for Kubernetes の概要をご覧ください。
必要なロール
APIM Operator のインストールと使用に必要なリソースを設定するために必要な権限を取得するには、組織で次の IAM ロールを付与するよう管理者に依頼してください。
- Google Kubernetes Engine(GKE)クラスタを作成して管理する: コンテナ管理者(
roles/container.admin
) -
サービス アカウントを作成して管理する: サービス アカウント管理者(
roles/iam.serviceAccountAdmin
) -
サービス拡張機能を作成して管理する: Service Extensions 管理者(
roles/networkservices.serviceExtensionsAdmin
) - ネットワーク エンドポイント グループ(NEG)を作成して管理する: Compute インスタンス管理者(
roles/compute.instanceAdmin
) - バックエンド サービスを作成して管理する: Compute ロードバランサ管理者(
roles/compute.loadBalancerAdmin
) -
Apigee リソースを作成して管理する: Apigee 管理者(
roles/apigee.admin
)
ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
必要な設定タスク
APIM Operator をインストールする前に、次のタスクを完了して、この機能を使用するのに必要なリソースを設定します。
バージョン
1-15-0-apigee-4
以降を使用して、Apigee インスタンスをプロビジョニングします。インスタンスのバージョンは、 Google Cloud コンソールの Apigee UI の [インスタンスの詳細] ページで確認できます。 Google Cloud コンソールの [インスタンス] ページに移動して、インスタンスを選択し、詳細を確認します。
APIM Operator は、サブスクリプションまたは従量課金制の Apigee 組織で使用できます。有料の Apigee インスタンスのプロビジョニングの詳細については、始める前にをご覧ください。
Google Cloud CLI をインストールします。
Google Cloud CLI をインストールしたら、
gcloud components update
コマンドを実行して最新の gcloud コンポーネントを取得します。kubectl
コマンドライン ツールをインストールして構成します。- Helm(バージョン v3.14.3 以降)をインストールします。
GKE バージョン 1.27 以降を使用して GKE クラスタを作成し、Workload Identity Federation for GKE と GKE Gateway を有効にします。
これらの要件を満たす既存のクラスタがある場合は、この手順をスキップできます。
Autopilot モードを使用してクラスタを作成して管理する場合、Workload Identity Federation for GKE はデフォルトで有効になっています。詳細については、Autopilot の概要をご覧ください。
Autopilot を使用し、Workload Identity Federation for GKE と GKE Gateway を有効にして新しいクラスタを作成する手順については、Gateway のデプロイをご覧ください。
- GKE Gateway をクラスタにデプロイします。
内部ゲートウェイまたは外部ゲートウェイのいずれかを選択して構成およびデプロイし、APIM Operator で使用できます。 内部ゲートウェイをデプロイする場合は、プロキシ専用サブネットと共有 VPC が必要です。このガイドの手順をテストするには、外部ゲートウェイをデプロイすることをおすすめします。詳細については、GKE Gateway Controller の要件をご覧ください。
GKE Gateway をデプロイするには、外部ゲートウェイをデプロイするで説明されている手順を使用します。ゲートウェイを作成する際は、次の
yaml
構成を使用します。# gateway.yaml kind: Gateway apiVersion: gateway.networking.k8s.io/v1beta1 metadata: name: global-ext-lb1 namespace: default spec: gatewayClassName: gke-l7-global-external-managed listeners: - name: http protocol: HTTP allowedRoutes: kinds: - kind: HTTPRoute namespaces: from: All port: 80
ファイルをクラスタに適用します。
kubectl apply -f gateway.yaml
- バックエンド アプリケーションをクラスタにデプロイします。
作成してデプロイした
global-ext-lb1
ゲートウェイによって公開されるバックエンド アプリケーションをデプロイするには:target.yaml
という名前の新しいファイルを作成します。- 次の内容を新しいファイルにコピーします。
# target.yaml apiVersion: v1 kind: Namespace metadata: name: http --- apiVersion: v1 kind: ServiceAccount metadata: name: httpbin namespace: http --- apiVersion: v1 kind: Service metadata: name: httpbin namespace: http labels: app: httpbin service: httpbin spec: type: LoadBalancer ports: - name: https port: 80 targetPort: 80 selector: app: httpbin --- apiVersion: apps/v1 kind: Deployment metadata: name: httpbin namespace: http spec: replicas: 1 selector: matchLabels: app: httpbin version: v1 template: metadata: labels: app: httpbin version: v1 spec: serviceAccountName: httpbin containers: - image: docker.io/kennethreitz/httpbin imagePullPolicy: IfNotPresent name: httpbin ports: - containerPort: 80 resources: requests: cpu: 1 memory: 1024Mi limits: cpu: 1 memory: 1024Mi
- クラスタに構成を適用します。
kubectl apply -f target.yaml
バックエンド アプリケーションを GKE クラスタにデプロイする方法については、デモ アプリケーションをデプロイするをご覧ください。
- HTTPRoute リソースをクラスタにデプロイして、ゲートウェイからバックエンド サービスへのトラフィックをマッピングします。
HTTPRoute リソースの詳細については、HTTPRoute をデプロイする(内部ゲートウェイの場合)または HTTPRoute を作成する(外部ゲートウェイの場合)をご覧ください。
このガイドでは、HTTPRoute を作成するの手順に沿って、外部ゲートウェイと HTTPRoute をデプロイすることをおすすめします。HTTPRoute を作成する際は、次の
yaml
構成を使用し、HOST_NAME
を使用するホスト名に置き換えます。# httproute.yaml kind: HTTPRoute apiVersion: gateway.networking.k8s.io/v1beta1 metadata: name: http-bin-route namespace: http spec: parentRefs: - kind: Gateway name: global-ext-lb1 namespace: default hostnames: - HOST_NAME rules: - matches: - path: value: / backendRefs: - name: httpbin kind: Service port: 80 namespace: http
ファイルをクラスタに適用します。
kubectl apply -f httproute.yaml
- GKE Gateway の設定を確認して、想定どおりに動作していることを確認します。
- 次のコマンドを使用して、ゲートウェイの詳細を取得します。
kubectl get gateway global-ext-lb1
出力は次のようになります。
NAME CLASS ADDRESS PROGRAMMED AGE global-ext-lb1 gke-l7-global-external-managed 34.54.193.72 True 11d
IP アドレスがゲートウェイに割り当てられ、
PROGRAMMED
の値がTrue
であることを確認します。 - ゲートウェイを記述して、ルートが接続されていることを確認します。
kubectl describe gateway global-ext-lb1
出力は次のようになります。
... Listeners: Attached Routes: 1 Conditions: Last Transition Time: 2024-10-03T03:10:17Z ...
Attached Routes
の値が、ルートが接続されていることを示す1
になっていることを確認します。 - ゲートウェイにリクエストを送信します。
curl http://GATEWAY_IP_ADDRESS/get \ -H "Host: HOST_NAME"
ここで
GATEWAY_IP_ADDRESS
はゲートウェイの IP アドレスです。 ゲートウェイの IP アドレスを取得するには、次のコマンドを使用します。ここで、GATEWAY_NAME
はゲートウェイの名前です。kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
は、ゲートウェイのHTTPRoute
で定義されたホスト名です。HOST_NAME
を取得するには、次のコマンドを使用します。kubectl get HTTPRoute HTTPROUTE_NAME -n NAMESPACE
For example:
curl http://34.54.193.72/get \ -H "Host: apigee-apim-operator-test.apigee.net"
レスポンスは次のようになります。
{ "args": {}, "headers": { "Accept": "*/*", "Host": "apigee-apim-operator-test.apigee.net", "User-Agent": "curl/8.7.1", "X-Cloud-Trace-Context": "2bb8a80e29e80662ff9cb89971c447d9/13083106619927322701" }, "origin": "67.164.1.10,34.54.193.72", "url": "http://apigee-apim-operator-test.apigee.net/get" }
- 次のコマンドを使用して、ゲートウェイの詳細を取得します。
次のステップ
APIM Operator をインストールする方法を確認する。