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 Apigee APIM per Kubernetes. Per saperne di più sui vantaggi dell'utilizzo dell'operatore APIM, consulta Panoramica dell'operatore APIM Apigee per Kubernetes.

Ruoli obbligatori

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

Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestisci 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 necessarie per utilizzare la funzionalità:

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

    Puoi visualizzare le versioni delle istanze nella pagina Dettagli istanza dell'interfaccia utente 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 APIM Operator con un'organizzazione Apigee Subscription o Pay-as-you-go. Per maggiori 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 v3.14.3 o successive).
  5. Crea un cluster GKE utilizzando GKE versione 1.27 o successive con Workload Identity Federation for GKE e GKE Gateway abilitati.

    Se hai un cluster esistente che soddisfa questi requisiti, puoi saltare questo passaggio.

    Workload Identity Federation for GKE è abilitato per impostazione predefinita quando utilizzi la modalità Autopilot per creare e gestire i tuoi cluster. Per saperne di più, 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 Deployment dei gateway.

  6. Esegui il deployment di un gateway GKE nel tuo 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 eseguire il deployment di un gateway interno, sono necessari una subnet solo proxy e un VPC condiviso. Per testare i passaggi descritti in questa guida, ti consigliamo di eseguire il deployment di un gateway esterno. Per maggiori informazioni, consulta 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

    Applica il file al cluster:

    kubectl apply -f gateway.yaml

  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 e di cui hai eseguito il deployment:

    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 saperne di più sul deployment delle applicazioni di backend nei cluster GKE, consulta Eseguire il deployment delle applicazioni 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 Deploy the HTTPRoute (per i gateway interni) o Create an HTTPRoute (per i gateway esterni).

    Ai fini di questa guida, ti consigliamo di eseguire il deployment di un gateway e di un HTTPRoute esterni seguendo i passaggi descritti in Creare un HTTPRoute. Quando crei HTTPRoute, utilizza la seguente configurazione yaml, sostituendo HOST_NAME con il nome host che vuoi utilizzare:

    # 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

    Applica il file al cluster:

    kubectl apply -f httproute.yaml

  9. Verifica la configurazione di GKE Gateway per confermare che funzioni come previsto.
    1. Recupera i dettagli del gateway utilizzando il seguente comando:
      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 assegnato un indirizzo IP e che il valore di PROGRAMMED sia True.

    2. Descrivi il gateway per confermare che l'itinerario sia allegato:
      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 la route è allegata.

    3. Invia una richiesta al gateway:
      curl http://GATEWAY_IP_ADDRESS/get \
          -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 HOST_NAME utilizzando il seguente comando:
        kubectl get HTTPRoute HTTPROUTE_NAME -n NAMESPACE

      For example:

      curl http://34.54.193.72/get \
      -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.