VMware Tanzu e' una piattaforma Kubernetes completa e semplice da utilizzare. VMware Tanzu Community Edition e' la versione Open Source disponibile anche su Mac OSX: questa paginetta cerca di descrivere questa importante e recente tecnologia su MacOS!
La tecnologia dei container consente di eseguire immagini di applicazioni utilizzando un'interfaccia virtuale al sistema operativo chiamata Container. In questo modo l'applicazione pensa di avere un sistema operativo dedicato ma in realta' sfrutta quello della macchina ospite. Rispetto alla virtualizzazione le immagini sono piu' ridotte in dimensioni e richiedono risorse piu' limitate. Vi sono diversi tecnologie che implementano i container e sicuramente la piu' nota e' Docker che ho gia' descritto su Mac in questa paginetta. Un'applicazione complessa puo' richiedere decine di componenti con legami complessi tra loro. Inoltre puo' essere necessario scalare a seconda delle richieste e fornire una soluzione distribuita in alta affidabilita'. Kubernetes entra in gioco quando si vogliono orchestrare ambienti di questo tipo.
VMware Tanzu e' una piattaforma Kubernetes sviluppata da VMware
che oltre ad ospitare cluster K8s su vSphere in modo nativo
consente anche di gestire anche cluster su cloud provider esterni.
VMware Tanzu Community Edition e' la versione Open Source,
completa, basata sugli stessi codice sorgente e completamente gratuita,
che descriveremo in questa paginetta.
L'installazione di Tanzu CE su Mac e' particolarmente semplice utilizzando Homebrew:
$ brew install vmware-tanzu/tanzu/tanzu-community-edition ... ==> Downloading https://github.com/vmware-tanzu/community-edition/releases/download/v0.12.1/tce-darwin-amd64-v0.12.1.tar.gz ==> Installing tanzu-community-edition from vmware-tanzu/tanzu ==> Thanks for installing Tanzu Community Edition! ==> The Tanzu CLI has been installed on your system ==> ==> ****************************************************************************** ==> * To initialize all plugins required by Tanzu Community Edition, an additional ==> * step is required. To complete the installation, please run the following ==> * shell script: ==> * ==> * /usr/local/Cellar/tanzu-community-edition/v0.12.1/libexec/configure-tce.sh ==> * ==> ****************************************************************************** ==> * To cleanup and remove Tanzu Community Edition from your system, run the ==> * following script: ==> /usr/local/Cellar/tanzu-community-edition/v0.12.1/libexec/uninstall.sh ๐บ /usr/local/Cellar/tanzu-community-edition/v0.12.1: 31 files, 1GB, built in 15 seconds ...
Ora basta lanciare lo script indicato...
% /usr/local/Cellar/tanzu-community-edition/v0.12.1/libexec/configure-tce.sh MY_DIR: /usr/local/Cellar/tanzu-community-edition/v0.12.1/libexec /Users/myuser/Library/Application Support Removing old plugin cache from /Users/myuser/.cache/tanzu/catalog.yaml Checking for required plugins... Installing plugin 'apps:v0.6.0' Installing plugin 'builder:v0.11.4' Installing plugin 'cluster:v0.11.4' Installing plugin 'codegen:v0.11.4' Installing plugin 'conformance:v0.12.1' Installing plugin 'diagnostics:v0.12.1' Installing plugin 'kubernetes-release:v0.11.4' Installing plugin 'login:v0.11.4' Installing plugin 'management-cluster:v0.11.4' Installing plugin 'package:v0.11.4' Installing plugin 'pinniped-auth:v0.11.4' Installing plugin 'secret:v0.11.4' Installing plugin 'unmanaged-cluster:v0.12.1' Successfully installed all required plugins โ successfully initialized CLI Making a backup of your Kubernetes config files into /tmp
Gia' fatto!
E' ora possibile utilizzare Tanzu per creare un cluster Kubernetes.
Per utilizzare Tanzu si utilizza una CLI ovvero un'interfaccia da linea di comando:
Nel seguito vedremo le caratteristiche di Tanzu con una serie di esempi di utilizzo.
Come primo esempio iniziamo ad effettuare il deploy di un Unmanaged Clusters. Si tratta del tipo di cluster piu' semplice che utilizza un solo nodo locale ed e' adatto per un ambiente di sviluppo o di test. I suoi requisiti sono minimali ed e' il piu' veloce da installare.
% tanzu unmanaged-cluster create test01 ๐ Created cluster directory ๐งฒ Resolving and checking Tanzu Kubernetes release (TKr) compatibility file projects.registry.vmware.com/tce/compatibility Compatibility file exists at /Users/myuser/.config/tanzu/tkg/unmanaged/compatibility/projects.registry.vmware.com_tce_compatibility_v9 ๐ง Resolving TKr projects.registry.vmware.com/tce/tkr:v1.22.7-2 TKr exists at /Users/myuser/.config/tanzu/tkg/unmanaged/bom/projects.registry.vmware.com_tce_tkr_v1.22.7-2 Rendered Config: /Users/myuser/.config/tanzu/tkg/unmanaged/test01/config.yaml Bootstrap Logs: /Users/myuser/.config/tanzu/tkg/unmanaged/test01/bootstrap.log ๐ง Processing Tanzu Kubernetes Release ๐จ Selected base image projects.registry.vmware.com/tce/kind:v1.22.7 ๐ฆ Selected core package repository projects.registry.vmware.com/tce/repo-12:0.12.0 ๐ฆ Selected additional package repositories projects.registry.vmware.com/tce/main:0.12.0 ๐ฆ Selected kapp-controller image bundle projects.registry.vmware.com/tce/kapp-controller-multi-pkg:v0.30.1 ๐ Creating cluster test01 Cluster creation using kind! โค๏ธ Checkout this awesome project at https://kind.sigs.k8s.io Base image downloaded Cluster created To troubleshoot, use: kubectl ${COMMAND} --kubeconfig /Users/myuser/.config/tanzu/tkg/unmanaged/test01/kube.conf ๐ง Installing kapp-controller kapp-controller status: Running ๐ง Installing package repositories tkg-core-repository package repo status: Reconcile succeeded ๐ Installing CNI calico.community.tanzu.vmware.com:3.22.1 โ Cluster created ๐ฎ kubectl context set to test01 View available packages: tanzu package available list View running pods: kubectl get po -A Delete this cluster: tanzu unmanaged delete test01
Ora che il cluster e' installato e' possibile controllarne i componenti con:
Naturalmente tutto sta girando su Docker:
Innanzi tutto vediamo quali sono i repository disponibili:
Ora otteniamo l'elenco del pacchetti ed il dettagio delle versioni disponibili:
A questo punto possiamo eseguire l'installazione dei package:
Un Managed Clusters e' un modello di deploy che prevede 1 cluster di management ed N workload cluster. Il management cluster fornisce l'interfaccia di Tanzu per la gestione, i workload cluster ospitano le applicazioni e vengono eseguiti sul provider scelto (vSphere, AWS, Azure, Docker).
Per avviare la creazione di un Managed Cluster basta il comando:
tanzu management-cluster create --ui
Sul browser viene presentata la pagina http://127.0.0.1:8080/#/ui che permette la scelta del provider:
Ora la configurazione dipende dal provider scelto che richiede le relative credenziali...
Per il deploy inizialmente viene creato un cluster di boostrap locale Kind/Docker
quindi il cluster di management viene migrato sul provider e
questi si occupa di creare i workload clusters.
Terminata questa fase il cluster di bootstrap locale viene cancellato
e tutta la gestione si esegue sul cluster di management con Tanzu.
Un Managed Cluster e' molto piu' complesso di un Unmanaged Cluster che utilizza
un solo root container. Anziche' su una sola macchina locale
il control plane ed i worker nodes di tutti i cluster possono essere eseguiti
su nodi diversi offrendo scalabilita' ed alta affidabilita'.
La definizione dell'infrastruttura e' dichiarativa e quindi puo' adattarsi
a configurazioni fisiche diverse.
Ad grande potere corrispondono grandi responsabilita'!
Un Managed Cluster ospita tipicamente ambienti di produzione
con specifici requisiti sulla continuta' operativa e l'alta affidabilita'.
La tecnologia dei container consente un'evoluzione piu' rapida delle applicazioni e permette di distribuire il carico sia on-premises che su piattaforme in Cloud. Ma orientarsi tra le soluzioni disponibili non e' facile...
[NdA CNCF Landscape]
Inoltre non e' facile mantenere ambienti in cui sono presenti decine di componenti diversi ciascuno in costante evoluzioni.
VMware Tanzu fornisce un ambiente ideale per chi dispone di un'infrastruttura VMware
e vuole sfruttarla anche per ospitare applicazioni su container.
Con Tanzu e' possibile gestire ambienti ospitati su vSphere ma anche
su AWS ed Azure fornendo per tutti un'interfaccia di gestione comune
basata su standard riconosciuti.
Tanzu Mission Control
La versione Tanzu CE e' adatta ad ambienti di sviluppo o test e consente a chiunque di avvicinarsi al prodotto ma e' comunque una versione completa con tutti i componenti necessari per gestire i cluster K8s.
In questo capitolo esamineremo gli aspetti piu' tecnici ed architetturali
del delployment su MacOS.
Sono tre i componenti da analizzare: Docker, Kubernetes e Tanzu.
Le applicazioni come immagini in un container girano su tutte le piattaforme nello stesso identico modo. Ma Docker ha implementazioni differenti su Linux rispetto a MS-Windows e Mac OSX. Su Mac OSX viene utilizzata una VM su cui a sua volta vengono eseguiti i container.
Kubernetes esegue i workload applicativi allocando i Container nei Pod perche' siano eseguiti sui Nodi. I Nodi possono essere macchine fisiche o virtuali. Ogni nodo e' gestito da un Control Plane che contiene i vari servizi per eseguire i Pod. In un cluster K8s tipicamente sono presenti piu' nodi... ma in questo caso abbiamo un solo nodo che ospita tutto: control plane e workload
Tanzu Community Edition supporta due differenti cluster provider per gli unmanaged clusters: Kind and minikube.
Kind (Kubernetes-in-Docker) e' il provider di default e non richiede nulla se non l'installazione di Docker.
Minikube e' un provider alternativo che pero' va installato a parte.
Tanzu CE fornisce un una serie di packages gia' integrati.
Per un unmanaged cluster questi sono disponibili in automatico
L'elenco aggiornato si trova sulla
documentazione ufficiale.
Per eseguire i cluster viene utilizzata un'immagine di oltre 1GB:
questo richiede un certo tempo per il primo avvio.
Nelle righe successive guarderemo dentro i componenti dell'architettura mentre e' attivo l'Unmanaged Cluster di esempio partendo dal basso, ovvero dai processi di sistema, poi con Docker, quindi con i comandi Kubernetes ed infine con Tanzu.
Dal punto di vista tecnico Docker su MacOS non gira come
su Linux in modo nativo.
E' presente una VM che a sua volta contiene i container,
questa implementazione genera alcune piccole differenze ma
per le immagini ospitate non ci sono problemi.
E' possibile connettersi alla VM con:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty.
In realta' non funziona da un po'...
quindi si usa:
docker run -it --rm --privileged --pid=host justincormack/nsenter1
Se dall'immagine Docker si vuole accedere ad una porta sul Mac si deve utilizzare l'indirizzo host.docker.internal (in realta' vi sono diverse possibilita' di configurazione della rete... ma con l'impostazione a bridge, che e' il default, questo e' il modo piu' facile).
La documentazione ufficiale di VMware Tanzu Community Edition e' molto completa e curata.
Docker e' stato sviluppato da dotCloud ed e' stato pubblicato come open source nel 2013-03.
Dalla versione 0.9 Docker utilizza libcontainer (scritto in Go) al posto di LXC.
L'evoluzione di Docker e' stata notevole e molto veloce,
le attuali versioni sono molto piu' robuste ed efficienti delle prime disponibili.
Kubernetes (K8s) e' un sistema open-source di orchestrazione e gestione di container. Nato come progetto interno in Google, e' mantenuto da Cloud Native Computing Foundation dal 2015. I rilasci di Kubernetes sono frequenti; fino alla versione 1.19 il supporto era N-2, quindi e' stato esteso a 14 mesi. La versione piu' recente e' la 1.24.1 [NdA 2022-05].
Con ESXi 7.0, rilasciata il 2020-04, VMware ha fornito il supporto a Kubernetes con Tanzu permettendo di creare cluster Kubernetes su vSphere. Sono disponibili tre Edition di Tanzu con funzionalita' crescenti: Basic, Standard, Advanced.
VMware Tanzu Community Edition e' la versione completamente Open Source di VMware Tanzu disponibile dal 2021-01.
Si tratta di una versione completa anche se naturalmente a differenza dell'edizione Enterprise
non ha un supporto.
In questa paginetta e' stata utilizzata la versione 0.12.1 rilasciata il 2022-05,
ma quanto descritto vale in generale anche per le altre versioni.
Titolo: Tanzu CE su MAC OS X
Livello: Medio
Data:
1 Aprile 2022
Versione: 1.0.0 - 1 Aprile 2022 ๐ Fools' Day Edition
Autore: mail [AT] meo.bogliolo.name