KubeCon + CloudNativeCon North America 2018 現地レポート 2日目

こんにちは、Necoプロジェクトの森本です。 カンファレンス2日目のレポートです。 ほかの日程のレポートはこちら。

blog.cybozu.io

blog.cybozu.io

blog.cybozu.io

トピックを絞って丸一日議論した0日目Co-Located Event、全参加者を迎えての基調講演から始まった1日目に続き、2日目となります。 日程の組み方が、1日目はビギナー向けを多めとし、そこから次第にマニアックな内容に向かう構成となっているようです。 どんなディープな議論となるか、楽しみ楽しみ。

f:id:cybozuinsideout:20181213155915j:plain
基調講演の会場。とにかく大人数。

Keynote: Kubernetes Project Update

本日も基調講演から始まります。 まずはKubernetesの普及度合いの説明から。 ここまでにInnovatorsからEarly Adoptersへと順調に普及が進み、今はEarly Majorityに手を伸ばしています。 これまでは新機能の追加でワイワイやっていたけれども、ここからの段階では安定して動くこと・一貫した動作をすることが重視されるようになります。 ちょっと退屈なフェーズに入ったように見えるかもしれませんが、ここからが大切なところ。 これからもOpen StandardとExtensibilityという二本の柱を守って進めていきましょう、という呼びかけでした。 Kubernetesの利用者に対しては、システムが大きく変わってしまってそれまでの投資が無駄になる、なんてことはないんだよと安心を与えるような呼びかけとなっていました。

Keynote: Save Yourselves!

こちらのお話はセキュリティに関してのもので、発表者は会議の司会進行役も務めるLiz Riceさん。 この人が登壇するだけで会場から歓声が上がるという人気者です。 まずは基本的な話として、そこらに転がっているようなマニフェスト(サービスの構成情報)を適当に使っちゃうと大変なことになるよ、ということで実演してみせます。 ネットから落としたYAMLファイルをkubectl applyしてデモの画面に表示されたのは……"all your pod are belong to us"。 これは冗談としても、野良マニフェストを使うとadmin権限でやりたい放題の状態となってしまうので注意が必要です。 やりたい放題を防ぐ仕組みとして、APIサーバまでの間にAdmission Controllerを挟んで「このリソースにこの操作はやっていい、この操作はやっては駄目」等々細かく判断させる、あるいはそれをもっと簡便にOpen Policy Agentのポリシーとして記載する、といった対策が紹介されていました。 最近だと不正に得た計算パワーを仮想通貨のマイニングに悪用するというのが定番らしく、気を付けたいところですね。

Keynote: Developing Kubernetes Services at Airbnb Scale

さらに基調講演から、近来話題となっているAirbnb社さんにおいてmicroservicesをどう取り扱っているかというお話です。 サービスデリバリのサイクルを細かく速く回してサービスを提供したい、モノリスなサービスは大規模化が進んでいてまったくデプロイを加速できない、ということでKubernetesでのmicroservicesという形でサービス提供を進めているとのことです。 しかし1,000を超えるチーム(すごい規模ですね)がそれぞれmicroservicesを取り扱おうとすると、効率化を進めなければいけません。 まずKubernetesで問題となるのは、使い始めたときに誰もが感じることかと思いますが、いくつもいくつもYAMLファイルが必要となること。 1つのサービスのために10個以上のファイルを用意し、しかもどのサービスでも似たような内容となるファイルを毎回用意する必要があります。 Kubernetes boilerplate! (決まり文句!)でウンザリだということで、これをテンプレートから生成するようにします。 さらに、サービスごとにenvironment/namespaceを区切るわけですが、区切った際の名付け方を標準化しておきます。 これにより、同じことを何度も書くという無駄な手間を省き、どの環境でも標準化された方法で操作対象を指定できるようになります。 このほか、CI/CDを簡単にできるように、特に開発者がそれぞれでできるように仕組みを用意する等、実際に開発・運用していて詰まったんだろうなというところを丹念に潰しているように思えました。 開発者の試行錯誤が見えてくるような発表でした。

前夜の爆弾

ここまで基調講演を見てきましたが、実は前夜に爆弾が投下されていたのでした。

身も蓋もないと言いますか何と言いますか。 これを受けてかどうか、今日の基調講演はそう悪くなかったと思うのです。 徹夜で必死に直した方もいたのでしょうか……。

f:id:cybozuinsideout:20181213160946j:plain
唐突なお土産コーナー。各プロジェクトのマスコット人形を売っていたりします。

Building Container Images on Your Kubernetes Cluster with Knative Build

この後は各部屋に分かれてのセッションです。 CIのためにビルドシステムを別途用意するのは手間だよね、いつものKubernetesクラスタの中でビルドを扱いたいよね、ということで、Knative Buildによりビルド手順を表現し、Kubernetesクラスタで実行するというものです。 Knative (ケイネイティブと読まれていました)はGoogleが推進しているプラットフォームで、サーバレスなアプリを手軽に書いて、後のこと(ビルドだのデプロイだのモニタリングだの)はお任せというものです。 ここでは、CRD (Custom Resource Definition; 拡張APIのためのデータ構造)を用いてビルドプロセスをモデル化し、ビルド手順のステップを「このコンテナイメージでこのコマンド(ビルドだったりテストだったり)を実行する」という形で記述して与えていました。 私たちNecoプロジェクトでもCircleCIの設定でそのようなビルドステップを記述していますが、より統一的・汎用的に扱えるようになるのでしょう。

So You Want to Run Vault in Kubernetes?

HashiCorp社さんが公開している機密管理ツールVaultを、Kubernetesクラスタで安全に動かすにはどうするかという、ベストプラクティスの発表です。 Necoプロジェクトでもちょうど、Kubernetesクラスタの構築の中でVaultをセットアップして管理基盤に据えています。 さて自分たちのやり方でおかしなところはなかったかなと発表を見に行きました。 その結果ですが、API利用は必ずTLSを用いましょうとか、ロードバランシングはL7ではなくL4としてTLSの終端はVaultが握るようにしましょうとか、IPC_LOCKを指定してページアウトを防ぎましょうとか、まったくもってそのとおり、私たちもそのように気を付けてるよ、というものでした。 期待以上でも期待外れでもなく、期待どおりというところ。 まあ、それで良かったのでしょうね。

プロジェクトメンバーで振り返ったところ、実はこれ以外のセッションでも似たような問題(期待以上ではない)が発生していました。 多くの参加者を対象としたセッションではそこまで深い情報は出てこないため、自分たちがこれまでに分け入ったコンポーネントについてはあまり新たな情報は得られないのでした。 各コンポーネントのメンテナの方とお話しできるよ、という時間帯も設けられていますので、深く突っ込みたい場合はそこに突撃するのが良いのでしょう。 相当のコミュニケーション能力、というか英語力が試されますが……。

f:id:cybozuinsideout:20181213161401j:plain
求職・求人コーナー。定番の光景です。

All Attendee Party!!!

夕方になりました、なんだかみんなソワソワし始めました。 本日は締めの基調講演はなく、会場から場所を移してパーティーなのです! シアトル名物のSpace Needleタワーに上ったり、美術館や博物館が立ち並ぶエリアを散策したり、楽しみですね!

というところなのですが、残念、これもシアトル名物の冬の雨に降られてしまいました……。 今日は朝から青空も見えていて珍しく落ち着いた天気だったのですが、狙いすましたかのような雨です。 しかも8,000人がシャトルバスに乗るための行列。 人、人、人。

結局パーティーは諦め、近くのレストランでおいしいものを食べて退散しましたとさ。 めでたしめでたし。

ブログの最後は素敵な写真で飾ろうと思っていたのですがそれもおじゃんとなりました。 明日 3日目の現地レポートをもって、埋め合わせとさせていただきたく思います。 どうかお楽しみに。