2
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

DockerSwarmの事例と今後

この記事は第2のドワンゴ Advent Calendar 2017 8日目の記事です。
ドワンゴで普段はニコニコ生放送(以下 生放送)周りのエンジニアをやっています、ビビるです。

先月、弊社エンジニアブロマガにてニコニコ生放送におけるdockerの活用事例 を紹介させていただきましたように、生放送チームでは一部のサービスでDocker SwarmMode(以下 Swarm)を利用して運用を行っています。1

何故Docker化を始めたの?とか、実際使ってみてどうだったの?という話は上記記事を見ていただくとして、今回はその記事に追加しての話をさせていただこうと思います。

サービス更新検知

開発時にローカルでSwarmでサービスを構築した後、考えたのが「このサービスはいつ更新が終わるんだ?」ということです。
特に、サービスをローリングアップデートで更新する際の分割数を増やした場合、終わったかどうかを毎回手動で確認していて、出来れば手軽に通知が飛ばせないかなと考えていました。

そこで、DockerのEventsAPIを購読し、その内容のうちSwarmEventsのみ検知したらSlackに投げるようにしてみました。cURLで叩いた例は以下のようになります2

curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json"  "http:/v1.33/events?filters=\{%22type%22:\[%22service%22\]\}"

このようにAPIから取得したデータをSlackに投げるプログラムをサービスとして建てておくことで、上手くイベント通知をSlackに集約できるようになりました。

更新完了画面

Kubernetes公式サポートの話

10月に行われたDockerCon Europe にて、K8sの公式サポートが発表されました。
これはSwarmの終焉だというわけではなく、KubernetesとSwarmは並列に運用できるようになります。具体的にはDocker EE上の1クラスタ上にK8sでもSwarmでもデプロイが行える状態になります。

例えば

docker stack ls

のコマンドで情報を取ってこれるSwarmのスタックがあった場合、

kubectl get stacks -o name

のコマンドで取得できる、といった具合のようです。

UCP (Universal Control Plane)上でも、SwarmとKubernetesのメニューが並列に並んでおり、それぞれが管理するスタック/Podを確認できる状態になっています。

Kubernetesサポートは2018年1Qにリリースされる予定ということですが、beta版は間もなく利用できるようになるとで、サインアップして正座して待っている状態です。

終わりに

ちょっと事情があり、記事がかけていません。後日別途記事を書いて追記したいと思います。
明日は@yyuさんです。


  1. 記事にはありませんが、社内他部署ではKubernetesを利用している部署もあります。  

  2. apiのバージョンはDockerEngineのバージョンに合わせて変わるので、古いバージョンの場合など適宜読み替えて下さい。 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
2
Help us understand the problem. What are the problem?