Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

KubeRBS: rollback automatici su Kubernetes per dormire sonni tranquilli

By Aviv LauferSep 13, 20182 min read

Questa pagina è disponibile anche in English, Deutsch, Español, Français, 日本語 e Português.

1 6tl05dq4o03gbdcptwwx8q

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

: Rbs

metadata

:

name

: my-rbs-example

spec

:

watchperiod

: 5

metricssource

: stackdriver

namespaces

:
-

name

: default

deployments

:
-

deployment

:

name

: hello-kubernetes-app

#Metrica Stackdriver metric

: logging.googleapis.com/user/hello-kubernetes-app-errors

threshold

: 1
-

deployment

:

name

: kubernetes-app-2

# Metrica DataDog metric

: gcp.container.cpu.usage_time{*}

threshold

: 85
-

name

: kube-system

deployments

:
-

deployment

:

name

: kube-dns

metric

: logging.googleapis.com/user/dig

threshold

: 30

La configurazione avviene tramite variabili d'ambiente esposte in una ConfigMap di kuberbs.

apiVersion

: v1

data

:

KUBERBS_CHECKMETRICSINTERVAL

:

"10" KUBERBS_APIKEY

:

"" KUBERBS_APPKEY

:

"" KUBERBS_DEBUG

:

"false" kind

: ConfigMap

metadata

:

labels

:

app

: kuberbs

name

: kuberbs-config

namespace

: kube-system

KubeRBS 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.