Member-only story
Go? Bash!shell-operatorの紹介(後半)
本記事では、Kubernetes operatorsを作るプロセスをシンプルにするためのアプローチを紹介し、shell-operatorを使って簡単に独自のoperatorを実装する方法を紹介します。この文章は、先日開催された KubeCon Europe 2020 での発表を元にしています。今回は長いので前半と後半の2つに分けて投稿いたします。今回は後半です。
シンプルなKubernetesコントローラは、35行のYAMLと同量のBashで作られています! そして、それらをすべて一緒にバインドするのがshell-operatorの役割です。
shell-operatorでできることSecretsをコピーするだけではありません。あなたのルーチンでどれだけ役に立つか、いくつかの例を紹介します。
Example 1: Updating ConfigMap
3つのポッドを使ったデプロイメントを考えてみましょう。これらのポッドは ConfigMap を使用してコンフィギュレーションを保存しています。これらのポッドが起動したとき、ConfigMap はある状態になっていました(これをバージョン 1、v.1 と呼ぶことにします)。したがって、すべてのポッドは同じバージョンの ConfigMap を持っています。
ここで、ConfigMap が別のバージョン(v.2)に変更されたとします。この場合、私たちのポッドは以前のバージョン(v.1)の ConfigMap を使用したままになります。
このような場合、通常はどうすればいいのでしょうか?そうです。みなさんお察しの通り、ポッドのテンプレートに何かを追加します。そこで、Deployment定義のテンプレートセクションにチェックサムアノテーションを追加してみましょう。
これで、すべてのポッドがチェックサムを持っているので、Deploymentのチェックサムと同じになりました。次に、ConfigMapの変更に応じてアノテーションを更新する必要があります。こういう場合、shell-operatoが大活躍します。必要なのは、ConfigMapをサブスクライブしてチェックサムを更新するフックをプログラムすることだけです。
ユーザーがConfigMapを変更すると、shell-operatorが変更に気づき、チェックサムを更新します。そして、Kubernetesのオートマジックが起こります。Kubernetesはポッドをキルし、新…