Skip to content

Laboratorio en formato Docker Compose, con el que podemos arrancar Kong, Konga, y varios NGINX que simulan Servicios, para trastear y experimentar con Kong API Gateway

Notifications You must be signed in to change notification settings

ElWillieES/kong-docker-lab

Repository files navigation

Kong Docker Lab

Docker  Kong  Postgresql  Nginx  Redis  Prometheus  Grafana  ElasticSearch Kibana

Más ejemplos de Badges en markdown-badges, Badges 4 README.md Profile y Awesome Badges

Introducción

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:

Puedes apoyar mi trabajo siguiéndome, haciendo "☆ Star" en el repo, o nominarme a "GitHub Star". Muchas gracias :-)

GitHub Star

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.

Web

Docker - Ejecución en local con Docker Compose

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

About

Laboratorio en formato Docker Compose, con el que podemos arrancar Kong, Konga, y varios NGINX que simulan Servicios, para trastear y experimentar con Kong API Gateway

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published