(Italiano) Pubblicare il servizio CIE/CNS Apache Docker su Azure Cloud
Qualche giorno fa ho spiegato in dettaglio Cos’è il progetto CIE/CNS Apache Docker, dalla sua nascita a come utilizzarlo. In questo articolo vi mostrerò come pubblicare il servizio CIE/CNS Apache Docker su Microsoft Azure Cloud.
Microsoft Azure Cloud offre diverse soluzioni per mettere in piedi i propri servizi tenendo in conto le proprie necessità. Per la tipologia di questo servizio è possibile sfruttare le due soluzioni a seguire.
- Azure Container: è un'ottima soluzione per qualsiasi scenario e funziona anche in contenitori isolati, inclusi i processi di compilazione, l'automazione di attività e le applicazioni semplici;
- Kubernetes Services: la soluzione ideale per gli scenari in cui si rende necessaria l'orchestrazione completa dei contenitori, quali il rilevamento dei servizi tra più contenitori, la scalabilità automatica e gli aggiornamenti coordinati delle applicazioni. Elimina anche l'impegno delle operazioni in corso e della manutenzione effettuando il provisioning, l'aggiornamento e il ridimensionamento delle risorse su richiesta, senza portare le applicazioni offline.
Visto che il servizio che vogliamo pubblicare non richiede particolari esigenze in termini di performance e scalabilità, potremmo optare di creare il servizio utilizzando Azure Container.
Creazione del servizio CIE/CNS Apache Docker
Prima di procedere con la creazione del servizio sul Cloud di Microsoft, è necessario che disponiate di un account (e sottoscrizione) e accedere successivamente al portale Azure Cloud puntando a https://portal.azure.com.
Nel caso in cui non abbiate un account (e sottoscrizione), è possibile usufruire della prova gratuita dei servizi Azure per un periodo limitato di tempo e budget.
Tutte le operazioni che riguardano creazione e gestione servizi di Azure, possono essere eseguite via GUI (Graphic User Interface), quindi tramite il portale, o via CLI (Command Line Interface) più precisamente Azure Cloud Shell. Nel nostro caso prenderemo la via più veloce, ovvero, quella di utilizzare il portale.
Creeremo il nostro servizio partendo dall'ultima versione dell'immagine Docker italia/cie-cns-apache-docker, questo è il dato essenziale che serve per creare il servizio. Gli step da seguire sono:
- Login sul Portale Azure https://portal.azure.com;
- Dalla barra di ricerca cercare "Container Instances" e cliccare sulla voce corrispondente;
- Dalla Home Page Container Instances cliccare sul pulsante "Create container instances";
- A questo punto occorre inserire una serie d'informazioni che sono raggruppate in:
- Basic
- Subscription: indicazione della sottoscrizione (per esempio: Free Trial);
- Resource Group: creare o selezionare il gruppo contenitore delle risorse necessarie per la creazione del servizio;
- Container Name: nome del container, che in questo caso potrebbe essere: cie-cns-apache-docker;
- Region: selezionare la regione sui cui eseguire il deploy delle risorse o lasciare quella di default;
- Image Type: può essere pubblica o privata. Nel nostro caso la scelta è la prima, visto che l'immagine risiede sul registry Docker Hub, per l'appunto pubblico;
- Image Name: nome dell'immagine, che in questo caso è italia/cie-cns-apache-docker:latest. È possibile specificare anche la versione o tag;
- OS Type: Linux o Windows. Nel nostro caso optiamo per Linux;
- Size: selezionare i requisiti hardware in termini di CPU, GPU e memoria. Per i nostri scopi è più che sufficiente un profilo del tipo: 1 vcpu, 1.5 GiB memory, 0 gpus.
- Networking
- Include Public IP: in questo dobbiamo scegliere d'includere l'indirizzo IP pubblico visto che il servizio deve essere raggiungibile dalla rete internet e poi associare l'indirizzo IP ad un FQDN (Fully Qualified Domain Name) personalizzato (per esempio: cns.dontesta.it);
- Ports: indicare la lista di porte TCP/UDP da pubblicare. In questo caso esiste un'unica porta pubblica, ovvero, la 443 (HTTPS SSL/TLS);
- DNS Label: indicare il nome del servizio che poi andrà a comporre l'FQDN completo per il servizio. In questo caso possiamo inserire il nome cie-cns-auth.
- Advanced
- Restart Policy: selezionare quale policy di restart applicare per il container. Il valore di default On Failure va benissimo per il nostro servizio;
- Environment Variables: indicare la lista di variabili di ambiente che sono utilizzate dall'immagine. In questo caso occorre inserire la variabile APACHE_SSL_PORT (come key) e valore 443. Quest'impostazione fa in modo che il container esponga il servizio web utilizzando il protocollo HTTPS sulla porta standard 443.
- Basic
- Dopo aver completato il wizard di configurazione e completata la validazione dei dati, sarà possibile cliccare sul pulsante Create che scatenerà il processo di creazione del servizio.
Al termine del processo di creazione del servizio cie-cns-apache-docker, questo sarà immediatamente disponibile tramite l'indirizzo IP assegnato o tramite l'FQDN cie-cns-auth.westeurope.azurecontainer.io via HTTPS (vedi figura a seguire).
È possibile registrare un vostro FQDN personalizzato (esempio: cnscie-auth.mydomain.com). Nel mio caso ho la gestione del DNS e della zona .dontesta.it (dominio del mio blog), per cui ho registrato l'FQDN cns.dontesta.it che punta (tramite il record CNAME) al nome assegnato cie-cns-auth.westeurope.azurecontainer.io.
È vivamente sconsigliato creare un record A sul DNS in quanto Azure non garantisce che l'indirizzo IP assegnato sia statico; potrebbe per esempio cambiare al riavvio del container, al contrario, il nome di dominio resterà fisso nel tempo. A seguire l'output del comando dig cns.dontesta.it CNAME
.
La figura a seguire mostra invece l'output del comando dig cns.dontesta.it
dov'è evidente nella risposta il dettaglio del record CNAME.
Le due figure a seguire mostrano il monitoraggio del servizio appena creato e gli eventi sul container.
Le figure a seguire mostrano i vari step di creazione del servizio cie-cns-apache-docker.
Personalizzazione dell'immagine Docker
Ognuno di voi è libero di modificare o specializzare il progetto CIE/CNS Apache Docker sulla base delle proprie esigenze, nonché invitato a collaborare. Per esempio, agendo su delle specifiche environment è possibile personalizzare il certificato SSL.