Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

KubeRBS: rollback automático no Kubernetes para você dormir em paz!

By Aviv LauferSep 13, 20182 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

1 6tl05dq4o03gbdcptwwx8q

Com a adoção em massa do Kubernetes e o continuous delivery como prática padrão, lançar novas versões nunca foi tão automatizado. Mas o que acontece se você subir uma versão com bug? Quanto tempo e esforço vão custar para voltar à versão anterior que funcionava?

O kuberbs (Kubernetes Rollback System) é uma tentativa de resolver esse problema monitorando seus deployments no Kubernetes: se a taxa de erros (em métricas definidas por você) ultrapassar um limite, o deployment volta automaticamente para a versão anterior.

Hoje, o kuberbs aceita métricas do Stackdriver e do Datadog como indicadores de taxa de erro. Também pretendemos adicionar integrações com outros sistemas de monitoramento.

O kuberbs é escrito em Go e roda como um pod dentro do namespace kube-system do seu cluster GKE, sem precisar alterar nada no cluster em si.

O kuberbs usa CRD (Custom Resource Definition) e funciona como Operator para gerenciar a configuração: quais deployments monitorar, quais métricas observar e quais limites aplicar.

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

A configuração é feita por variáveis de ambiente expostas em um ConfigMap do 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

Veja o KubeRBS em ação neste vídeo rápido:

O kuberbs ainda está dando os primeiros passos e temos grandes planos para ele. Se você quiser participar e contribuir, estamos em busca de colaboradores para nos ajudar a evoluir o projeto e cobrir mais cenários de uso.

Quer mais conteúdo? Confira nosso blog ou siga o Aviv no Twitter.