まーぽんって誰がつけたの?

iOS→Scala→インフラなおじさん技術メモ

Cloud Native Deep DiveでKubernetesについてディスカッションしてきました #deepcn

Cloud Native Deep Dive #1

事前にアンケートを提出してテーブルごとに分けれてグループディスカッションをする形式のmeetupでホワイトボードを使ってわいわい議論した。ツイートがこれしかできなかったw

テーマ1. k8sのマニフェスト管理・デプロイについて

グループでデプロイ方法をまず紹介しあう。内容はこんな感じ

  • helm template + kubectl apply
  • helm
  • go template
  • Spinnaker

個人的な気づきとしては、

  • マニフェストと一口に言っても、Webアプリケーションなどのデプロイに使うServiceやDeploymentオブジェクトのマニフェスト管理と、クラスターの基本機能ともいえるもの(heapsterやdashboard、Ingress Controllerなど)のマニフェスト管理に分かれるよね
  • helmじゃないとダメなところって何んだろうみたいな議論をしているときに、Deploymentに書く環境変数などもtemplatingしたいみたいなことを言ったら、configMapやsecretsを活用すれば、実はhelmなくてもいけたりしないかなという話にもなって確かにそうかもと思った
  • kubernetesに用意されてるオブジェクトを活用すれば、実は普段書き換えるのってimageのtagぐらいじゃない?みたいな。
  • Spinnakerはmanifest意識せずにぽちぽちと設定してもらうだけでできる。開発メンバーにmanifestの書き方を覚えてもらわなきゃ!って思ってたけど、実はそうでなないかも?と気づかせてもらった。
  • Spinnakerはあと意外と対応してないresourceとかあるんだということ。ただ、話してくれたメンバーはかなり前に使っていただけなので今は分からないとおっしゃってた。

テーマ2. マニフェストファイル、誰が書いてる

やはり共通意見として、アプリケーションの開発メンバー俗に言うDev、インフラメンバー的なOpsでどっち側がデプロイするという議論になった。 この日集まってるのはほとんどOps側の人だったので、マニフェストはやっぱりOps側が書いてるけど、Dev側で管理できるようになるのが理想という話。 もちろん、Devの人には開発に集中してもらいたいので最低限のことぐらいでという気持ち。

でも、他のグループの意見とか聞いてて思ったのは、漠然とDev側ができたらいいよなって思ってたけど、

  • 実際はrequestするmemoryとかCPUで好きなように設定させたら困るよなとか
  • networkPolicyとか真面目にやり始めたら、それを覚えてもらうのはさすがに酷だよな

っていうことに気づいてきた。

漠然とやってもらいたいと思ってはいたけど、実はそれはimageの指定とか環境変数の設定ぐらいで、それ以外はOps側で管理したいよなと思った。

ビアバッシュ & フリーディスカッション

ここではIngress Controllerって何を選べばいいんでしょうかね?みたいな話をしたり、NodeのOSは何使ってますかとかそういう話をした。 あと、OpenShiftの話も聞かせてもらったりしてk8sのことぐらいしか知らなかったので、勉強になった。 Ansibleを使い慣れたメンバーからすると、Helmはまた新しい概念ですぐに組織に導入できないので、まずはAnsibleとJinja2でyamlをジェネレートするという話も聞いて、なるほどそういうフェーズもあるのかという気づきもあった。

meetup参加の感想とデプロイまわりまとめ

研修でやるようなグループディスカッションと違って技術的な内容についてやるグループディスカッションは楽しかったw20分×2もあったのに一瞬で終わった気がする。

何か結論が出たという訳じゃないけど、強いて結論付けるとすれば(当たり前だけど)組織構成、メンバーの習熟度などによって最適解は変わってくるよねという感じ。Kubernetseの機能でもまずは十分強いので、sedだけでも十分戦えるし、最初から最強の形にしなくても、必要になったらhelm使ったりみたいに徐々に選択していけばいいのかなと思った。

あと、セッションを聞くだけの形式じゃなくて、こういう形式のmeetupが増えてくればいいなと思った。

提供してくれたゼットラボさんと運営の主催者のみなさん、ありがとうございました。また次回も参加させてもらいたいです!