Implementa Edge Microgateway como servicio

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

Introducción

En este tema, se explica cómo ejecutar Edge Microgateway en un clúster de Kubernetes como un servicio independiente.

Para obtener más información, consulta Integra Edge Microgateway con la descripción general de Kubernetes.

Antes de comenzar

Completa los pasos que se describen en Requisitos previos.

Configura Edge Microgateway

Con el siguiente comando, se configura Edge Microgateway para la organización de Apigee y se implementa el proxy edgemicro-auth.

  1. Ejecuta el siguiente comando:

    edgemicro configure -o [org] -e [env] -u [username]

    Aquí:

    • org: Es el nombre de tu organización de Edge (debes ser administrador de la organización).

    • env: Es un entorno de tu organización (como prueba o producción).

    • username: Es la dirección de correo electrónico asociada con tu cuenta de Apigee.

    Ejemplo

    edgemicro configure -o docs -e test -u jdoe@example.com

    El resultado (el que se muestra a continuación) se guarda en el archivo:

    $HOME/.edgemicro/org_name-env_name-config.yaml
    .

    current nodejs version is v6.9.1
    current edgemicro version is 2.5.25
    password:
    file doesn't exist, setting up
    Give me a minute or two... this can take a while...
    App edgemicro-auth deployed.
    checking org for existing KVM
    KVM already exists in your org
    configuring host edgemicroservices.apigee.net for region us-west1
    
    saving configuration information to: /Users/jdoe/.edgemicro/myorg-test-config.yaml
    
    vault info:
     -----BEGIN CERTIFICATE-----
    MIICpDCCAYwCCQCV9eBcO9a5WzANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAls
    b2NhbGhvc3QwHhcNMagwODA5MDAzMDEzWhcNMTgwODEwMDAzMDEzWjAUMRIwEAYD
    VQQDDBlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDh
    nAHT7JHX/WvWHRFb8FLm53SPIDld5LyPOUfINdEyhSIEeXoOUKg4EPweJPVSC9Vm
    Hw4ZMtEqWJM/XsQWvLe8ylRJa5wgmzmFCqAsuzs9+rmc9KvJqjpOh2uRTUf7KKfT
    iXL2UEseprcI5g8zNyqKyEf/ecWIwz3AkkPAZebVTsrdDfIDHvkyhhvlAHZAB9kn
    GtqP3N8kOlv4KQto9Gr7GYUGUIDugt7gM1F611+RBS+fYRi32GUAq/UQDkhYL8cp
    oIJiF7UYkk2+9t9CdOCDuIUCvJioHJQd0xvDpkC9f6LvwjwnCwku+4F2Q63+av5I
    mJoZJQPvW5aP53Qkk+kHAgMBAAEwDKYJKoZIhvcNAQELBQADggEBALyUBolXUFN8
    1bf268nR+gS8MOFDTxO1bUz+bKuT/g3K1PuNUJTueT+0L1H2OiZUzazAqwn2sqzN
    lQuvLg6LjxjlNkqTJGiJvGDcYVq45dv7UyxAZxhqxTxhlQ+Yu5R9pbQnzujezHpH
    6gtCoCkSt/QqiJ3YsmsVu5is+HpIJepMt0CyMh5tK9j87hl46QhHklaVfQ3ycMVm
    /wNPR/pjizg1FDUeq4nj/7DBVbMf9net/BDaZLeSW1HJ1vcsCXIcSZfQd4QymGFn
    8ADrND7ydVjwO/s23soPDTy0g4yLIZvky2tpT8d7YahNqSv2n7sXsLxruzcyCoQ4
    w+e3Z3F7IKI=
    -----END CERTIFICATE-----
    
    The following credentials are required to start edge micro
      key: 1a3b2754c7f20614817b86e09895825ecc252d34df6c4be21ae24356f09e6eb4
      secret: 16ad2431de73f07f57a6d44048f08d93b63f783bf1f2ac4221182aa7289c7cef
    
    edgemicro configuration complete!
    

Implementa Edge Microgateway como servicio

  1. Ejecuta el siguiente comando para implementar Edge Microgateway como un servicio en el clúster de Kubernetes:

    kubectl apply -f <(edgemicroctl -org=org -env=env -key=edgemicro-key
    -sec=edgemicro-secret -conf=file path of org-env-config.yaml)

    Donde:

    • org: Es la organización de Apigee que especificaste en el comando edgemicro configure.
    • env: Es el entorno que especificaste en el comando edgemicro configure.
    • edgemicro-key: Es la clave que muestra el comando edgemicro configure.
    • edgemicro-secret: Es el secreto que muestra el comando edgemicro configure.
    • file path of org-env-config.yaml: Es la ruta de acceso al archivo de configuración de Edge Micro que muestra el comando edgemicro configure.

    Por ejemplo:

    kubectl apply -f <(edgemicroctl -org=jdoe -env=test -key=989cce9d41cac94e72626d906562a1d76a19445f8901b3508858bb064988eccb -sec=ec92b793178de7b7e88e346f55a951e3fdae05e700e3ddea7d63977826379784 -conf=/Users/jdoe/.edgemicro/jdoe-test-config.yaml)

    Resultado de ejemplo:

    config/myorg-test-config.yaml)
    service "edge-microgateway" created
    deployment "edge-microgateway" created
    secret "mgwsecret" created
    
  2. Copia y pega el siguiente código en tu terminal. El código configura el controlador Ingress para permitir el acceso externo al servicio edge-microgateway. Es posible que debas presionar Intro después de pegar el comando en la terminal:

    cat <<EOF | kubectl apply -f -
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: edge-microgateway-ingress
      annotations:
        kubernetes.io/ingress.class: "nginx"
    spec:
      rules:
      - http:
          paths:
          - path: /
            backend:
              serviceName: edge-microgateway
              servicePort: 8000
    EOF
    

    Si la operación es exitosa, verás el siguiente resultado:

    ingress "edge-microgateway-ingress" created
    

    El controlador de entrada ahora está configurado para permitir el acceso externo al servicio edge-microgateway.

Implementa un servicio de prueba

Con los siguientes pasos, se implementa un servicio de prueba simple en tu clúster. El controlador Ingress no permite que se llame al servicio desde fuera del clúster. Más adelante, configurarás Edge Microgateway para llamar al servicio como su destino. El controlador Ingress permite el acceso externo al servicio edge-microgateway.

  1. Implementa el servicio helloworld de muestra. Debido a que Ingress no conoce este servicio, no se puede llamar a este desde fuera del clúster.

    kubectl apply -f samples/helloworld/helloworld-service.yaml

    Resultado de ejemplo:

    service "helloworld" created deployment "helloworld" created
    
  2. Verifica que la implementación se haya realizado correctamente. Ten en cuenta que no hay una IP externa para el servicio helloworld. En los siguientes pasos, configurarás Edge Microgateway para acceder a la IP interna del servicio.

    kubectl get services -n default

    Resultado de ejemplo:

    NAME                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    edge-microgateway   NodePort    10.35.247.222   <none>        8000:32000/TCP   12m
    helloworld          NodePort    10.35.245.103   <none>        8081:30294/TCP   47s
    kubernetes          ClusterIP   10.35.240.1     <none>        443/TCP          47m
    

Configura Edge Microgateway como proxy del servicio

Obtén la IP interna del servicio helloworld y agrégala como el destino de un proxy “compatible con micropuerta de enlace”. Crear un proxy “microgateway-aware” es un requisito estándar de Edge Microgateway.

Consulta también Lo que debes saber sobre los proxies compatibles con Microgateway.

Obtén la IP interna del servicio de prueba

  1. Obtén la IP y el puerto internos del clúster para el servicio helloworld:

    kubectl get services helloworld

    Resultado de ejemplo:

    NAME         TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    helloworld   NodePort   10.55.254.255   <none>        8081:30329/TCP   3m
    
  2. Copia los valores de CLUSTER-IP y PORT. Por ejemplo, en el ejemplo anterior, estos valores son 10.55.254.255 y 8081. Los valores para tu sistema serán diferentes.

Crea un proxy compatible con microgateway en Edge

  1. Accede a la IU de Edge.
  2. Selecciona la misma organización que especificaste antes cuando configuraste Edge Microgateway.
  3. Selecciona Develop > API Proxies en el menú de navegación lateral.
  4. Haz clic en + Proxy. Se abrirá el asistente Build a Proxy.
  5. En la primera página del asistente, selecciona Revertir proxy (más común).
  6. Haz clic en Siguiente.
  7. En la página Detalles del asistente, configúralo de la siguiente manera. Asegúrate de completar el asistente exactamente como se muestra. Asegúrate de que el nombre del proxy tenga el prefijo edgemicro_.

    1. Nombre del proxy: edgemicro_hello
    2. Ruta base del proxy: /hello

    3. API existente: http://<cluster_ip>:<port>

      Por ejemplo: http://10.55.254.255:8081

  8. Haz clic en Siguiente.

  9. En la página Seguridad del asistente, selecciona Transferencia (ninguno).

  10. Haz clic en Siguiente.

  11. En la página Virtual Hosts del asistente, acepta los valores predeterminados.

  12. Haz clic en Siguiente.

  13. En la página Build del asistente, revisa la configuración de proxy. Asegúrate de que el entorno test esté seleccionado.

  14. Haz clic en Build and Deploy.

Crear un desarrollador

Puedes usar un desarrollador existente para realizar pruebas o crear uno nuevo de la siguiente manera:

  1. Selecciona Publicar > Desarrolladores en el menú de navegación lateral.
  2. Haz clic en + Desarrollador.
  3. Completa el diálogo para crear un nuevo desarrollador. Puedes usar el correo electrónico o nombre de desarrollador que desees.

Crear un producto de API

Crea un producto de API como se describe a continuación. Agregarás dos proxies al producto: edgemicro-auth y edgemicro_hello.

Puedes leer más sobre las opciones de configuración del producto en Lo que debes saber sobre la configuración del producto de API.

  1. Selecciona Publicar > Productos de API en el menú de navegación lateral.
  2. Haz clic en +API Product. Aparecerá la página Detalles del producto.
  3. Completa la página Detalles del producto de la siguiente manera. No hagas clic en Guardar hasta que se te indique.

    Nombre hello-world-product
    Nombre visible Edge Micro hello product
    Entorno test
    Acceso Public
    Tipo de aprobación de clave Automatic
  4. En la mitad inferior de la página, haz clic en + Recurso personalizado.

  5. Establece el recurso en / (una sola barra).

  6. Vuelve a seleccionar + Recurso personalizado y agrega la ruta de acceso /**.

  7. En la parte inferior de la página, haga clic en + Proxy de API.

  8. Selecciona el proxy llamado edgemicro-auth.

  9. Vuelva a hacer clic en + API Proxy.

  10. Selecciona el proxy compatible con microgateway llamado edgemicro_hello.

  11. Haz clic en Guardar.

Crear una app de desarrollador

  1. Selecciona Publicar > Apps en el menú de navegación lateral.
  2. Haz clic en + App. Se abrirá la página Detalles de la aplicación de desarrollador.
  3. Completa la página de Aplicación para desarrolladores de la siguiente manera. No guardes hasta que se te indique.

    Nombre hello-world-app
    Nombre visible Edge Micro hello app
    Desarrollador Selecciona el desarrollador de prueba que creaste; de lo contrario, cualquier desarrollador estará bien.
  4. En la sección Credentials, haz clic en + Product (+ Producto) y selecciona el producto que creaste: hello-world-product..

  5. Haz clic en Guardar.

  6. Estás de vuelta en la página que muestra todas las apps para desarrolladores.

  7. Selecciona la app que acabas de crear, hello-world-app.

  8. Haz clic en Mostrar junto a Clave de consumidor.

  9. Copia el valor de la clave generada. Este valor es la clave de API que usarás para realizar llamadas seguras a la API a /hello.

  10. Espera unos minutos. Los cambios que realizaste en Apigee Edge tardan unos minutos en sincronizarse con la instancia de Edge Microgateway implementada en el clúster.

Prueba el proxy

Obtén la dirección IP del Ingress

Con la IP externa del Ingress, puedes llamar al servicio de Edge Microgateway desde fuera del clúster.

  1. Obtén la dirección IP externa del controlador Ingress:

    kubectl get ing -o wide

    Resultado de ejemplo:

    NAME                        HOSTS     ADDRESS          PORTS     AGE
    edge-microgateway-ingress   *         35.238.249.62    80        37m
    
  2. Copia el valor ADDRESS del Ingress y expórtalo a una variable. Puedes configurar la variable de forma manual:

    export GATEWAY_IP=external_ip

    Por ejemplo:

    export GATEWAY_IP=35.238.249.62

    También puedes usar este comando para configurarlo:

    export GATEWAY_IP=$(kubectl describe ing edge-microgateway --namespace default | grep "Address" | cut -d ':' -f2 | tr -d "[:space:]")
  3. Verifica que se haya exportado la variable. Por ejemplo:

    echo $GATEWAY_IP

    Resultado de ejemplo:

    35.238.249.62
    

Llama a la API

Después de que los cambios de configuración se extraen a la micropuerta de enlace, puedes intentar llamar a la API. Usa la IP del controlador de Ingress (que guardaste en la variable GATEWAY_IP para llamar a la API, ya que esta IP te permite llamar al proxy desde fuera del clúster de Kubernetes). La asignación de Ingress a Edge Microgateway se creó cuando implementaste Edge Microgateway en el clúster.

  1. Llama a la API sin una clave de API. Verás un mensaje de error, como se muestra a continuación:

    curl $GATEWAY_IP:80/hello/

    Resultado esperado:

    {"error":"missing_authorization","error_description":"Missing Authorization
    header"}
    

    Si ves este mensaje, es posible que debas esperar un poco más hasta que se complete la sincronización:

    {"message":"no match found for /hello/","status":404}
    

    Para realizar llamadas a la API de forma correcta, necesitas la clave de API.

  2. Obtén la clave de consumidor de la app de desarrollador que creaste. Este valor es la clave de API que necesitas para llamar al proxy de prueba:

    curl -H 'x-api-key:your-edge-api-key' $GATEWAY_IP:80/hello/

    Por ejemplo:

    curl -H "x-api-key:DeX2eEesYAdRJ5Gdbo77nT9uUfJZql19" $GATEWAY_IP:80/hello/

    Resultado:

    Hello world
    

    Si ves la respuesta “Hello World”, significa que configuraste con éxito Edge Microgateway para llamar al servicio helloworld dentro del clúster de Kubernetes.

¿Qué sigue?

Consulta la sección Tareas para obtener información sobre cómo agregar complementos personalizados, escalar la implementación, realizar cambios en la configuración y otras tareas que tal vez quieras realizar.