El sistema está pensado para correr bajo entornos *nix, en particular Ubuntu 16.04.
Este proyecto require python 3.6. Python 3 puede ser instalado con pyenv.
pyenv install --list
pyenv install 3.6.6
(3.6.6 o mayor)Tambien nodejs es necesario para usar eslint
y jscpd
.
nodejs
, esto se puede llevar a cabo mediante nvm.7
de nodejs
npm
para instalar las dependencias: npm install
Las dependencias de la aplicación (Elasticsearch, Postgres, Redis, Kong) se manejan a través de Docker y docker-compose.
Este proyecto adopta The 12 factor methodology. Esto significa que todas las configuraciones deberian hacerse por variables de entorno. (Factor III).
Decidir un puerto bajo el cual correr la aplicación Django. Tanto Django como Kong usan como default el puerto 8000, por lo tanto Django debe correr bajo otro puerto arbitrario.
La aplicación debe correr bajo la red interna obligatoriamente, para que el contenedor de Kong pueda llegar a la aplicación Django local. Por ejemplo, se puede correr Django como./manage.py runserver 192.168.1.181 7999
.
Para correr los próximos pasos, setear una variable DJANGO_URL
con la URL (con schema) bajo la cual correrá la aplicación Django. Por ejemplo:
DJANGO_URL=http://192.168.1.181:7999/
La IP de la red interna se puede obtener a través de utilidades del sistema como ip
o ifconfig
, suele ser 192.168.*.*
.
docker-compose build
docker-compose up -d
docker-compose run --rm kong kong migrations up
docker-compose restart kong
curl -X POST localhost:8001/apis -d name=management -d upstream_url=$DJANGO_URL -d uris=/management -d strip_uri=false
pyenv virtualenv 3.6.6 my_virtualenv
.python-version
: echo "my_virtualenv" > .python-version
pip install -r requirements/local.txt
conf/settings/.env.local
a conf/settings/.env
(y reemplazar las variables de ser necesario)./manage.py migrate
./manage.py createsuperuser
Para mapear plugins a una serie se puede hacer desde la configuracion de la misma desde el Admin. En ella se encuentra la configuracion para cada plugin disponible, por ejemplo para activar Analytics a una serie se hace activando “Kong Api plugin http log” agregandole, en el campo “Api Key”, el Token de acceso.
Finalmente, se puede correr la aplicación con ./manage.py runserver <IP RED INTERNA> <PUERTO>
, y acceder a través de kong en http://localhost:8000/management/ingresar
.
Por defecto la configuración local no utiliza workers asincrónicos, pero pueden ser activados seteando queue['ASYNC'] = True
en el ciclo for
dentro de conf/settings/local.py
.
Casi todos los modelos de la aplicación api_registry
requieren hacer una migración de las APIs de Kong (con actualizar una API es suficiente). A continuación se listan los encontrados hasta la fecha:
KongObject
, KongApi
, KongApiPlugin
, KongPlugin
, KongConsumerManager
, KongConsumer
, JwtCredentialManager
, JwtCredential
, TokenRequest
, KongPluginRateLimiting
, KongApiPluginRateLimiting
, KongApiPluginHttpLog
, KongApiPluginJwt
, KongApiPluginAcl
, AclGroup
, KongConsumerPlugin
, KongConsumerPluginRateLimiting
, KongApiPluginCors
, RootKongApi
,
git hooks install
./manage.py runserver
./manage.py shell
Con Docker: docker-compose run django python3 manage.py migrate
python manage.py test