先日、社内で開催しました Kubernetes の勉強会の様子をご報告します。

Goodpatch では、いくつかのプロダクトで Kubernetes の採用が決まっています。
ただ、まだ触ったことがあるメンバーも少なく理解度もバラバラとなっており、DevOps の観点から良い状態ではないと思い、Kubernetes の理解を深める勉強会を開きました。
参加メンバーの職種はバラバラで、バックエンドエンジニアだけではなく、フロントエンドエンジニア、iOSエンジニアなど自主的に参加したメンバーで行いました。

その前に Kubernetes とは?

Kubernetes – Production-Grade Container Orchestration

Docker というソフトウェアについては、みなさん耳にされることが多いと思いますが、この Docker が普及するにつれてプロダクション環境でうまく運用する仕組みが必要だと言われていて、それに対する解決手段の1つとして、 Kubernetes があります。
この Kubernetes は、15年に及ぶ Google のシステムを支えてきたコンテナ運用の経験などを元にして作られたオープンソフトウェアです。
Kubernetes の公式ドキュメントのサブタイトルには、Automated container deployment, scaling, and management とあります。直訳すると、自動化されたコンテナ配置、スケーリング、管理 となり、なんとなく Kubernetes の守備範囲が分かってくるかと思います。

すでに実績も豊富です。リンク先で各サービスのユースケースを確認することができます。

Case Studies – Kubernetes

Kubernetes を触る前に

いくつかの職種や若い新卒のメンバーも参加してくれていたので、まず Docker や Kubernetes の歴史や簡単な技術的な話をプレゼン形式で説明しました。
ここで、Kubernetes の用語の整理などを行い各自が理解しやすい土台を作っていきました。

ハンズオンの様子

複数人で開発を行っていると、どうしてもDocker と Kubernetes の層を触るメンバーと全く触らずアプリケーションだけの開発に集中するメンバーに分かれがちです。また比較的新しい技術でもあり、特に Kubernetes に関しては用語も独特で、理解の妨げになりとっかかりづらいという問題があり、最初の入り口をブーストにしてもらえればと思いました。

今回は、Kubebot というアプリを利用させてもらいました。

https://hub.docker.com/r/harbur/kubebot/

Cluster 作成から Deployment の作成を各自ハンズオン形式で実施しました。そしていつものWebアプリではなく、上記の Bot をDeployしてもらうことによって、異なる角度から Kubernetes を感じてもらうことでより理解を深めてもらうことを狙いました。

手順に関しては、社内のドキュメント共有ツールに下記のようにドキュメントを事前に用意して、各自に進めてもらいました。

コンテンツ詳細

  1. Slack bot 作成、Token 発行
  2. GCP Project を変更
  3. Cluster の作成、認証
  4. Dashboard にアクセス
  5. Namespace の作成
  6. Secret の設定
  7. Deployment 作成
  8. Bot の動作確認

うまく Deploy まで出来ると、下記のキャプチャの様に Bot が実行したコマンド実施と結果を Slack 上で確認しながらやり取りすることができます。

参加者の声

フロントエンドエンジニアの声1

なんとなく Kubernetes の概要がわかり、kubectl コマンドの使い方が分かりました。
あと、今回 Slackbot経由で各コマンドを実行させることができ、運用面で色々と活用することができそうで、素敵だと思いました。

フロントエンドエンジニアの声2

Kubernetes は怖くないんだって気持ちになりました。

iOS エンジニアの声

いままでなんとなくしかわかっていなかったDockerとの用途の違い、Kubernetes用語についても説明してもらったので理解が進みました。
例に従ってkubectlコマンドを実行しただけだと何が起きてるかわからない箇所について質問すると、何が起きてるか説明してもらえたので理解できました。

新卒バックエンドエンジニアの声

Kubernetesのチュートリアルをしても Pods がいまいち理解できていなかったが、今回の勉強会で少しイメージがわきました。
AWSがCloud Native Computing Foundationに参加っていうのはリアルタイムな動きでしたね。

何かしら各エンジニアの理解の助けになったようで、良かったです。

最後に

実際に開催したところ、いくつか確認不足のトラブルが発生しましたが、無事各エンジニアの理解を深めることができたかと思います。
まだまだ開催した私自身理解が曖昧な部分がありましたが、勉強会を開くにあたって独自で調べたりまとめたりすることでより理解することができました。またメンバーからも「PodsとServiceの違いがいまいちわからない」などの質問をもらい、答えることよってお互いの理解を深めることができました。
今後も定期的に、Kubernetes の勉強会を開催して各エンジニアの理解を深めていきたいと考えています。


弊社では、Go言語や GCP、Docker、Kubernetesなどの技術を使ってユーザーに品質の高いサービスを提供していきたいと考えています。
興味のある方は、ぜひ一度弊社に遊びにきてください!