In questi giorni il team di Google ha rilasciato la sua nuova soluzione di application delivery chiamata Application Manager. Si tratta sostanzialmente di un addon per GKE (Google Kubernetes Engine) che consente di semplificare la gestione delle applicazioni Kubernetes.
Application Manager permette di distribuire il proprio applicativo containerizzato sfruttando le pratiche di managing release configuration suggerite dagli ingegneri software di Big G. A presentare il nuovo tool sono stati il Product Manager, Palak Bhatia, e il Software Engineer Janet Kuo tramite un articolo pubblicato sul blog dell'azienda:
Kubernetes è lo standard de facto per la gestione di applicazioni containerizzate. Tuttavia non è raro che gli sviluppatori abbiano delle difficoltà nel districarsi con il Kubernetes lifecycle management. Per semplificare tali processi abbiamo deciso di sviluppare Application Manager, la nostra nuova estensione per GKE che da oggi è disponibile in forma di beta release.
Sostanzialmente Application Manager viene eseguito all'interno del cluster GKE come un semplice addon ed esegue i seguenti task:
- estrae i Kubernetes manifest dal repository Git e distribuisce tali manifest come se fossero dell'App all'interno del cluster stesso;
- segnala i metadata relativi alle deployed application e si occupa di farle visualizzare all'interno della Google Cloud Console.
Il Kubernetes application lifecycle
Il ciclo di vita dell'applicazione Kubernetes si suddivide in tre fasi:
- authoring: la scrittura del codice e la configurazione per Kubernetes;
- releasing: la distribuzione nei vari release environment;
- managing: la fase di gestione che comprende l'operatività delle applicazioni su larga scala e negli ambienti di produzione.
Attualmente non esistono standard comuni per tali fasi e non è raro che agli sviluppatori abbiano delle perplessità quando si apprestano a realizzare un applicativo Kubernetes per la prima volta. Google ha dunque realizzato delle linee guida per aiutare i developer in queste fasi e le ha integrate all'interno di Application Manager.
Application Manager adotta i principi GitOps
I processi di configurazione delle applicazioni Kubernetes possono essere lunghi e complessi, soprattutto se si tratta di gestire dei software distribuiti su larga scala e sui diversi ambienti (testing, staging e produzione). Non è raro che in tali contesti un'applicazione possa avere delle configurazioni duplicate e archiviate in più repository Git.
In questi casi ogni modifica deve essere replicata in ogni repository e non è escluso che possano insorgere degli errori inattesi durante il merge del nuovo codice. Per evitare tali situazioni Application Manager adotta i principi del GitOps, una nota metodologia di declarative configuration management.
Con GitOps è possibile controllare e rivedere rapidamente le modifiche prima che vengano distribuite nei vari ambienti. GitOps permette inoltre di strutturare i repository Git in modo tale che si possano gestire agilmente con Kustomize, un configuration management tool di Kubernetes.