このページの内容は Apigee に適用されます。Apigee ハイブリッドには適用されません。
Apigee Edge のドキュメントを表示する。
このページでは、Kubernetes 用 Apigee APIM Operator(プレビュー版)をインストールして構成する前に完了する必要がある手順について説明します。APIM Operator を使用するメリットについては、 Kubernetes 用の Apigee APIM Operator の概要をご覧ください。
必要なロール
APIM Operator のインストールと使用に必要なリソースを設定するために必要な権限を取得するには、組織に対する次の IAM ロールを付与するよう管理者に依頼してください。
-
Google Kubernetes Engine(GKE)クラスタを作成して管理する: コンテナ管理者 (
roles/container.admin
) -
サービス アカウントを作成、管理する: サービス アカウント管理者 (
roles/iam.serviceAccountAdmin
) -
Service Extensions の作成と管理: Service Extensions 管理者 (
roles/networkservices.serviceExtensionsAdmin
) -
ネットワーク エンドポイント グループ(NEG)を作成、管理する: Compute インスタンス管理者 (
roles/compute.instanceAdmin
) -
バックエンド サービスを作成して管理する: Compute ロードバランサ管理者 (
roles/compute.loadBalancerAdmin
) -
Apigee リソースを作成、管理する: Apigee 管理者 (
roles/apigee.admin
)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
必要な設定タスク
APIM Operator をインストールする前に、次のタスクを完了して、この機能を使用するのに必要なリソースを設定してください。
バージョン
1-14-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 以降)をインストールします。
Workload Identity Federation for GKE と GKE Gateway を有効にして GKE クラスタを作成します。
Autopilot モードを使用してクラスタを作成および管理する場合、Workload Identity Federation for GKE はデフォルトで有効になります。詳細については、Autopilot の概要をご覧ください。
Autopilot を使用して Workload Identity Federation for GKE と GKE Gateway を有効にして新しいクラスタを作成する手順については、Gateway のデプロイをご覧ください。
- GKE Gateway をクラスタにデプロイします。
APIM Operator で使用する 内部 Gateway または外部 Gateway を構成してデプロイできます。内部 Gateway をデプロイする場合は、プロキシ専用サブネットと共有 VPC が必要です。このガイドでは、外部 Gateway をデプロイすることをおすすめします。詳細については、GKE Gateway コントローラの要件をご覧ください。
GKE Gateway をデプロイするには、外部 Gateway をデプロイするの手順を使用します。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
Gateway によって公開されるバックエンド アプリケーションをデプロイするには: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 リソースをクラスタにデプロイして、Gateway からバックエンド サービスにトラフィックをマッピングします。
HTTPRoute リソースの詳細については、HTTPRoute をデプロイする(内部 Gateway の場合)またはHTTPRoute を作成する(外部 Gateway の場合)をご覧ください。
このガイドでは、HTTPRoute を作成するの手順に沿って、外部 Gateway と HTTPRoute をデプロイすることをおすすめします。HTTPRoute を作成するときは、次の
yaml
構成を使用します。# 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: - apigee-apim-operator-test.apigee.net rules: - matches: - path: value: / backendRefs: - name: httpbin kind: Service port: 80 namespace: http
ファイルをクラスタに適用します。
kubectl apply -f httproute.yaml
- GKE Gateway の設定を確認して、想定どおりに動作していることを確認します。
- 次のコマンドを使用して 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 アドレスが Gateway に割り当てられ、
PROGRAMMED
の値がTrue
であることを確認します。 - Gateway を記述して、ルートが接続されていることを確認します。
kubectl describe gateway global-ext-lb1
出力は次のようになります。
... Listeners: Attached Routes: 1 Conditions: Last Transition Time: 2024-10-03T03:10:17Z ...
Attached Routes
の値が1
であることを確認します。これは、ルートが接続されていることを示します。 - Gateway にリクエストを送信します。
curl http://GATEWAY_IP_ADDRESS/get \ -H "Host: HOST_NAME"
ここで
GATEWAY_IP_ADDRESS
は Gateway の IP アドレスです。Gateway の IP アドレスは、次のコマンドを使用して取得できます。ここで、GATEWAY_NAME
は Gateway の名前です。kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
は、Gateway の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" }
- 次のコマンドを使用して Gateway の詳細を取得します。
次のステップ
APIM オペレーターをインストールする方法を確認する。