Operatore APIM: prima di iniziare

Questa pagina si applica ad Apigee, ma non ad Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Questa pagina descrive i passaggi da completare prima di poter installare e configurare l'operatore APIM di Apigee per Kubernetes (anteprima). Per scoprire di più sui vantaggi dell'utilizzo di APIM Operator, consulta la Panoramica di Apigee APIM Operator per Kubernetes.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare le risorse richieste per installare e utilizzare APIM Operator, chiedi all'amministratore di concederti i seguenti ruoli IAM nell'organizzazione:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Attività di configurazione richieste

Prima di installare l'operatore APIM, assicurati di completare le seguenti attività per configurare le risorse di cui hai bisogno per utilizzare la funzionalità:

  1. Esegui il provisioning di un'istanza Apigee utilizzando la versione 1-14-0-apigee-4 o successiva.

    Puoi visualizzare le versioni delle istanze nella pagina Dettagli istanza dell'UI di Apigee nella console Google Cloud.Vai alla pagina Istanze nella console Google Cloud per selezionare un'istanza e visualizzarne i dettagli:

    Vai a Istanze

    Puoi utilizzare Operatore APIM con un'organizzazione Apigee con abbonamento o pagamento a consumo. Per ulteriori dettagli sul provisioning delle istanze Apigee a pagamento, consulta Prima di iniziare.

  2. Installa Google Cloud CLI.

    Dopo aver installato Google Cloud CLI, esegui il comando gcloud components update per ottenere i componenti gcloud più recenti.

  3. Installa e configura lo strumento a riga di comando kubectl.
  4. Installa Helm (versione 3.14.3 o successive).
  5. Crea un cluster GKE con Workload Identity Federation for GKE e GKE Gateway abilitati.

    La federazione delle identità per i carichi di lavoro per GKE è abilitata per impostazione predefinita quando utilizzi la modalità Autopilot per creare e gestire i tuoi cluster. Per ulteriori informazioni, consulta la panoramica di Autopilot.

    Per i passaggi necessari per creare un nuovo cluster con la federazione delle identità per i carichi di lavoro per GKE e GKE Gateway abilitati utilizzando Autopilot, consulta Eseguire il deployment di gateway.

  6. Esegui il deployment di una porta di GKE nel cluster.

    Puoi scegliere di configurare ed eseguire il deployment di un gateway interno o di un gateway esterno da utilizzare con APIM Operator. Se scegli di implementare un gateway interno, sono necessarie una subnet solo proxy e una VPC condivisa. Ai fini di questa guida, ti consigliamo di eseguire il deployment di un gateway esterno. Per ulteriori informazioni, consulta i requisiti del controller GKE Gateway.

    Per eseguire il deployment di GKE Gateway, segui i passaggi descritti in Eseguire il deployment di un gateway esterno. Quando crei il gateway, utilizza la seguente configurazione 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

  7. Esegui il deployment di un'applicazione di backend nel cluster.

    Per eseguire il deployment dell'applicazione di backend esposta dal gateway global-ext-lb1 che hai creato ed eseguito:

    1. Crea un nuovo file denominato target.yaml.
    2. Copia i seguenti contenuti nel nuovo file:
      # 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. Applica la configurazione al cluster:
      kubectl apply -f target.yaml

    Per ulteriori informazioni sul deployment delle applicazioni di backend nei cluster GKE, consulta Eseguire il deployment delle applicazioni di demo.

  8. Esegui il deployment della risorsa HTTPRoute nel cluster per mappare il traffico dal gateway al servizio di backend.

    Per ulteriori informazioni sulla risorsa HTTPRoute, consulta Eseguire il deployment di HTTPRoute (per i gateway interni) o Creare un'HTTPRoute (per i gateway esterni).

    Ai fini di questa guida, ti consigliamo di eseguire il deployment di un gateway e di un percorso HTTP esterni seguendo i passaggi descritti in Creare un percorso HTTP. Quando crei HTTPRoute, utilizza la seguente configurazione 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

  9. Verifica la configurazione di GKE Gateway per verificare che funzioni come previsto:
    1. Recupera i dettagli della porta di accesso utilizzando il seguente comando:
      kubectl get gateway GATEWAY_NAME

      dove GATEWAY_NAME è il nome del gateway GKE che hai creato.

      Ad esempio:

      kubectl get gateway global-ext-lb1

      L'output dovrebbe essere simile al seguente:

      NAME             CLASS                            ADDRESS        PROGRAMMED   AGE
      global-ext-lb1   gke-l7-global-external-managed   34.54.193.72   True         11d
      

      Verifica che al gateway sia stato assegnato un indirizzo IP e che il valore di PROGRAMMED sia True.

    2. Descrivi il gateway per confermare che il percorso è allegato:
      kubectl describe gateway GATEWAY_NAME

      Ad esempio:

      kubectl describe gateway global-ext-lb1

      L'output dovrebbe essere simile al seguente:

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

      Verifica che il valore di Attached Routes sia 1, a indicare che il percorso è collegato.

    3. Invia una richiesta al gateway:
      curl http://GATEWAY_IP_ADDRESS/get -k \
          -H "Host: HOST_NAME"

      Dove:

      • GATEWAY_IP_ADDRESS è l'indirizzo IP del gateway. Puoi recuperare l'indirizzo IP del gateway utilizzando il seguente comando, dove GATEWAY_NAME è il nome del gateway:
        kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
      • HOST_NAME è il nome host definito in HTTPRoute del gateway. Puoi recuperare il HOST_NAME utilizzando il seguente comando:
        kubectl get HTTPRoute HTTPROUTE_NAME -n NAMESPACE

      For example:

      curl http://34.54.193.72/get -k \
      -H "Host: apigee-apim-operator-test.apigee.net"

      La risposta dovrebbe essere simile alla seguente:

        {
          "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"
        }

Passaggi successivi

Scopri come installare l'operatore APIM.