Skip to main content
Per Implementare l’Auto DevOps sulla GCP sarà necessario creare 1 macchina virtuale nella sezione Compute Engine ed un Cluster nella sezione Kubernetes Engine.

L’istanza creata dovrà avere, minimo, le seguenti caratteristiche:

  • 2 Core
  • 4 GB di RAM
  • 40 GB di Disco Primario (SSD o HDD)
  • S.O. Ubuntu Linux 16.04
  • Abilitare traffico HTTP e HTTPS
  • Indirizzo IP Pubblico Statico

Una volta creata l’istanza basterà premere sul pulsante SSH per accedere alla sua console.

1 –  INSTALLAZIONE DEL SOFTWARE SULL’ISTANZA GITLAB

Una volta aver completato l’accesso tramite SSH all’istanza creata si dovranno eseguire i seguenti comandi:

sudo apt-get update

sudo apt-get upgrade

sudo apt-get dist-upgrade

sudo apt-get autoremove

In ordine tali comandi mostrano l’elenco degli update disponibili, aggiornano i vari pacchetti, aggiornano la distribuzione linux e infine rimuovo i pacchetti ormai obsoleti.

Nel nostro caso usando un progetto Java andremo ad installare anche Maven e la JVM

sudo apt-get install maven

sudo apt-get install openjdk-8-jdk

Iniziamo ora ad installare GitLab. Lanciamo il comando:

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash

Tramite il comando mostrato sopra andremo a caricare ed eseguire i pacchetti di cui necessitiamo per installare GitLab.

Per installare GitLab Enterprise Edition lanciamo il seguente comando:

sudo EXTERNAL_URL=”http://IPesternoDellaMacchina” apt-get install gitlab-ee

EXTERNAL_URL è una variabile che sarà utilizzata durante l’installazione per specificare a GitLab che URL vogliamo usare per accedervi (se utilizziamo un dominio dobbiamo specificare il nome di dominio e non l’indirizzo IP della macchina).

Una volta completata l’installazione potremo comodamente accedere a Gitlab tramite l’url da noi specificato. 

Al primo accesso ci verrà chiesto di inserire una password, tale password verrà utilizzata per l’utente root, ovvero l’utente amministratore con i privilegi più elevati.

2 – CREAZIONE DEL CLUSTER

Eseguiamo l’accesso ora alla GCP da browser e spostiamoci nella sezione Kubernetes Engine -> Cluster qui clicchiamo sul pulsante Crea Cluster.

La configurazione del Cluster sarà la seguente:

  • Formato da 3 Nodi con scalabilità automatica da min 1 nodo a max 3
  • Hanno 1 Core, 1,7 GB di RAM e 50 GB di HDD.
  • Consentito l’accesso a tutte le API Cloud
  • Abilitato il monitoraggio dell’integrità
  • Il cluster sarà pubblico, quindi con indirizzo IP pubblico.
  • Il numero massimo di pod per nodo è fissato a 110.
  • La visibilità tra i Nodi è abilitata
  • Il bilanciamento del Carico HTTP è abilitato.

In questo caso il Cluster creato è stato chiamato git-cluster.

3 – CREAZIONE DEL PROGETTO IN GITLAB

Per creare un progetto in GitLab basta collegarsi alla pagina Web (dove precedentemente avevamo inserito la password per l’utente root) e loggarci.

Una volta loggati basterà andare nella sezione Project cliccare sul pulsante New Project.

Dalla finestra che ci viene presentata sceglieremo (nel nostro caso per un progetto Java) Create From Template -> Spring  e ci ritroveremo nella finestra seguente dove metteremo i dati principali come il nome del progetto, la sua descrizione e se è pubblico, interno o privato. 

Una volta terminata la configurazione basterà premere il bottone Create Project.

4 – COLLEGARE IL CLUSTER

per collegare il Cluster creato tramite Kubernetes basta andare nella home del nostro progetto e premere sul pulsante Add Kubernetes Cluster.

Verremo così portati alla pagina di associazione del Cluster con GitLab.

Qui dovremo compilare i vari campi con le informazione del nostro Cluster prendendole dalla GCP.

5 – INSTALLAZIONE DEL RUNNER E DELLE APPLICAZIONI PER IL CLUSTER

Per far funzionare l’auto DevOps avremo la necessità di installare 3 applicativi sul nostro Cluster. Dalla schermata di configurazione del cluster su GitLab ci spostiamo nella sezione  Applications.

Qui andremo ad installare 3 applicativi.

  • GitLab Runner necessario per poter utilizzare il cluster per eseguire la build, la package ed eseguire i vari test ed eseguire poi il deploy.
  • Ingress necessario per collegarci alla nostra applicazione post deploy. Ingress infatti predispone il cluster ad ospitare il risultato del nostro progetto (WebApp Java) fornendoci sotto Ingress endpoint l’indirizzo dove potremo collegarci alla nostra applicazione. Oltre a ciò Ingress si occupa di bilanciare il carico della nostra applicazione e fornisce un firewall come sicurezza aggiuntiva.
  • Prometheus utile per visualizzare il carico di CPU e GPU del cluster tramite il tab Health.

6 – CREAZIONE DELLA PIPELINE ED ESECUZIONE

Completato l’accoppiamento del cluster con GitLab passiamo alla creazione della pipeline per poter eseguire il Build dell’applicazione, far girare i Test e successivamente eseguire il Deploy.

Per creare la pipeline basta recarsi nella sezione CI/CD -> Pipeline del nostro progetto.

Verrà generata in maniera automatica una pipeline per il nostro progetto che potrà o essere avviata manualmente o che verrà “triggerata” ogni volta che si eseguirà una commit.

Così facendo il check del nostro codice, i test e la compilazione del pacchetto verranno tutti eseguiti in maniera autonoma da GitLab e non servirà un server enorme dato che grazie al nostro cluster si usersanno, solo all’occorenza, delle piccole macchine di supporto.

Restate sintonizzati per altri approfondimenti di Axiante Digital, tramite la nostra sezione Insights oppure sulla nostra pagina Linkedin.