PR

KubeCon+CloudNativeCon NA開催 Kubernetesのクラスター管理を進化させる方法論をKatie Gamanji氏が解説

2021年3月8日(月)
松下 康之 - Yasuyuki Matsushita
KubeCon+CloudNativeCon North America 2020にて実施されたAmerican ExpressのKatie Gamanji氏によるクラスター管理に関するセッションを紹介する。

CNCFが主催するKubeCon/CloudNativeConがバーチャルカンファレンスとして開催された。今回は数多くのセッションの中から、American Expressのエンジニアで過去のKubeConでも印象的なプレゼンテーションを行っていたKatie Gamanji氏のセッションを紹介する。

DX目線でクラスター管理の進化を解説するというセッション

DX目線でクラスター管理の進化を解説するというセッション

このセッションのトピックは、クラスター管理のためのコマンドラインインターフェース、デベロッパーエクスペリエンスを拡張するためのツール、DevOpsをさらに発展させたApplicationOpsの例を解説するという内容だ。

3つのトピックでクラスター管理を解説

3つのトピックでクラスター管理を解説

最初にクラウドネイティブなシステムの進化を導いた大きな流れはコンテナ化であり、数年前まではDockerが推進するSwarm、Mesos、そしてKubernetesなどのコンテナオーケストレーションツールが存在していた。そして現時点では、Kubernetesがデファクトスタンダードとなっていることを紹介した。特にKubernetesについては「すでに本番システムの50%以上で利用されていること」「2千人を超えるコントリビューターが存在すること」などを挙げて、エコシステムが拡大していることを紹介した。

特にリアルのカンファレンスとして開催されていた当時、参加者は1万人未満だったKubeConが、バーチャルカンファレンスとなった今回は2万3千人を超える参加者を集めていることを紹介。実際にリアルイベントに比べて、現地に行けない参加者がインターネットを使って参加することで情報拡散には大きく役立っているのは確かだろう。ほぼすべてのセッションが動画として再生可能であり、スライドも即時に公開され、質問もできるという点は、リアルのセッションよりも確実に良くなっていることをメディアの立場でも感じることができる。

クラウドネイティブなシステムのエコシステムの拡大を紹介

クラウドネイティブなシステムのエコシステムの拡大を紹介

このスライドではCNCFのランドスケープに掲載されているソフトウェアの一部を紹介したが、実際にはCNCFがクラウドネイティブランドスケープとして掲載しているソフトウェア、サービスは年々拡大しており、今では1枚のPDFですべてを紹介するには限界がある程度まで拡大している。全体の構成は以下のリンクから参照して欲しい。

Kubernetesのエコシステムも拡大

Kubernetesのエコシステムも拡大

参考:CNCF Cloud Native Interactive Landscape

ここからは、クラウドネイティブなシステムの中核とも言えるKubernetesに絞ってその進化を解説する内容となった。Gamanji氏がKubernetesに関わるエンジニアを3種類に分けていることは興味深いと言えるだろう。Application Developer、Application Operator、Infrastructure Operatorの3つに分けてそれぞれの役割を考えるのは、MicrosoftのMark Russinovich氏が解説した分散アプリケーションのためのランタイムDaprのセッションでも「Kubernetesはデベロッパーにとっては運用を考慮しなければいけないという状況が難しすぎる。そのためにはデベロッパーとインフラストラクチャー担当の間にアプリケーションオペレーターを置いて、そのエンジニアがアプリとインフラを繋ぐ役割を果たすべきだ」としてその必要性を強調していたメッセージだ。

Kubernetesに関わるエンジニアを3つの役割に分類

Kubernetesに関わるエンジニアを3つの役割に分類

参考:分散型アプリの開発と運用を分離するOAMとDapr、そしてKubernetes上の実装であるRudrとは?

アプリケーションオペレーター」という役割がクラウドネイティブなシステムを開発運用するエンジニアに認知されているかどうかは不明だが、少なくともベンダーサイド、ユーザーサイドでその必要性を理解しているという状況にあるのは確かだろう。少なくとも、ベンダーだけが旗を振ってユーザーを取り込もうとしている状況ではなさそうだ。

そしてここからはクラスター管理に的を絞り、Kubernetesを操作するコマンドラインツール、kubectlについて解説を行った。

クラスター管理のためのCLIについて解説

クラスター管理のためのCLIについて解説

SIG-CLIで開発が続いているKubectl

SIG-CLIで開発が続いているKubectl

KubectlをImperative/Declarativeと解説したGamanji氏だが、ここでは「命令的/宣言的」という訳を当てるのが妥当だろう。これは、Manifestを使って宣言的に状態を定義し、それに沿うようにNodeやPodなどが起動されるというKubernetesの作法を表している。

命令的と宣言的の違い

命令的と宣言的の違い

それぞれに良いところも悪いところもあるが、Gamanji氏は、Kubernetesの学習コストが高いという部分を指摘している。これはデベロッパーにとっては発想の転換をする必要があることを示しているとも言える。処理を命令やループ、条件分岐で記述するのがデベロッパーだとすれば、必要な状態を宣言的に記述し、それを運用するのがオペレーターであり、そもそもの発想が違うという主張だ。

デベロッパーエクスペリエンスの進化を解説

デベロッパーエクスペリエンスの進化を解説

次に触れたのは「デベロッパーエクスペリエンスがKubernetesにおいてどのように進化しているのか?」というトピックだ。

デベロッパーエクスペリエンスの進化とは

デベロッパーエクスペリエンスの進化とは

DXという略語は往々にして「デジタルトランスフォーメーション」の略として用いられるがこのセッションではあくまでも「デベロッパーエクスペリエンス」の略であることを明記しておきたい。そしてそれには4つの特徴が見られるというのがGamanji氏の説明だ。その4つ、すなわちシンプルさ、最適化、透明化、持続性の高さをKubernetesのCLIに実装する方法として、プラグインによる拡張、グラフィカルなユーザーインターフェースやコマンドツールによるラッパーがあると解説。

Kubectlの拡張の2つの方法

Kubectlの拡張の2つの方法

プラグインについては簡単なBashのスクリプトを組み込む内容を解説した。

Kubectlプラグインの解説

Kubectlプラグインの解説

"Hello World"と標準出力に書き出すスクリプトをプラグインとして組み込み

"Hello World"と標準出力に書き出すスクリプトをプラグインとして組み込み

ここからKubectlのプラグインマネージャーとして公開されているKrewを紹介する内容となった。Krewについては以下を参照されたい。KrewはKubernetesのSpecial Interest Group(SIG)、SIG-CLIで開発されているオープンソースソフトウェアだ。

参考:Krew ? kubectl plugin manager

Krewの紹介

Krewの紹介

Krewはプラグインを操作するためのツールではあるが、プラグインの実体はそれぞれGitHubのリポジトリーなどに存在するため「どのプラグインを使うのか?」「それにリスクはないのか?」については利用する側が確認する必要があることだけは明記しておきたい。

Krewでプラグインダウンロードのトップ5を表示

Krewでプラグインダウンロードのトップ5を表示

ここからプラグインの記述の例や利用例を、デモを通じて解説した。

ターミナルからプラグインをリスト表示。Krew自体もプラグインだ

ターミナルからプラグインをリスト表示。Krew自体もプラグインだ

そしてデモのために用意した「Hello, World」を出力するプラグインを紹介。このYAMLファイルでは実体がどこにあるのか、それをどうやって実行するのか、などの記述が後半の部分に書かれていることが分かる。

"Hello, World"を出力するプラグインの設定ファイルの中身

"Hello, World"を出力するプラグインの設定ファイルの中身

実際にKrewからプラグインをインストールし、実行してみせた。

次に紹介したのはKubectlにUIを提供するWrapperの概要だ。

KubectlのUIを拡張するWrapperを紹介

KubectlのUIを拡張するWrapperを紹介

特にここでは、オープンソースとして公開されている3つのツールOctant、Lens、K9sが例として紹介された。OctantはVMware、LensはMirantis、K9sはイギリスのBright Boxが開発するツールだ。

参考:
Octant
Lens | The Kubernetes IDE
K9s - Manage Your Kubernetes Clusters In Style

ここからはアプリケーションを運用するフェーズで利用されるツールとして、HelmとKustomizeを紹介した。

ApplicationOpsの解説

ApplicationOpsの解説

HelmはKubernetesのパッケージマネージャー、Kustomizeは開発環境、テスト環境、本番環境などに合わせて構成ファイルを変換するツールであり、それぞれ特徴があることを紹介。特にHelmを命令的、Kustomizeを宣言的と表現している点は興味深い。

HelmとKustomizeを紹介

HelmとKustomizeを紹介

ちなみにKustomizeについては、2018年のKubeCon Chinaでのセッションを紹介する記事を参考にされたい。

参考:KubeConChinaで見たKubernetesエコシステムを支えるツールたち

最後の部分はアプリケーションデベロッパーから見て、「Kubernetesのクラスターをどうやって管理するのか?」という視点で3つの方法を紹介した。

アプリケーション運用の3つの方法

アプリケーション運用の3つの方法

ここではClickOps、GitOps、SheetOpsを紹介。ClickOpsは文字通り、グラフィカルなインターフェースをクリックすることで運用を行うスタイルで、デベロッパーとっては利点が多いと解説した。

ClickOpsの紹介

ClickOpsの紹介

GitOpsはGitに存在する構成情報を元にすべての運用操作を行うスタイルで、コマンドを直接打つのではなく、Gitの上のコードを変更することでリアルに稼働しているコンピュータ資源と定義情報が常に一致していることを目指すやり方だ。

GitOpsの紹介

GitOpsの紹介

ここではFluxとArgoという2つのツールを紹介した。実際にはIntuitが開発するArgoとWeaveworks&AWSが開発するFluxはマージされると発表されたが、未だにCNCFの中ではArgoがインキュベーション、Fluxがサンドボックスとしてホストされている。

物議を醸すSheetOpsを紹介

物議を醸すSheetOpsを紹介

最後に「SheetOps」としてGoogle Spreadsheetに記述されたNode数などのパラメーターを変更することでKubernetesのクラスターの状態が変更されるという方法論を紹介。

SheetOpsの紹介。YAMLをスプレッドシートに置き換えるのが目的

SheetOpsの紹介。YAMLをスプレッドシートに置き換えるのが目的

これはあくまでも「ハッカソンの時にやりそうなこと」としてGamanji氏が質問に応えていたように、ジョークとは言わないまでもYAMLに支配されているKubernetesの構成情報を他のモノに置き換えることが目的で、その対象がたまたまGoogle Spreadsheetだったものと認識するべきだろう。

実際にシートの数値を変えることでPodが起動されるデモを実施

実際にシートの数値を変えることでPodが起動されるデモを実施

最後に、クラスター構成管理には宣言的な管理方法取り入れることで、デベロッパーにおいても拡張性と最適化が達成できることを解説してセッションを締めくくった。

宣言的な構成管理によって拡張性と最適化が達成できると説明

宣言的な構成管理によって拡張性と最適化が達成できると説明

リアルなセッションでは登壇者に対して直接Face to Faceで質問を行うことができるのが利点だが、質問が他の参加者と共有されない、時間が足らないという欠点がある。その点バーチャルなセッションでは、それらの欠点がないことはもっと評価されるべきだろう。このセッションでもGamanji氏は多くの質問に答えていたことが動画の最後で確認できる。

質問に答えるKatie Gamanji氏

質問に答えるKatie Gamanji氏

以前からクラスター管理に非常に熱心に取り組んできたGamanji氏だが、CNCFのアンバサダーとしてこれからの活躍にも期待したい。また動画とスライドによるオンラインセッションという形式についても、主催者、登壇者ともにある程度の経験を積んだことでかなりスムーズに進行されるようになってきたことは喜ばしい。すべてをリアルタイムに行う必要もなく、素材としてデモ動画やエンドユーザーのコメントを差し込んで完成させるというのは、これからのスタンダードになっていくだろう。

著者
松下 康之 - Yasuyuki Matsushita
フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。

連載バックナンバー

運用監視イベント
第7回

ベンダーニュートラルな可視化ツールOpenTelemetryの最新情報を紹介

2021/3/29
可視化のためのプロジェクトOpenTelemetryの最新情報を、KubeConのセッションなどから解説する。
OSSイベント
第6回

KubeCon NA 2020で語られたオープンソースに貢献する意味・メリットとは?

2021/3/25
KubeCon NA 2020において、オープンスースに貢献する意味を元Facebookのコンサルタントが解説したセッションを紹介する。
クラウドイベント
第5回

KubeCon NA 2020 LinkerdとAmbassadorを使ったマルチクラスター通信を紹介

2021/3/23
LinkerdとAmbassadorを使ったマルチクラスターの実装例を、BuoyantとAmbassador Labsのエンジニアが紹介した。

Think IT会員サービス無料登録受付中

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

他にもこの記事が読まれています