連載
» 2018年12月19日 05時00分 公開

KubeCon + CloudNativeCon 2018詳報(2):KubernetesとCNCFの、デベロッパーエクスペリエンス改善への取り組み

アプリケーション開発者およびアプリケーション運用者にとってのKubernetesの使い勝手に関する課題は、KubeCon + CloudNativeCon 2018でも多くの参加者が口にしている。KubernetesコミュニティーとCNCFはどう対応しようとしているか。

[三木泉,@IT]

 2018年12月中旬に開催されたKubeCon + CloudNativeCon 2018における数多くのセッションの中に、「Kubernetes Is Not For Developers And Other Things the Hype Never Told You(Kubernetesは開発者のためのものではない、そしてハイブに隠れてきたその他のこと)」があった。

 Microsoftでシニアソフトウェアエンジニアを務めるジョーダン・オルシェブスキ(Jordan Olshevski)氏、テイラー・トーマス(Taylor Thomas)氏によるこのセッションには、100人以上が詰め掛けた。こうしたタイトルのセッションなので当然と言えなくもないが、両氏が来場者に、「この中にKubernetesを使っていやな経験をしたことがある人はどれくらいいますか」と聞くと、およそ8割の人々が手を挙げた。

 「Kubernetesは(アプリケーション開発者に対し)、システムの下にあるコンピューティングに関わるさまざまなプリミティブを露出してしまう。あなたたちがこうしたプリミティブについて、適切に理解していないと、うまく使いこなすことはできない。非常に煩雑で、鋭いナイフのように見えることがある。アプリケーション開発者は、抽象化システムとしてのKubernetesを理解し、加えてKubernetesよりもはるかに複雑な、Kubernetesが抽象するものを理解しなければならないので大変だ」

 「一方で、Kubernetesはさらに大きく複雑なものをモデル化できる。また、コンピューティングに関わるプリミティブの集中管理により、多数のプロセスを同時に開始あるいは停止するなどの効率化を図ることもできる。Kubernetesには、デプロイメント、Podのオートスケーリング、イングレスリソースなど、より抽象化されたプリミティブもある。これらは大きな価値を与えてくれる。誰かがデプロイメントのコントローラーを書いてくれているので、私自身はアプリケーションのデプロイメントについて難しく考えなくて済むからだ。とはいえ、ここでも複雑さが生まれている」

 こう述べた上で、両氏は「スクリプティング」「Helmの活用」「CRD(Custom Resource Definition)の運用」「カスタムAPIの構築」におけるアプリケーション開発者とプラットフォーム開発者の役割分担の明確化を通じ、アプリケーション開発者の負担を軽くすることを訴えた。

 また、Airbnbのソフトウェアエンジニアであるメラニー・セブラ(Melanie Cebula)氏は基調講演で、Kubernetesの構成の複雑さ、ツールの複雑さ、インフラとの連携などの課題を、自社におけるツール開発により解決してきたことを説明した。

 このように、アプリケーション開発者およびアプリケーション運用者にとってのKubernetesの使い勝手に関する課題は、今回のイベントでも多くの参加者が口にしている。

Helmチャートの再利用が大きく広がる?

 「デベロッパーエクスペリエンスに関する課題については、明確に認識している」と、CNCFのCOO(最高執行責任者)、クリス・アニズィック(Chris Aniszczyk)氏は話す。

 アニズィック氏が期待する動きの一つに、Helmチャートの再利用の活性化がある。

 HelmはKubernetesのリソースをパッケージ化するパッケージ管理ツール。yumやRPMといったOSのパッケージ管理ツールと同様に、Kubernetesクラスタにアプリケーションをインストール、削除、更新するなどの機能を実現している。

 KubernetesのサブプロジェクトだったHelmは2018年6月、独立したプロジェクトとしてCNCFにホストされることになった。その際のCNCFによるブログポストでは、「最近実施した調査『Kubernetes Application Survey』では、回答したアプリケーション開発者、アプリケーション運用者、エコシステムツール開発者の64%が、Kubernetes上でアプリケーションを管理するためHelmを使っていると答えている」と述べている。一方でHelmは、YAMLによるパッケージ(Helmチャート)の作成や管理の煩雑さが指摘されてきた。このため、公式HelmリポジトリなどでHelmチャートを検索し、可能な部分を再利用する動きが進んでいる。

 Helmプロジェクトは、今回のイベントで「Helm Hub」を発表した。

 Helm HubはHelmチャートのオンラインカタログ。HelmのサブプロジェクトであるMonocularを活用したもので、さまざまなリポジトリに分散して存在するHelmチャートを集中的に検索して再利用できる。Helmチャートのリポジトリを運用している組織は、Helm Hubに登録することで、広くKubernetesユーザーにHelmチャートを公開できる。Helmチャートカタログを集中管理から分散運用に移行することで、これまでの公式Helmリポジトリの限界を超えてスケールさせ、人々が自らの欲しいHelmチャートを見つけやすくするための取り組みだという。

Helm Hub

 「2019年には、Helm Hubを通じたHelmチャートの再利用が、爆発的に拡大することを期待している」とアニズィック氏は言う。

 ちなみに、HelmプロジェクトではWebインタフェースでKubernetesクラスタにアプリケーションをデプロイし、管理することを助けるツール、Kubeappsの開発も行われており、バージョン1.0.0に達したという。

 ユーザビリティーやデベロッパーエクスペリエンスの問題は、Kubernetesコミュニティーでは以前から議論されてきた。

 例えば、2016年8月には「SIG Apps」というSIG(Special Interest Group)が生まれ、アプリケーション開発者とアプリケーション運用者にとっての使い勝手向上を目的とした活動を展開してきた。

 同SIGは現在、Kubernetesにおけるアプリケーションのカスタム定義が行えるようにする、Application CRDの開発を進めつつある。こちらはアプリケーションのデプロイを助けることが目的ではなく、Kubernetesクラスタ上にどのようなアプリケーションが動いているかをメタデータにより把握し、稼働管理のためのメトリックを収集するなどが目的だという。前述のKubeappsとの連携も考えられている。

 関連してアニズィック氏は、Kubernetesの「コンパクト化」ともいえる動きが進んでいると話す。

 「KubernetesはLinuxカーネルのように安定的な存在になろうとしている。そこで今、Kubernetesの一部をリファクタリングして外に出す動きが進んでいる。これは、Linuxにおけるカーネルスペースとユーザースペースに似ている。CRDについても、少数はカーネルスペース、他はユーザースペースへという分化が進む。そこで今後は、さまざまな人々がKubernetes上でCRDや拡張メカニズムを構築する動きが活発化すると考えている。2019年にはOperatorが現在よりはるかに増えるだろう」

 ただし、これらは必ずしも利用のシンプルさに直結しない。

 「ユーザビリティーの課題は、Kubernetesだけでなく、他のプロジェクトにも関わる部分だ。そこで、2019年には、CNCFとしてデベロッパーエクスペリエンスに関するワーキンググループを立ち上げることを議論している。関連ツールを俯瞰し、それぞれのツールにおける課題をユーザーに聞いた上で、適切なプロジェクトをCNCFに招き入れる活動を始めたい。MicrosoftのDraft(注:コードのKubernetesへのデプロイを自動化するツール)など、デベロッパーエクスペリエンスの向上に役立ちそうなプロジェクトは多数存在している。CNCFとしてできるのは、そうしたプロジェクトを見いだし、支援することだ」

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。