Requisiti per il docker-compose per l' IO-Gateaway

Ciao a tutti, mi ero preso io il compito di fare il docker-compose ma visto che ci sono volontari io sono piu’ che felice di delegare e usare il mio tempo per spiegare invece che a farle io le cose.

Quindi ecco a voi i requisiti per chi si vuole cimentare.

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

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.

Per chiarimenti basta chiedere.

PS non è facile, non tanto perchè in se sia complesso ma per i dettagli di openwhisk…

Aggiungo che ho scritto cosa voglio alla fine ma forse si può fare a passi incrementali: un primo step può essere semplicemente quello di fare un iosdk start -v e osservando gli output ricostruire un docker-compose paro paro, per poi migliorarlo step by step

1 Mi Piace

Specifica aggiunta al wiki

Ciao Michele,
da quello che vedo nel repository GITHUB, qui:


ci sono tutti gli script in GO per lo start dei vari docker, corretto?
Quindi per iniziare, basta cercare le stringhe con “docker” dentro, creare un docker-compose con queste e poi da li (una volta che funziona) iniziamo le modifiche…

Corretto?

si e facendo iosdk -v vedi incomandi, ma cinsta lavorando anche @pfinocchiaro quindi evitate sovrapposizioni - ci sta sempre modo di unire le forze e la collaborazione è lo spirito dell’open source

Se serve sono qui…

Ma non lo vedo un task così complesso o critico da aver bisogno di due persone…

No ma ci sta un altro task aperto che e’ l’integrazione dello scheduler che e’ qui https://github.com/noiopen/io-sdk.

La prima cosa da fare sarebbe una Pull Request per IO-Gateway che comprende lo scheduler e un docker-compose per farlo buildare le immagini e farlo partire. E lo puoi fare in maniera indipendente dal resto (per ora e’ indipendente)

Ciao Leonardo, in effetti il task è di difficoltà limitata, personalmente ne stavo approfittando anche per prendere confidenza con il progetto: poi magari io “vado lungo”, ma personalmente non ho problemi se qualcuno comincia a proporre una versione iniziale che funziona.

Quello che ho testato finora si trova qui


Con una descrizione breve nel file associato Devel.md.

Riesco a collegarmi con il browser a localhost:3280, importare ed inviare il messaggio di prova.

@msciab come procediamo? Ci sono delle cose da sistemare: provo una PR e iniziamo una discussione lì?

Sempre PR vanno fatte :smiley: La tua inagura IO-Gateway , le altre sono ad IO-SDK per ora.

Infatti… Faccio il suggeritore nella buca allora… :slight_smile:

Ciao Pasquale,
Direi bene!

Il mio cent:
aggiungerei
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
nei volume di entrambi i docker

e un
depends_on:
- redis
su openwhisk, se vuoi che openwisk parta dopo di REDIS

1 Mi Piace