Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

KubeRBS: rollbacks automáticos en Kubernetes para que duermas tranquilo

By Aviv LauferSep 13, 20182 min read

Esta página también está disponible en English, Deutsch, Français, Italiano, 日本語 y Português.

1 6tl05dq4o03gbdcptwwx8q

Con la adopción masiva de Kubernetes y el continuous delivery convertido en práctica estándar, desplegar nuevas versiones está más automatizado que nunca. Pero ¿qué pasa si subes una versión defectuosa? ¿Cuánto tiempo y esfuerzo te va a costar volver a la versión anterior que sí funcionaba?

kuberbs (Kubernetes Rollback System) busca resolver este problema monitoreando tus deployments de Kubernetes: si tu tasa de errores (métricas definidas por ti) supera un umbral, el deployment se revierte automáticamente a la versión anterior.

Por ahora, kuberbs es compatible con métricas de Stackdriver y Datadog como indicador de tasa de errores. También tenemos previsto sumar integraciones con otros sistemas de monitoreo.

kuberbs está escrito en Go y corre como un pod dentro del namespace kube-system de tu cluster de GKE, sin necesidad de modificar el cluster en sí.

kuberbs usa CRD (Custom Resource Definition) y funciona como Operator para gestionar la configuración: qué deployments monitorear, qué métricas usar y cuáles son los umbrales.

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

#Stack driver metric metric

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

threshold

: 1
-

deployment

:

name

: kubernetes-app-2

# DataDog metric 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 configuración se hace con variables de entorno que se exponen en un ConfigMap de 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

Mira a KubeRBS en acción en este breve video:

kuberbs recién está dando sus primeros pasos y tenemos grandes planes por delante. Si te interesa sumarte y aportar, estamos buscando activamente colaboradores que nos ayuden a mejorarlo y a cubrir más casos de uso.

¿Quieres leer más historias? Visita nuestro blog o sigue a Aviv en Twitter.