
Con la diffusione di Kubernetes e il continuous delivery ormai prassi standard, il rilascio di nuove versioni è più automatizzato che mai. Ma cosa succede quando si manda in produzione una versione difettosa? Quanto tempo e quale sforzo servono per tornare alla versione precedente, quella funzionante?
kuberbs (Kubernetes Rollback System) prova a risolvere proprio questo problema: monitora i deployment Kubernetes e, se il tasso di errore (basato su metriche definite dall'utente) supera una soglia, riporta automaticamente il deployment alla versione precedente.
Al momento kuberbs usa le metriche di Stackdriver e Datadog come indicatore del tasso di errore. In programma ci sono anche integrazioni con altri sistemi di monitoraggio.
kuberbs è scritto in Go e gira come pod nel namespace kube-system del cluster GKE, senza richiedere alcuna modifica al cluster stesso.
kuberbs sfrutta le CRD (Custom Resource Definition) e si comporta come un Operator per gestire la configurazione: quali deployment monitorare, quali metriche osservare e quali soglie applicare.
apiVersion
:"doit.com/v1" kind
: Rbsmetadata
:name
: my-rbs-examplespec
:watchperiod
: 5metricssource
: stackdrivernamespaces
: -name
: defaultdeployments
: -deployment
:name
: hello-kubernetes-app#Metrica Stackdriver metric
: logging.googleapis.com/user/hello-kubernetes-app-errorsthreshold
: 1 -deployment
:name
: kubernetes-app-2# Metrica DataDog metric
: gcp.container.cpu.usage_time{*}threshold
: 85 -name
: kube-systemdeployments
: -deployment
:name
: kube-dnsmetric
: logging.googleapis.com/user/digthreshold
: 30La configurazione avviene tramite variabili d'ambiente esposte in una ConfigMap di kuberbs.
apiVersion
: v1data
:KUBERBS_CHECKMETRICSINTERVAL
:"10" KUBERBS_APIKEY
:"" KUBERBS_APPKEY
:"" KUBERBS_DEBUG
:"false" kind
: ConfigMapmetadata
:labels
:app
: kuberbsname
: kuberbs-confignamespace
: kube-systemKubeRBS in azione lo trova in questo breve video:
Per kuberbs siamo ancora ai primi passi, ma i progetti per il futuro sono ambiziosi. Se vuole dare una mano, siamo sempre alla ricerca di contributor per migliorarlo e coprire nuovi casi d'uso.
Vuole altri contenuti come questo? Dia un'occhiata al nostro blog oppure segua Aviv su Twitter.