Operador de APIM: Antes de comenzar

Esta página se aplica a Apigee, pero no a Apigee Hybrid.

Consulta la documentación de Apigee Edge.

En esta página, se describen los pasos que debes completar antes de instalar y configurar el operador de APIM de Apigee para Kubernetes. Para obtener más información sobre los beneficios de usar el operador de APIM, consulta Descripción general del operador de APIM de Apigee para Kubernetes.

Roles requeridos

Para obtener los permisos que necesitas para configurar los recursos requeridos para instalar y usar el operador de APIM, pídele a tu administrador que te otorgue los siguientes roles de IAM en la organización:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Tareas de configuración obligatorias

Antes de instalar el operador de APIM, asegúrate de completar las siguientes tareas para configurar los recursos que necesitas para usar la función:

  1. Aprovisiona una instancia de Apigee con la versión 1-15-0-apigee-4 o una posterior.

    Puedes ver las versiones de la instancia en la página Detalles de la instancia de la IU de Apigee en la consola de Google Cloud .Ve a la página Instancias en la consola de Google Cloud para seleccionar una instancia y ver sus detalles:

    Ir a Instancias

    Puedes usar el operador de APIM con una organización de Apigee de suscripción o de Pay-as-you-go. Para obtener más detalles sobre el aprovisionamiento de instancias pagadas de Apigee, consulta Antes de comenzar.

  2. Instala la Google Cloud CLI.

    Después de instalar Google Cloud CLI, ejecuta el comando gcloud components update para obtener los componentes de gcloud más recientes.

  3. Instala y configura la herramienta de línea de comandos de kubectl.
  4. Instala Helm (versión v3.14.3 o posterior).
  5. Crea un clúster de GKE con la versión 1.27 o posterior de GKE con la federación de identidades para cargas de trabajo en GKE y GKE Gateway habilitados.

    Si tienes un clúster existente que cumple con estos requisitos, puedes omitir este paso.

    La federación de identidades para cargas de trabajo para GKE está habilitada de forma predeterminada cuando usas el modo Autopilot para crear y administrar tus clústeres. Para obtener más información, consulta Descripción general de Autopilot.

    Para conocer los pasos necesarios para crear un clúster nuevo con Workload Identity Federation for GKE y GKE Gateway habilitados con Autopilot, consulta Implementa Gateways.

  6. Implementa una puerta de enlace de GKE en tu clúster.

    Puedes configurar e implementar una puerta de enlace interna o una puerta de enlace externa para usar con APIM Operator. Si eliges implementar una puerta de enlace interna, se requieren una subred de solo proxy y una VPC compartida. Para probar los pasos de esta guía, te recomendamos que implementes una puerta de enlace externa. Para obtener más información, consulta Requisitos del controlador de GKE Gateway.

    En las configuraciones de ejemplo de esta guía, se usa una puerta de enlace externa.

    Para implementar la puerta de enlace de GKE, sigue los pasos que se describen en Implementa una puerta de enlace externa. Cuando crees la puerta de enlace, usa la siguiente configuración de 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

    Aplica el archivo a tu clúster:

    kubectl apply -f gateway.yaml

  7. Implementa una aplicación de backend en tu clúster.

    Para implementar la aplicación de backend expuesta por la puerta de enlace global-ext-lb1 que creaste y que implementaste, haz lo siguiente:

    1. Crea un archivo nuevo llamado target.yaml.
    2. Copia el siguiente contenido en el archivo nuevo:
      # 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. Aplica la configuración a tu clúster:
      kubectl apply -f target.yaml

    Para obtener más información sobre cómo implementar aplicaciones de backend en clústeres de GKE, consulta Implementa las aplicaciones de demostración.

  8. Implementa el recurso HTTPRoute en tu clúster para asignar el tráfico de la puerta de enlace a tu servicio de backend.

    Para obtener más información sobre el recurso HTTPRoute, consulta Implementa el recurso HTTPRoute (para las Gateways internas) o Crea un recurso HTTPRoute (para las Gateways externas).

    Para los fines de esta guía, te recomendamos que implementes una puerta de enlace y una HTTPRoute externas siguiendo los pasos que se indican en Crea una HTTPRoute. Cuando crees la HTTPRoute, usa la siguiente configuración de yaml y reemplaza HOST_NAME por el nombre de host que deseas usar:

    # 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

    Aplica el archivo a tu clúster:

    kubectl apply -f httproute.yaml

  9. Verifica la configuración de GKE Gateway para confirmar que funciona según lo esperado.
    1. Obtén los detalles de la puerta de enlace con el siguiente comando:
      kubectl get gateway global-ext-lb1

      El resultado debería ser similar al ejemplo siguiente:

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

      Confirma que se haya asignado una dirección IP a la puerta de enlace y que el valor de PROGRAMMED sea True.

    2. Describe la puerta de enlace para confirmar que la ruta esté adjunta:
      kubectl describe gateway global-ext-lb1

      El resultado debería ser similar al siguiente:

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

      Confirma que el valor de Attached Routes sea 1, lo que indica que la ruta está adjunta.

    3. Envía una solicitud a la puerta de enlace:
      curl http://GATEWAY_IP_ADDRESS/get \
          -H "Host: HOST_NAME"

      Aquí:

      • GATEWAY_IP_ADDRESS es la dirección IP de la puerta de enlace. Puedes recuperar la dirección IP de la puerta de enlace con el siguiente comando, en el que GATEWAY_NAME es el nombre de la puerta de enlace:
        kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
      • HOST_NAME es el nombre de host definido en el HTTPRoute de la puerta de enlace. Puedes recuperar HOST_NAME con el siguiente 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 respuesta debería ser similar a la siguiente:

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

¿Qué sigue?

Obtén más información para instalar el operador de APIM.