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

こんにちは、Necoプロジェクトの mitz です。 続いて1日目のレポートになります。Co-Located Eventが終了し、いよいよイベント本番を迎えました。前日のレポートはこちら

blog.cybozu.io

私も昨日は Kubesec 2018 Enterprise SummitというKubernetesにおけるセキュリティに絞ったイベントに参加していました。 KubeCon + CloudNativeConはどこの開催でもCo-Located Eventがありますので、準備運動という意味でも0日目から参加する ことをおすすめします!

最終的には CNCF channel にほぼ全てのセッションが公開されるので乞うご期待です。

www.youtube.com

イベント全体の雰囲気や、数多くのセッションの中で印象に残った発表などを簡単に紹介していきます。

Keynote

Keynote: Opening Remarks + CNCF Community Updates – Liz Rice, Technology Evangelist, Aqua Security

まずは参加者への挨拶とCNCF Communityのアップデートを共有しました。

CNCFはコンテナ化を中心にクラウド環境に特化した(Cloud Native)OSSを推進するLinux Foundation傘下の非営利団体です。 今年最後のイベントであり多くの国から参加しています。参加者はついに8000人を超えました。私が今まで参加したOSSのイベントでは過去最大です。

CNCFは Landscape というWebページを公開しており、Cloud Nativeなソフトウェアを整理してまとめています。カテゴリ分けもされており、これからクラウド基盤上にソフトウェアを 動かしたり開発したりする人たちにとても有益です。

l.cncf.io

CNCFが管理するOSS Projectはキャズム理論に基づいて3つの段階で成熟度を評価します。Graduated(Kubernetes, Prometheus)、Incubation(CoreDNS, Harbor etc)、Sandbox(OpenMetrics, TiKV etc)といった感じです。 これによってどれほど世界中に浸透した製品なのか、盛り上がりのあるプロジェクトなのかが分かるようになります。Kubernetesはすでに世界中で本番環境で使われているContainer Orchestrationであり、K8sを使い方や将来の機能を見届けるために参加してきた人たちも多いと思います。

最近のIncubator projectになったのが Harbor というContainer Registryサービスを構築するソフトウェアです。Cloud NativeなContainer Registryであり、Kubernetes、Apache Mesosなどの上でデプロイできるようになっています。ちなみにCloud Nativeの定義はこちらにありますが、つまりコンテナ駆動、コンポーネント間の疎結合、宣言型API、Hybrid Cloudなどに最適化されているものを指します。

Keynote: 5 Years of etcd: Past, Present, and Future - Brandon Philips, CTO CoreOS, Red Hat & Xiang Li, Senior Staff Software Engineer, Alibaba

etcdの5年間の歴史を語っています。etcdは代表的なKey-Value分散データベースでKubernetesだけでなく多くのソフトウェアのバックエンドで採用されています。もちろんNecoのソフトウェアでも使用しています。etcd v3になってから信頼性、利便性、効率性などが上がりました。

f:id:cybozuinsideout:20181212161547j:plain

Keynote: Tales from the Kube: Contributions by the Community - Brian Grant, Principal Engineer & Tim Hockin, Principal Software Engineer, Google & Clayton Coleman, Architect, Kubernetes and OpenShift, Red Hat

CNCF、K8sの立ち上げメンバーが語る歴史です。Kubernetesは少数メンバーの開発だけでは成り立たず、個人や企業による貢献によって現在まで浸透したソフトウェアです。クラウドにおける重要機能としてMultitenancyがありますが、namespaceの実装がそれを実現しました。CNI(Container Netowrk Interface)によるコンテナ向けネットワーキングもCoreOSのrktから始まり、DockerのようなAll-in-Oneの難点を克服した解決方法でした。現在はIoT分野にもKubernetesの関心が出てきており、Raspberry PiでKubernetes Clusterを構築した学生もいます。改めて全てのContributorに感謝の意を込めていました。

f:id:cybozuinsideout:20181212161711j:plain f:id:cybozuinsideout:20181212172809j:plain

ちなみに感謝のスライドは文字が大きいほどその国のContributorが多いです。

Keynote: High Reliability Infrastructure Migrations - Julia Evans, Software Engineer, Stripe

最も感銘を受けたKeynoteでした。高いSLAを求められる企業と新しいインフラに入れ替えることにおけるいろいろな教訓を語りました。全て手書きのスライドでとても特徴的です。新しいソフトウェアを導入するにはまず自分がそれのExpertになること、障害は共有することがインフラの信頼性を上げることなどインフラエンジニアたちが感じるポイントを的確に抑えています。

f:id:cybozuinsideout:20181212163116j:plainf:id:cybozuinsideout:20181212163117j:plainf:id:cybozuinsideout:20181212163126j:plainf:id:cybozuinsideout:20181212163301j:plain

CFP Tracks

Behind Your PR: How Kubernetes Uses Kubernetes to Run Kubernetes CI - Sen Lu & Benjamin Elder, Google

Kuberentes開発のPull Requestの中で行われる仕組みをテストを中心に紹介しています。当初はGCPでテスト用のインスタンスを立ち上げてテストを流すというものでした。しかし現在は10000 job/日のテストが実行されており、スケーラビリティの向上が課題になっていました。現在は Prow(test-infra/prow at master · kubernetes/test-infra · GitHub )という CI/CD system で可動しており、専用のControllerとCRD(Custom Resource Definition)、Kubernetes cluster上にKubernetesを構築する形で実現しています。

f:id:cybozuinsideout:20181212161932j:plainf:id:cybozuinsideout:20181212161942j:plain

What's Next for etcd Cluster Management? - Gyuho Lee, Amazon Web Services & Sam Batschelet, Red Hat

私達も使ってる etcd の今後の機能に関する紹介とetcd-operatorの紹介です。現在2018年12月の最新はv3.3.10で、来年v3.4のリリースが予定されています。様々な機能が追加されますが、その中の一つとして新しいmember追加に関する課題がありました。etcd clusterに新しいmemberを追加するとLeaderからetcdデータのsnapshotをコピーするという仕組みで動いているのですが、これは脆弱性であるとも言えます。つまり意図しないmemberが追加されると中身が全てコピーされてしまうということです。これを解決するために Learner という役割をRaft(分散合意アルゴリズム)に新たに用意することで、アクセス権限を調整します。詳しくは Learner — etcd documentation にまとめられています。またダウングレード機能も実装される予定です。

etcd-operator は Kuberentes 上で動くOperatorであり、member追加・削除などを自動的に管理してくれるものです。例えば一つのmemberの応答がなくなったらそのPodを削除し、新しいmemberをPodとして参加させて復旧させるなどの機能があります。v1.0では前述のLearnerサポートなどがあります。まだProposalレベルですがPV(Persistent Volume)に対応するアイデアがありました

f:id:cybozuinsideout:20181212161940j:plainf:id:cybozuinsideout:20181212161952j:plain

Kustomize: Deploy Your App with Template Free YAML - Ryan Cox, Lyft

KustomizeはManifest YAMLの支援ツールです。KubernetesのManifestは現実的に定義を書いていくと非常に長くなり、メンテナンス性が悪くなります。それをテンプレート化してパッケージとして扱うものにHelmがありますが、Kustomizeはよりシンプルです。Goのtext/templateによる複雑なテンプレート定義を書く必要はなく、Override形式でManifestを生成することができます。production, development毎に定義を切り分けることもできるし、Podのreplaceが必要かどうか、annotationの付与などが手軽に行なえます。手軽かつ読みやすくManifestが書けるツールは最近欲しいと思い始めたところですが、Helmほど高機能である必要はない。そんな要求にマッチするツールだと感じました。

f:id:cybozuinsideout:20181212162058j:plainf:id:cybozuinsideout:20181212162103j:plain

Becoming Cloud Native Without Starting From Scratch - Marin Jankovski, GitLab

タイトルどおりではなく実際にGitLab社がgitlab.comをKubernetes上にデプロイするためにどのような苦労をしたのかを語っています。弊社のクラウド製品も最終的にKubernetes上に動かすので、その際のヒントになりそうと思いました。自社サービスというものは大抵デプロイの順序が決められており、アプリケーションよりも先にDatabaseのデプロイをしたいです。Kubernetesは宣言的APIですが、依存関係を考えるのは管理者の仕事です。彼らはHelmのみで考えましたが、実際のKuberenetes objectのデプロイ順序はハードコードされているため適合しませんでした。一方でゼロから完全なOperatorを作るのも時間がかかります。最終的な彼らの結論はHelmとOperator両方を使うことで、不満点を補いました。

f:id:cybozuinsideout:20181212162147j:plainf:id:cybozuinsideout:20181212162159j:plain

会場について

シアトルといえばメジャーリーグの球団やAmazon本社があるというイメージがありますが、スターバックス発祥の街でもあり、1号店が海沿いの市場(Pike Place Market)にあります。 今回のような国際会議にはかならずといっていいほど、コーヒーが置かれていますが、今回は全てスターバックスコーヒーです。数カ月分のスタバコーヒーを飲んだような感覚でした。

f:id:cybozuinsideout:20181212162243j:plain

ブースエリアには大企業からスタートアップ企業が自社製品やプロジェクトを展示しています。KubeCon + CloudNativeCon Europeでもありましたが、スタートアップ企業向けの紹介の場が用意されているというのは、彼ら向けのイベントを除いて今までになかったような気がします。回ってみるとかゆいところに手が届くような製品が多く、興味を引きました。またTシャツの配布率が非常に高く、今日一日でなんと15枚も確保できました :D スーツケースの中身はすでにいっぱいです。

f:id:cybozuinsideout:20181212162403j:plain f:id:cybozuinsideout:20181212162359j:plain f:id:cybozuinsideout:20181212162417j:plain

まとめ

KubeCon + CloudNativeCon North America 2018 1日目の参加レポートでした。アメリカ滞在3日目なので時差ボケは大分抜けてきています。明日の参加レポートもお楽しみに!