APIM Operator: 始める前に

このページの内容は Apigee を対象としています。Apigee ハイブリッドは対象としていません。

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

このページでは、Apigee APIM Operator for Kubernetes をインストールして構成する前に完了する必要がある手順について説明します。APIM Operator を使用する利点については、Apigee APIM Operator for Kubernetes の概要をご覧ください。

必要なロール

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

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

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

必要な設定タスク

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

  1. バージョン 1-15-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. GKE バージョン 1.27 以降を使用して GKE クラスタを作成し、Workload Identity Federation for GKEGKE Gateway を有効にします。

    これらの要件を満たす既存のクラスタがある場合は、この手順をスキップできます。

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

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

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

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

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

    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 リソースをクラスタにデプロイして、ゲートウェイからバックエンド サービスへのトラフィックをマッピングします。

    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

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

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

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

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

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

    3. ゲートウェイにリクエストを送信します。
      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 をインストールする方法を確認する。