Más ejemplos de Badges en markdown-badges, Badges 4 README.md Profile y Awesome Badges
Este repo se ha creado para complementar los Posts sobre Kong del Blog El Willie - The Geeks invaders, y comparte un pequeño laboratorio en formato de Docker Compose, con el que podemos arrancar los siguientes componentes::
- Kong Gateway como servidor API Manager (la versión Community). Se incluyen dos instancias, la segunda (kong2) para pruebas de alta disponibilidad (clustering).
- Konga como Dashboard y herramienta gráfica de administración.
- PostgreSQL como base de datos para Kong y Konga, utilizando un volumen Docker.
- Varios contendores NGINX para simular servicios que deseamos exponer al exterior a través de Kong, apoyándose en el uso de variables de NGINX para ayudar a depurar en las pruebas. El fichero de configuración de los NGINX se presenta como un volumen, y queda versionado en git.
- Redis que podemos utilizarlo para pruebas con el Plugin de Rate Limiting, por ejemplo.
- Prometheus, Prometheus Node Exporter, y Grafana para pruebas de monitorización, ambos utilizando volúmenes Docker. El fichero de configuración de Prometheus se presenta como un volumen, y queda versionado en git.
- Elasticsearch, Logstach, y Kibana para pruebas de envío de Logs de Kong a Elastic con el fin de mejorar la monitorización, utilizando volúmenes Docker. De este modo podemos tener un Stack ELK, o bien, ELG aprovechando Grafana. El fichero de configuración de Logstach (es decir, la pipeline) se presenta como un volumen, y queda versionado en git. Hay dos costenedores de Logstash, uno para el envío de Logs de Kong por UDP y el otro por TCP.
- ElasticHQ como herramienta para la administración de Elasticsearch.
Algunos contenedores tienen IP fija (dentro de la red Docker), de tal modo que podamos hacer pruebas de filtrado de IP.
De esta forma, podemos arrancar este laboratorio y trastear, probar a publicar servicios (Services + Routes), balanceo (Upstreams), plugins de autenticación (ej: API Key), etc, de forma rápida y sencilla, en tu portátil (necesario Docker y Docker Compose, claro).
Aunque este Docker Compose arranca varios NGINX que podemos utilizar para simular micro-servicios en nuestras pruebas, si lo deseamos también podemos utilizar Mockbin, un servicio gratuito que permite mockear endpoints HTTP, que también nos puede resultar de utilidad para hacer nuestras pruebas de laboratorio, y publicar a través de Kong lo servicios fake de Mockbin a modo de laboratorio.
Algunos de los Posts de Kong en los que se basa este Docker Compose son:
- Introducción a Kong Gateway y Konga Dashboard
- Consumidores, Autenticación, y Autorización de APIs en Kong – I
- Consumidores, Autenticación, y Autorización de APIs en Kong – II: Autenticación HMAC
- Consumidores, Autenticación, y Autorización de APIs en Kong – III: Autenticación JWT
- Consumidores, Autenticación, y Autorización de APIs en Kong – IV: OAuth2
- Kong Plugins: Seguridad y Control de Tráfico
- Transformaciones de Peticiones y Respuestas HTTP con Kong
- Monitorización de Kong con Prometheus, Elasticsearch y Grafana
- Protegiendo la API Admin de Kong con API Key y ACLs
Puedes apoyar mi trabajo siguiéndome, haciendo "☆ Star" en el repo, o nominarme a "GitHub Star". Muchas gracias :-)
En mi Blog personal (El Willie - The Geeks invaders) y en mi perfil de GitHub, encontrarás más información sobre mi, y sobre los contenidos de tecnología que comparto con la comunidad.
Lo primero, en la raíz del repo, debemos editar el fichero .env donde se establecen variables que podemos utilizar en los contenedores definidos en el Docker Compose, como sería la Zona Horaria.
Por ejemplo, para usar Madrid deberíamos dejar así la variable TZ en el ficher .env
TZ=Europe/Madrid
Los siguientes comandos ejecutados en la raíz del Proyecto, muestra cómo arrancar todos los contenedores con Docker Compose, como comprobar su estado, así como la forma de poder comprobar los logs de su ejecución.
docker-compose up -d
docker-compose ps
docker-compose logs
Podemos abrir una sesión bash en cualquiera de los contenedores ejecutando con comando como el siguiente:
docker exec -it kong-docker-lab-service_a-1 bash
En caso necesario, podemos parar (sin eliminar) y volver a arrancar todos los contenedores Docker con los siguientes comandos:
docker-compose stop
docker-compose start
Si deseamos parar y/o arrancar un único contenedor (ej: service_a), podemos utilizar comandos como los siguientes:
docker-compose stop service_a
docker-compose start service_a
Podemos parar y eliminar todos los contenedores con el siguiente comando:
docker-compose down