はじめてのKubernetes Operator 「i」を作ってみた

はじめてOperatorに触れた感想を書いています。

November 11, 2019
kuberenetes operator

i

Kubernetes Operatorであるiを作成しました。
Production用途ではなく、KuberenetesのOperatorを作る練習です。
もっといい実装などあれば教えてください。喜びます。

開発時間はkubebuilderとProduction用途ではないおかげで4時間くらいです。
README.mdとこのブログを書くのに追加で1時間ぐらい要しました。

Kuberenetesのロゴを目にいれるため、くり抜いたり、塗りつぶしたり、Macの写真プレビューではできなかったのでPhotoshopを使いました。

作ったもの

簡単なアプリケーションです。  

kind: EyeのCustom Resource(以下: CR)でPolicyを定義して、Lifetimeの長いPodをdeleteしてSlackへ通知してくれるというものです。

apiVersion: icontroller.i.keisukeyamashita.com/v1alpha1
kind: Eye
metadata:
  name: eye-sample
spec:
  lifetime: "1m"
  secretRef:
    name: slack-url

以下のGithubリポジトリで公開しています。

はじめてOperatorを作って、探り探り、かつ、Production用途ではないので整理もしていないですが「こんなものなんだ」と眺めるにはちょうどいいと思います。

以下のようにSlackへ古いPodが削除されたことを通知します。

i

これはKuberenetesのAuto healingを正しく使えていればPodの削除は問題ではありません。

動機

Custom Resource Definition(以下: CRD)など使っていたが、どのように作成できるかなどあまり興味を持てず、界隈が盛り上がっているのをただ眺めていました。

一回くらいやっておかないとなという気持ちで何もしないまま半年くらいたったのですが、たまたま早起きした(=昨日早く寝すぎた)ため以下の文献を片手に作りました。

Kubebuilderでやろうと思ってたので1冊目の文献がメインでしたが、体系的な知識は2冊目が良かったです。
3冊目は途中までしか読んでないです。

感想

マーカーなど、普段使わないようなものを覚えないといけない上、KuberenetesのRBACも知っておかないといけないので取っ掛かりにくかったが、アプリケーションの部分は非常に簡単でした。

Kubebuilderが主流らしいが、Kubernetes Wayをやってみたり、Operator SDKを使ってみて、そこらへんの知識も得たいと思いました。

まとめ

Operatorを作ってみて、こんなに簡単にできるんだなと思いkubebuilderに関心をしました。    またKuberenetesのプラットフォームとしての恩恵を改めて感じました。

これで何か必要になったときのSolutionとしてのお道具がまた一つ増えました。  

読んでいただき、ありがとうございます。
今週も仕事、がんばります。