Estás viendo la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Introducción
En este tema, se explica cómo ejecutar Edge Microgateway en un clúster de Kubenetes como un proxy de sidecar. Tienes dos opciones para la implementación del archivo adicional: la inyección manual y automática. En este tema, se describen ambas opciones.
Para obtener más información, consulta Introducción a Edge Microgateway en Kubernetes.
Antes de comenzar
Completa los pasos que se describen en Requisitos previos.
Implementa un servicio de prueba
Implemente un servicio simple de “hello” y verifique la implementación:
Implemente la muestra
kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
Verifica que el servicio se esté ejecutando. Es posible que debas esperar unos minutos hasta que el Pod inicie el estado “Running”:
kubectl get pods --namespace=default
Resultado de ejemplo:
NAME READY STATUS RESTARTS AGE helloworld-569d6565f9-lwrrv 1/1 Running 0 17m
Borra la implementación del servicio de prueba. La reinstalarás después de habilitar la inserción de sidecar:
kubectl delete -f samples/helloworld/helloworld.yaml --namespace=default
Usa la inserción manual de sidecar
De las dos opciones de inserción de sidecar, la inserción manual de sidecar es el enfoque más simple y directo, y se puede realizar con un solo comando kubectl
.
Configura Edge Microgateway
El siguiente comando configura Edge Microgateway para la organización de Apigee y, luego, implementa el proxy edgemicro-auth
.
Ejecuta el siguiente comando:
edgemicro configure -o [org] -e [env] -u [username]
Aquí:
org
: El nombre de tu organización de Edge (debes ser un administrador de la organización)env
: 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 myorg -e test -u jdoe@example.com
El resultado (ejemplo 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!
Incorpora Edge Microgateway como archivo adicional
Para insertar manualmente Edge Microgateway en un Pod de servicio como un proxy de sidecar, ejecuta el siguiente comando:
kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -svc=service_deployment_file)
Donde:
your_org
: La organización de Apigee que especificaste en el comandoedgemicro configure
.your_env
: Es el entorno que especificaste en el comandoedgemicro configure
.your_key
: Es la clave que muestra el comandoedgemicro configure
.your_secret
: El secreto que muestra el comandoedgemicro configure
.config_file_path
: La ruta de acceso al archivo de configuración de Edge Micro que muestra el comandoedgemicro configure
.service_deployment_file
: Es la ruta de acceso al archivo de implementación del servicio cuyo Pod obtendrá el servicio de sidecar complementario. Por ejemplo:samples/helloworld/helloworld.yaml
.
Por ejemplo:
kubectl apply -f <(edgemicroctl -org=myorg -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/jdoe/.edgemicro/myorg-test-config.yaml -svc=samples/helloworld/helloworld.yaml)
Prueba la configuración
Verifica las implementaciones del servicio:
kubectl get services -n default
Resultado de ejemplo:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE helloworld NodePort 10.15.254.163 <none> 8081:32401/TCP 56s kubernetes ClusterIP 10.15.240.1 <none> 443/TCP 41m
Ahora, está listo para probar la implementación de sidecar de Edge Microgateway. Ve a Prueba el proxy para ver los pasos detallados.
Usa la inserción automática de sidecar
En los siguientes pasos, configurarás la inserción automática de sidecar para tu clúster de Kubernetes. Esta configuración permite insertar Edge Microgateway como un proxy de sidecar en Kubernetes.
Instala el inyector de sidecar
Instala el ConfigMap que permite la inserción de sidecar de Edge Microgateway:
kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
Ejecuta la siguiente secuencia de comandos para instalar el servicio de webhook. El servicio de webhook es necesario para la inserción automática de sidecar:
./install/kubernetes/webhook-create-signed-cert.sh \ --service edgemicro-sidecar-injector \ --namespace edgemicro-system \ --secret sidecar-injector-certs
Agrega el paquete de CA al archivo de instalación de webhook. El servidor de la API de Kubernetes usa este archivo para invocar el webhook:
cat install/kubernetes/edgemicro-sidecar-injector.yaml | \ ./install/kubernetes/webhook-patch-ca-bundle.sh > \ install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
Instala el webhook de inyector de sidecar de Edge Microgateway:
kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
Resultado de ejemplo:
service "edgemicro-sidecar-injector" created serviceaccount "edgemicro-sidecar-injector-service-account" created deployment "edgemicro-sidecar-injector" created mutatingwebhookconfiguration "edgemicro-sidecar-injector" created
Verifica que se esté ejecutando el webhook de inyector de sidecar de Edge Microgateway:
kubectl -n edgemicro-system get deployment -ledgemicro=sidecar-injector
Resultado de ejemplo:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edgemicro-sidecar-injector 1 1 1 1 12m
Verifica que el Pod de inserción de sidecar esté en ejecución en el clúster. El espacio de nombres
edgemicro-system
es donde se instalan los servicios del sistema, incluidos el controlador Ingress, el backend HTTP predeterminado y el inyector de sidecar:kubectl get pods -n edgemicro-system
Resultado de ejemplo:
NAME READY STATUS RESTARTS AGE default-http-backend-55c6c69b88-gfnfd 1/1 Running 0 1h edgemicro-ingress-controller-64444469bf-jhn8b 1/1 Running 3 1h edgemicro-sidecar-injector-7d95698fbf-cq84q 1/1 Running 0 3m
Configurar e insertar Edge Microgateway
En el siguiente paso, ejecutarás una secuencia de comandos interactiva para crear una configuración de Edge Microgateway asociada con un espacio de nombres de Kubernetes. Luego, insertarás la configuración en tu clúster de Kubernetes.
Ejecuta la siguiente secuencia de comandos interactiva y proporciona los parámetros solicitados. El comando genera un perfil de configuración que utilizarás en el siguiente paso.
./install/kubernetes/webhook-edgemicro-patch.sh
Para obtener información sobre los parámetros de entrada, consulta Referencia.
Entradas de muestra:
Namespace to deploy application [default]:
Presione Intro.
Authenticate with OAuth Token ("n","Y") [N/y]
Ingresa n.
Apigee username [required]:
Ingresa tu nombre de usuario de Apigee (dirección de correo electrónico). Por ejemplo:
jdoe@google.com
.Apigee password [required]:
Ingresa tu contraseña de Apigee.
Apigee organization [required]:
Ingresa el nombre de tu organización de Apigee.
Apigee environment [required]:
Ingresa un nombre de entorno para la organización. Por ejemplo, “prueba”.
Virtual Host [default]:
Presione Intro.
Is this Private Cloud ("n","y") [N/y]:
Ingresa a n si estás en la nube pública.
Edgemicro Key. Press Enter to generate:
Presione Intro.
Edgemicro Secret. Press Enter to generate:
Presione Intro.
Edgemicro org-env-config.yaml. Press Enter to generate:
Presione Intro.
Resultado de ejemplo:
current nodejs version is v6.9.1 current edgemicro version is 2.5.25 config initialized to /Users/jdoe/.edgemicro/default.yaml Configure for Cloud ****************************************************************************************** Config file is Generated in /Users/jdoe/Work/GITHUB/microgateway_2.5.25_Darwin_x86_64/config directory. Please make changes as desired. *****************************************************************************************
Do you agree to proceed("n","y") [N/y]:
Ingresa y.
Resultado de ejemplo:
Configuring Microgateway with key:daacf75dd660d160b801c9117fb1ec0935896615479e39dbbae88be81a2d84 secret:a60fd57c1db9f3a06648173fb541cb9c59188d3b6037a76f490ebf7a6584b0 config:~/.edgemicro/jdoe-test-config.yaml ******************************************************************************************************** kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml ********************************************************************************************************
Ejecute el comando proporcionado en la última línea del resultado. Este comando
kubectl
incorpora el perfil de configuración de Edge Microgateway generado en Kubernetes:kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
Visualiza el estado de la inyección de webhook. Ten en cuenta que, por el momento, no está habilitado:
kubectl get namespace -L edgemicro-injection
Resultado de ejemplo:
NAME STATUS AGE EDGEMICRO-INJECTION default Active 1d edgemicro-system Active 1d kube-public Active 1d kube-system Active 1d
Ejecute este comando para habilitar la inserción de webhook:
kubectl label namespace default edgemicro-injection=enabled
Vuelve a ver el estado de la inyección de webhook. Ten en cuenta que ahora está habilitada:
kubectl get namespace -L edgemicro-injection
Resultado de ejemplo:
NAME STATUS AGE EDGEMICRO-INJECTION default Active 1d enabled edgemicro-system Active 1d kube-public Active 1d kube-system Active 1d
Implementa el servicio de prueba
Ahora, vuelve a implementar el servicio de prueba. Edge Microgateway se insertará automáticamente en el Pod del servicio.
kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
Confirme que Edge Microgateway se inserte en el Pod junto con el servicio de prueba:
kubectl get pods --namespace=default --watch
Resultado de ejemplo:
NAME READY STATUS RESTARTS AGE
helloworld-6987878fc4-pkw8h 0/2 PodInitializing 0 12s
helloworld-6987878fc4-pkw8h 2/2 Running 0 26s
Cuando el estado cambie a Running
, presiona ctrl-c
para salir del comando.
Ahora, está listo para probar la implementación automática del archivo adicional de Edge Microgateway. Consulta Prueba el proxy para conocer los pasos detallados.
Prueba el proxy
Con la implementación de sidecar, se crea automáticamente un proxy de API para su servicio. No es necesario crear un proxy "Edge Micro-aware-aware".
Obtén la dirección IP de Ingress
Con la IP externa del Ingress, puedes llamar al servicio desde el exterior del clúster.
Obtén la dirección IP externa del controlador de Ingress:
kubectl get ing -o wide
Resultado de ejemplo:
NAME HOSTS ADDRESS PORTS AGE gateway * 35.238.13.54 80 1m
Copia el valor de
EXTERNAL-IP
para el 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 puede usar este comando para configurarlo:
export GATEWAY_IP=$(kubectl describe ing gateway --namespace default | grep "Address" | cut -d ':' -f2 | tr -d "[:space:]")
Verifica que la variable se haya exportado. Por ejemplo:
echo $GATEWAY_IP
Resultado de ejemplo:
35.238.249.62
Llama al servicio:
curl $GATEWAY_IP
Resultado:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
A continuación, solucionarás el error de autorización faltante configurando un producto de API y una app de desarrollador en Edge para que puedas obtener una clave de API válida. Cuando agregues la clave a un encabezado de autorización para la llamada a la API, la llamada se realizará correctamente y no verás este error.
Crear componentes en Apigee Edge
A continuación, cree un producto de API y una aplicación de desarrollador en Apigee Edge.
Crear un producto de API
- Acceda a Apigee Edge.
- Selecciona Publicar > Productos de API en el menú de navegación lateral.
- Haz clic en +API Product. Aparecerá la página del producto.
Completa la página del producto como se indica a continuación. Para los campos que no se mencionan a continuación, puedes usar los valores predeterminados. No guardes hasta que se te indique.
Nombre hello-world-product
Nombre visible Edge Micro hello product
Entorno test
En la sección Ruta de acceso, haga clic en + Recurso personalizado.
Agrega la ruta de acceso
/
.Vuelva a hacer clic en + Recurso personalizado y agregue la ruta
/**
En la sección API Proxies, haz clic en + API Proxyy agrega edgemicro-auth.
Guarda el producto de la API.
Crear una app de desarrollador
- Selecciona Apps en el menú de navegación lateral.
- Haz clic en + App. Aparecerá la página Detalles de la app de desarrollador.
Completa la página de Aplicación para desarrolladores de la siguiente manera. No guardes los cambios hasta que se te indique hacerlo.
Nombre hello-world-app
Nombre visible Edge Micro hello app
Desarrollador Selecciona un desarrollador del menú desplegable. En la sección Credenciales, haz clic en + Producto y selecciona el
hello-world-product
que acabas de crear.Haz clic en Guardar.
Estás nuevamente en la página que muestra todas las apps para desarrolladores.
Selecciona la app que acabas de crear:
hello-world-app
.Haz clic en Mostrar junto a Clave del consumidor.
Copia el valor de la clave de consumidor. Este valor es la clave de API que usarás para realizar llamadas seguras a la API al servicio
helloworld
.Espera unos minutos. Los cambios que hiciste en Apigee Edge tardan en minutos a sincronizarse con la instancia de Edge Microgateway implementada en el clúster.
Llamar a la API
Después de extraer los cambios de configuración en la micropuerta de enlace, puedes realizar las siguientes pruebas.
Llama a la API sin una clave de API. Recibirás un mensaje de error, como se muestra a continuación:
curl $GATEWAY_IP
Resultado esperado:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
Para realizar llamadas a la API de forma correcta, necesitas la clave de API.
Obtén la clave de consumidor de la app del 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
Por ejemplo:
curl -H "x-api-key:DeX2eEesYAdRJ5Gdbo77nT9uUfJZql19" $GATEWAY_IP
Resultado:
Hello world
El servicio helloworld implementado en el Pod muestra la respuesta “Hello World”. La llamada a ese servicio pasó primero por Edge Microgateway, en el que se realizó la autenticación. Si ves la respuesta “Hello World”, significa que configuraste con éxito Edge Microgateway para que funcione como un proxy de sidecar en el Pod de servicio de helloworld.
¿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 realizar otras tareas que desees realizar.