KubeConChinaで見たKubernetesエコシステムを支えるツールたち
KubeCon+CloudNativeCon Chinaは、Kubernetesを中心としたエコシステムのユースケースやソフトウェアに関するセッションや、CNCFのホストするプロジェクトのアップデートなどが多数行われたが、全てに参加することはもちろん無理なので、その中から筆者が参加したセッションをいくつか紹介したい。
最初に紹介するのは、CNCF Serverless workgroupのアップデートセッションだ。これはKubernetesを中心としたサーバーレスを議論するワークグループのセッションで、Microsoft Serverless Dayでも言及された、Virtual Kubeletに関して議論が重ねられているのも、このグループになる。
参考:KubeCon China開催。MicrosoftのServerless DayでKubernetesの未来を垣間見る
CloudEvents
まずその中から、CloudEventsに関するIBMのDoug Davis氏とHuaweiのCathy Zhang氏によるセッションを紹介しよう。CloudEventsは、CNCFで標準化が進められているサーバーレスのためのメタデータ標準化作業といえるものだ。
CloudEventsについては、KubeCon@Europeで行われたこの動画の後半、つまり1つのイベントを受け取ってサーバーレスのファンクションがさまざまなクラウドプロバイダーで実行されるデモをみるのが一番早いだろう。
参考:The Serverless and Event-Driven Future
これはServerless workgroupにも参加するServerless.incのAusten Collins氏によるセッションの動画だ。前半のサーバーレスに関するプレゼンテーションもわかりやすいが、後半のS3にイメージファイルがUploadされたというイベントをきっかけに、複数のクラウドプロバイダーがイメージ認識を行って結果をTwitterに投稿するというデモは、イベントをトリガーにファンクションが実行されるという部分を分かりやすく見せているのが印象的だ。
ここではプラットフォームにロックインされずに、複数のプラットフォームでイベントデータを標準的に使うための必要性が理解できる。つまり各社がバラバラにイベントデータの持ち方、定義の仕方を始めれば、相互運用性が著しく損なわれ、結果的に業界に良くない影響を与えるということを見越して、CNCFが標準化に乗り出したということだ。
Davis氏もZhang氏も、Workgroupの議論のアップデートとして、CloudEventsの仕様がv0.1からv0.2になることを紹介。アプリケーションデベロッパーは「ファンクションを書くことと、それをつなげてどのようなワークフローで全体のアプリケーションを実行するのか?」に専念することが究極の目標だという。
プレゼンテーション:Introduction: CNCF Serverless WG&CloudEvents(PDF)
地味ではあるが、オンプレミスとパブリッククラウドの双方での相互運用性を確保するために、CloudEventsの活動は重要だろう。マルチクラウドのシステムを検討しているエンジニアは、要チェックのプロジェクトだ。
CNCFのTOCメンバーによるQ&A
次にCNCFのTechnical Oversight Committee(TOC)のメンバーであるHuaweiのTechnical VPであるQuinton Hoole氏と、CNCFのCOOであるChris Aniszczyk氏によるQ&Aセッションを簡単に紹介したい。これはTOCの概要と現状について簡単に説明した上で、参加者からの質問に答えるというものだった。TOCの説明に関してはこれと言って目新しいものはなく、Webでも知り得る内容だったので割愛するが、筆者が行った質問に対する回答を紹介する。
最初の質問として「クラウドネイティブなシステム開発に必須な言語をCNCFがホストする予定はあるのか?」というものだ。これは従来のモノリシックなシステムからIstioなどのサービスメッシュなシステムに移行すると、非同期かつ分散処理を前提にしたアプリケーションを書くことになるが、それに適した新しいプログラミング言語が必要ではないか、という問いかけだ。
これに対してAniszczyk氏は「今のところ、CNCFとして言語をホスティングするという計画はない」とつれない返事だったが、また「競争は必要だし、新しいソフトウェアや言語が出てくるのも当然だ。BallerinaやMetaparticle(MicrosoftのBrendan Burns氏のプロジェクト)などにも注目している。YAMLがこんなにも多く使われるようになるというのは想定外だった」とも語っていた。Aniszczyk氏がYAMLに触れたのは、YAMLがKubernetesやAnsibleなどの構成ファイルとして利用され、本来の使われ方以外に拡がっていることに若干の懸念持っているということだろう。
一方Hoole氏は「新しい言語は新しいシステムのニーズが出てくれば、自ずと生まれてくるもの。RやRust、Scalaが出てきたのもそういうニーズがあったからだ。しかし1つの言語で全ての問題を解決できるものではない。ただし今の時点でクラウドネイティブのための言語が必要かどうかはなんとも言えない」と、やや新しい言語には懐疑的な見方を示した。
また「Gremlinが推進するカオスエンジニアリングをクラウドネイティブなシステムとして取り込む必要があるのでは?」という質問には、Aniszczyk氏は「カオスエンジニアリングが盛り上がっているのは知っているが、今のところCNCFとして何も決まってはいない」と答えた。Hoole氏は「本当に巨大なシステムを運用している企業においては、現実として障害が起こっているので、カオスエンジニアリングのツールを入れて実際にそれを再現するという必要性は低いのでは?」と答えた。どちらかと言えば、プロのためのモノというより実験として使うためのものという認識のようだ。
どちらも幅広く業界の推移を見守っており、BallerinaやMetaparticleなどの新しい動きもちゃんと目を配っている辺りが、さすがという印象だった。
最後に2つのプロダクトセッションを紹介しよう。
Consul Connect
1つ目はHashiCorpが開発をリードするConsulのセッションだ。これはサービスディスカバリーのためのソフトウェアであるConsulを使ってサービスメッシュのセキュリティを高めようとする新しい使い方「Consul Connect」を解説するもので、登壇したのはHashiCorpのDeveloper Advocate、Nic Jackson氏だ。
Consulはサービスディスカバリーのためのツールとして分散環境で活用されるものだが、それをIstioと組み合わせてマイクロサービスでも使えるようにしたものと言っていいだろう。単に組み合わせただけではなく、暗号化によってサービスメッシュ間のトラフィックをセキュアにすることも可能だというのがポイントのようだ。
またこのスライドにあるように、マイクロサービスだけではなくレガシーなアプリケーションとの組み合わせでも使えるという部分が、レガシーなソフトウェアを使わざるを得ないエンタープライズにとっては嬉しい部分だろう。Windowsでも動くというのは目新しいところだ。HashiCorpが手がけるVaultと連携することで、認証系システムとも上手く動くようになっているという。
Jackson氏が使用したプレゼンテーションは、以下から参照可能だ。
Consul - Modern Service Networking(PDF)
Kustomize
最後はGoogleのエンジニアが手掛けるオープンソースのKubernetesの構成をアシストするツール、Kustomizeを紹介する。これはKubernetesの構成ファイルにパッチを当てることで、Dev/Staging/Productionなどのように個々の構成ファイルに変更するためのツールだ。UNIXでの開発に詳しいエンジニアであれば、makeファイルの中身を変更するためにsedコマンドを使うという例えがわかりやすいかもしれない。
Regan氏は、Kubernetesのエコシステムにおいて構成を支援するツールだけで60以上もあり、カオスのような状態になっているという。Kubernetesがコンテナオーケストレーションのデファクトスタンダードとなった今、多くのベンダーやユーザーがツールを公開している状況に対して若干否定的な見方をしていると言えよう。特にYAML以外に新しいDSL(Domain Specific Language)を使うことで、Opsエンジニアに対してさらに大きな負担をかけることになるのを憂いているとも言える。
ここで紹介されたKustomizeは、新しい言語を使うこともなく、既存のYAMLファイルにパッチを当てることで複数の環境に対応するYAMLファイルを生成するコマンドラインツールであり、従来の運用プロセスにうまく適応できるという。
質疑応答の中で「Helmとの棲み分けはどうするのか?」という質問があった。HelmはKubernetesのパッケージマネージャーであり、すでにCNCFでホスティングされていることからも注目されているプロジェクトだ。この問いに対してRegan氏は、「Helmとは共存できる」と回答した。しかしRegan氏はHelmがバージョン3でLuaをスクリプト言語として取り込むことについて「さらに複雑さを増すことになる」かもしれないという。この辺りは、機能の豊富さとシンプルさのトレードオフと言えるだろう。
Regan氏のプレゼンテーションは以下のリンクから参照できる。
Kubernetes configuration customization(PDF)
Kubernetesのエコシステムが拡大する中で、このような隙間を埋めるツールはこれからも多数出現してくるだろう。その後に淘汰が始まり、数種類のツールに収束していくと思われる。Consul ConnectやKustomizeが、Kubernetesのツールエコシステムの中で、これからどのように成長していくのか注目したい。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- 分散データストリーミングシステム「Apache Kafka 2.4」リリース
- 分散データストリーミングシステム「Apache Kafka 2.7」リリース
- 分散データストリーミングシステム「Apache Kafka 1.0」がリリース
- 分散データストリーミングシステム「Apache Kafka 1.0」がリリース
- 分散データストリーミングシステム「Apache Kafka 2.1」リリース
- 分散データストリーミングシステム「Apache Kafka 2.3」リリース
- 分散データストリーミングシステム「Apache Kafka 3」リリース
- 分散データストリーミングシステム「Apache Kafka 3」リリース
- 分散データストリーミングシステム「Apache Kafka 2.1.1」リリース
- メッセージングシステム「Apache Kafka 0.9.0」リリース