IoGatewayDockerCompose
Premessa: la situazione di IO-SDK
Attualmente IO-SDK usa un launcher scritto in Go per lanciare l’ sdk. Se uno esegue iosdk -v start vede tutti i comandi che lancia.
In particolare fa 3 cose:
- lancia redis
- lancia openwhisk standalone e lo collega a redis
- lancia theia montando un volume
Utilizza inoltre una versione customizzata di openwhisk standalone che include un traefik “dentro”
Questa situazione è ottimizzata per il deployment ma è scomoda per lo sviluppo di io-gateway
Obiettivo: requisiti docker-compose.yml
Per IO-Gateway vorrei un ambiente di sviluppo più facile da modificare usando un docker-compose. E non voglio theia, visto che molti preferiscono un ambiente locale.
Prima di tutto bisogna prendere la directory io-sdk/admin e copiarla nella directory conrrente
In particolare ci vuole un compose che faccia le seguenti cose
- lanci redis (
library/redis:5
) - lanci openwhisk standalone USANDO LA VERSIONE STANDARD (
openwhisk/standalone:nightly
) e gli passi redis come service rintracciabile come “redis” - lanci un traefik esposto in porta 3280 che monti la directory corrente e faccia vedere la directory
admin/web/public
come localhost:/app/ e faccia un proxy che permetta di accedere openwhisk in localhost:3820/api
Compilcazione: openwhisk usa un file runtime.json che mappa le immagin docker da usare per i runtime. IO-SDK usa una immagine non standard per via di redis e ldap. Le immagini sono pagopa/action-python-3.7:<data>
, bisogna far usare a openwhisk questa immagine per file.py, NON l’immagine standard openwhisk/action-python-3.7:nightly
, e questo runtime json va passato via docker-compose. Questa immagine cerca un redis disponibile
Se tutto è a posto, facendo docker-compose up dovrebbe comparire in porta 3280 un traefik che permette di accedere ad openwhisk via /api/v1/* e alla directory locale admin/web/public via porta /app
A questo punto si dovrebbe poter deployare le azioni con cd admin ; make deploy
e mettere in “sviluppo” il frontend con “make devel” accessibile via http://localhost/app/index.html
Notare che queste sono già state fatte nel chart di helm.