Wantedlyインフラチームの @koudaiii です。
6月に Docker を Production で使い続ける理由 を書きました。
たくさんの方からコメントを頂きました。ありがとうございました。どんどんコミュニティなどで意見交換させて頂ければと思います :D
さて、 今回は Docker を使っていく中でよく耳にする Kubernetes について、
Wantedly の Production 環境で Kubernetes を動かす上で調べた情報源をまとめました。
はじめに
まず、最初に確認するのが、 Kubernetes の公式ドキュメントかと思います。
公式ドキュメントでは、 とくに実際の機能ごとに詳細な記述があります。目的の機能が明確にわかっている場合、公式ドキュメントを調べるだけで完結することが多いです。
しかし、文量が多いため使いたいユースケースからそれに必要な機能を探しだすのが大変で、実際に Kubernetes を導入する際にどこを読めばいいかわからないことが多いです。
(例えば、ReplicationController と ReplicaSet を見た時、何が違うのかすごく戸惑いました。それ以外に、 label ってどうすればいいのか?やモニタリングはどうすればいいのか?等)
私の場合は、実際に Kubernetes を導入する上で、公式ドキュメント以外の情報を手当たり次第に探し、一つ一つ試していかざるを行けない状況でした。具体的には検証環境でトライアンドエラーを繰り返し、 GitHub 上にある source を呼んだり、海外のデモ動画を確認する作業をひたすら繰り返しました。
その過程で調べた結果を元に、現在でも引き続きチェックしているもの、有益だった情報をまとめました。
今回載せた情報以外にこういう方がいるぞー!!やこのサイト and 書籍が良いぞ!ってご存じの方は、是非ともはてブなどのコメントで頂ければ幸いです ;)
各利用したサービスごとに情報の更新頻度と初心者オススメ度を付けております。以下情報の更新頻度が高いものを中心に並べました。
GitHub
・初心者オススメ度★
・情報の更新頻度★★★
このリポジトリにある各ディレクトリを確認するとシェルスクリプトやドキュメントがまとめられています。このドキュメントには公式ドキュメントに書かれていないオプションがまとめられています。
examples ディレクトリには、 NewRelic 等の Monitoring tool や Ghost を使ったアプリケーション等の例が数多く内包しています。
また Kubernetes でこういったことが出来ないか?などは Issue 等を検索すると既に議論されていることが多いためチェックしています。
issue だけのリポジトリです。大きな機能単位で issue が書かれており、チェックボックスで進捗管理を行われていて、今どの辺りを取り組んでいるのか可視化されています。
例えば、 ScheduledJobs というタイトルの issue があります。これは所謂 cron みたいな指定した日付で実行するようなものを定義する機能です。このような大きな features はこのリポジトリに書かれています。
また、 kubernetes/kubernetes 上にある issue に対して付けられているラベリングのルールが README で書かれており、気になった issue の status の見方を確認できます。
Slack
・初心者オススメ度★
・情報の更新頻度★★★
本家の Slack コミュニティです。
こちらから参加することが出来ます。現在 5875人が参加しているようです。
このコミュニティは海外だけでなく、 #jp-events と #jp-users といった日本人が多く参加する CHANNEL もあります。
常にウォッチするというよりは、
Kubernetes を利用しているユーザーが集まる #kubernetes-users を読みつつ、新しい情報が入ってないか、また海外の相談している流れを観て、こうやってみんなやってるんだなと把握するのに利用しています。
slack 上でアカウント名を検索すると誰がどこで発言しているのかが、よくわかるのでたくさんあるCHANNELに対して、活気がありそうなものを探すのに有効です。
・初心者オススメ度★★
・情報の更新頻度★★
日本にも kubernetes の知見を持っている方が大勢いますが、今回は海外のアカウントと公式のアカウントに絞ってまとめました。
海外の blog や release の情報を週一で tweet しています。忙しいひとは、ここをチェックするだけでも良いかも知れません :)
・ @kubernetesio
kubernetes 公式アカウント。 release や blog 新着案内などを tweet しています。
・ @googlecloud
gcp 公式アカウント。Kubernetes についての blog 等も tweet しているのでチェックしています。 Wantedly は GCP でなく AWS 上に Kubernetes を運用しているのですが、AWSユーザにも役立つ情報が多いです。
・ @thockin
Google の方。Kubernetes の Github を見ているとすぐに気付くかと思います。先日、 k8s meetup vol.2 で登壇されたり、speakerdeck で資料をアップロードしたりしているので勉強しています。
・ @kelseyhightower
Google の方。いろいろな場所で登壇されたり、GitHubの個人アカウントでデモ動画用の code を書いています。YAPC::ASIA 2015 で登壇した際のデモ動画の code も上がっているのでチェックしています。
・ @_askcarter
Kubernetes のメンバーで、RT したものをチェックすることが多いです。
・ @IanMLewis
Google の方。 #k8sjp を中心に日本で広く Kubernetes の普及活動をされている方です。イベントの立ち上げから LinuxCon + ContainerCon 等登壇されています。
Blog/YouTube
・初心者オススメ度★★
・情報の更新頻度★★
海外の Blog では、解説 と デモ動画 と Code が一式まとめられていることが多いため、Kubernetes を利用する際に非常に参考になります。その中でも特に参考になった Blog 記事をご紹介致します。
Using Deployment objects with Kubernetes 1.2
Blog: Using Deployment objects with Kubernetes 1.2
YouTube: Kubernetes Deployments update-demo
Kubernetes で Deploy する方法と Scale する方法がまとめられています。主にこちらの Blog を参考に私は Production 環境を構築しました。
How to deploy a Docker container to Kubernetes using wercker and Quay.io
Site: Building and deploying minimal containers on Kubernetes with Quay.io and wercker
YouTube: Deploying containers to Kubernetes with wercker and quay.io
Code: wercker-kubernetes-quay
wercker と Quay.io を使って Kubernetes 上に Deploy するまでの例です。具体的な流れは以下の通りです。
1. wercker で test 行う
2. test が通ったら docker build
3. build が終わったら docker registry である Quay.io に push
4. wercker の workflow にある Deploy から実際に Kubernetes に Deploy する
Scalable Microservices
Blog: Creating a scalable API with microservices
YouTube: Building Scalable Microservices using Kubernetes, gRPC, and Containers
Code1: grpc-kubernetes-microservices
Code2: nginx-kubernetes-lb
Code1 は Kubernetes 上に立てた gRPC を使ったアプリケーションの Demo です。
Code2 は Kubernetes 上に立てた Load Balancer と ruby,go, python,等のアプリケーションを元に microservices を実現した Demo です。
Managing Containers at Scale with CoreOS and Kubernetes
YouTube: Managing Containers at Scale with CoreOS and Kubernetes / Kelsey Hightower
Site: Managing Containers at Scale with CoreOS and Kubernetes
Slide: Managing Containers at Scale with CoreOS and Kubernetes
Code: kelseyhightower/yapc-asia-2015
コンテナを作るところから、リリースするまでまとめられています。イベントのセッションのため、1時間の動画になります。忙しい人は、GitHub にある、slide と demo を確認するだけで充分かと思います。
最後に、現在購読している Blog をご紹介します。
・ Kubernetes Blog
・ wercker Blog
・ CoreOS Blog
・ Google Cloud Platform Blog
Book
・初心者オススメ度★★★
・情報の更新頻度★
ピンポイントで調査するというより、どういった背景でこの機能が実装されたのか等がまとめられているため非常に勉強になります。
Blog/YouTube と違ってやはりデモがなかったり、Code が無かったりするため概念を捉えたい場合に有効だと思います。
オススメの順番は、
1. クラウド開発徹底攻略
Kubernetes を使ったコンテナデプロイから利用方法を学ぶ
2. Kubernetes: Up and Running, 1st Edition
細かい機能の設定や各機能の利用方法を学ぶ
3. Kubernetes Scheduling the Future at Cloud Scale
なぜこういう構成 and 機能なのかを学ぶ
クラウド開発徹底攻略
Kubernetes を使った動的なコンテナデプロイ
内田 誠悟
Kubernetes: Up and Running, 1st Edition
By Kelsey Hightower
Publisher: O'Reilly MediaEarly Release
Ebook: October 2015
Pages: 76
Kubernetes Scheduling the Future at Cloud Scale
By David Rensin
Publisher: O'Reilly
Released: October 2015
Qiita
・初心者オススメ度★★
・情報の更新頻度★
http://qiita.com/tags/kubernetes
日本語で書かれているため、概要を把握するのに非常に効果的です。Tips や Kubernetes の構成や次回リリースのまとめが書かれています。
情報の更新頻度がまだ少ないですが、今後日本のコミュニティが盛り上がるに連れて Qiita も盛り上がってくると思います。
現時点ではまだ膨大な量ではないため、 kubernetes の tag をウォッチしています。
まとめ
今回 Kubernetes を行う上で参考になったものをまとめました。
まだ、日本では各自手探りで調査しているのが多いかと思います。Kubernetes ユーザーが日本に増え、どんどん意見交換できる場が出来ることを期待しています。
社外の方とどんどん意見交換していきたいので、 Tweet や はてブで Kubernetes を使ってるよ!!っと表明して頂けると幸いです🙇