APIM オペレーター: 始める前に

このページの内容は Apigee に適用されます。Apigee ハイブリッドには適用されません。

Apigee Edge のドキュメントを表示する。

このページでは、Kubernetes 用 Apigee APIM Operator(プレビュー版)をインストールして構成する前に完了する必要がある手順について説明します。APIM Operator を使用するメリットについては、 Kubernetes 用の Apigee APIM Operator の概要をご覧ください。

必要なロール

APIM Operator のインストールと使用に必要なリソースを設定するために必要な権限を取得するには、組織に対する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

必要な設定タスク

APIM Operator をインストールする前に、次のタスクを完了して、この機能を使用するのに必要なリソースを設定してください。

  1. バージョン 1-14-0-apigee-4 以降を使用して Apigee インスタンスをプロビジョニングします。

    インスタンスのバージョンは、Google Cloud コンソールの Apigee UI の [インスタンスの詳細] ページで確認できます。Google Cloud コンソールの [インスタンス] ページに移動して、インスタンスを選択し、詳細を表示します。

    [インスタンス] に移動

    APIM Operator は、サブスクリプションまたは従量課金制の Apigee 組織で使用できます。有料の Apigee インスタンスのプロビジョニングの詳細については、始める前にをご覧ください。

  2. Google Cloud CLI をインストールします。

    Google Cloud CLI をインストールしたら、gcloud components update コマンドを実行して最新の gcloud コンポーネントを取得します。

  3. kubectl コマンドライン ツールをインストールして構成します。
  4. Helm(バージョン v3.14.3 以降)をインストールします。
  5. Workload Identity Federation for GKEGKE Gateway を有効にして GKE クラスタを作成します。

    Autopilot モードを使用してクラスタを作成および管理する場合、Workload Identity Federation for GKE はデフォルトで有効になります。詳細については、Autopilot の概要をご覧ください。

    Autopilot を使用して Workload Identity Federation for GKE と GKE Gateway を有効にして新しいクラスタを作成する手順については、Gateway のデプロイをご覧ください。

  6. 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

  7. バックエンド アプリケーションをクラスタにデプロイする

    作成してデプロイした global-ext-lb1 Gateway によって公開されるバックエンド アプリケーションをデプロイするには:

    1. target.yaml という名前の新しいファイルを作成します。
    2. 次の内容を新しいファイルにコピーします。
      # 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
    3. 構成をクラスタに適用します。
      kubectl apply -f target.yaml

    バックエンド アプリケーションを GKE クラスタにデプロイする方法については、デモ アプリケーションをデプロイするをご覧ください。

  8. 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

  9. GKE Gateway の設定を確認して、想定どおりに動作していることを確認します。
    1. 次のコマンドを使用して 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 であることを確認します。

    2. Gateway を記述して、ルートが接続されていることを確認します。
      kubectl describe gateway global-ext-lb1

      出力は次のようになります。

      ...
        Listeners:
          Attached Routes:  1
          Conditions:
            Last Transition Time:  2024-10-03T03:10:17Z
      ...

      Attached Routes の値が 1 であることを確認します。これは、ルートが接続されていることを示します。

    3. 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"
        }

次のステップ

APIM オペレーターをインストールする方法を確認する。