Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

KubeRBSでKubernetesを自動ロールバック、夜も安心!

By Aviv LauferSep 13, 20182 min read

このページはEnglishDeutschEspañolFrançaisItalianoPortuguêsでもご覧いただけます。

1 6tl05dq4o03gbdcptwwx8q

Kubernetesの普及と継続的デリバリーの定着により、新バージョンのリリースはかつてないほど自動化されています。しかし、不具合のあるバージョンをデプロイしてしまったらどうなるでしょうか? 正常な以前のバージョンへ戻すのに、どれだけの時間と労力がかかるでしょうか?

kuberbs(Kubernetes Rollback System)は、この課題を解決するためのツールです。Kubernetesのデプロイメントを監視し、エラー率(ユーザー定義のメトリクス)がしきい値を超えた場合に、自動で以前のバージョンへロールバックします。

現時点では、エラー率の指標としてStackdriverとDatadogのメトリクスに対応しています。今後は他の監視システムとの連携も順次追加していく予定です。

kuberbsはGoで実装されており、GKEクラスタのkube-system名前空間にPodとして稼働します。クラスタ本体に手を加える必要は一切ありません。

kuberbsCRD(Custom Resource Definition)を利用し、Operatorとして、監視対象のデプロイメント・メトリクス・しきい値といった設定を管理します。

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

設定は、kuberbsのConfigMapで定義された環境変数を通じて行います。

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の動作は、こちらの短い動画でご覧いただけます。

kuberbsはまだ初期段階ですが、大きな構想のもとで開発を進めています。改善やユースケースの拡充に向けて、コントリビューターを積極的に募集しています。ぜひプロジェクトにご参加ください。

他の記事もぜひブログでチェックしてください。AvivのTwitterのフォローもお待ちしています。