PR

Equinixのベアメタルサービスの中核となるTinkerbellの概要を紹介

2021年4月8日(木)
松下 康之 - Yasuyuki Matsushita
Equinixのベアメタルサービスの中核を担うオープンソースソフトウェアのTinkerbellを紹介する。

Tinkerbellは、ベアメタルのマシンにOSを実装するためにマイクロサービスを組み合わせて実装したオープンソースソフトウェアだ。元はベアメタル向けのソリューションを開発していたベンチャーのPacketが開発していたベアメタル向けのソフトウェアだった。2020年3月にEquinixがPacketを買収したことで、現在はベアメタルマシンを使ったサービスとしてEquinixのサービスメニューの一つとなっている。

Tinkerbellは元のソフトウェアからPacketに特化したコードを取り除き、どのインフラストラクチャーでも実装可能なように仕立て上げたオープンソースソフトウェアであり、開発は今もEquinixに所属している元Packetのエンジニアが継続しているという。

TinkerbellはCNCFのサンドボックスプロジェクトとしてVirtual Kubelet、Chaos Mesh、Keda、OpenTelemetryになどとともにホストされており、今後のコミュニティの活動拡大やソフトウェアの進化が期待されているプロジェクトと言えるだろう。

参考:Sandbox projects | Cloud Native Computing Foundation

今回はTinkerbellの概要を「Tinkerbell 101」という動画をベースに紹介する。

動画:Tinkerbell 101

またこの動画とは別に「Intro to Tinkerbell」という動画も存在している。こちらは、Vagrantを使いながらTinkerbellの導入操作を紹介するものになっており、Tinkerbellそのものの解説であれば、前述のTinkerbell 101が最適だろう。

動画:www.youtube.com/watch?v=Y04eCSKaQCc

そもそもベアメタルとは?

Intro to Tinkerbellの動画から

Intro to Tinkerbellの動画から

Tinkerbellはシステムのインフラストラクチャーとなるサーバーの実装を、複数のマイクロサービスを組み合わせて実現するソフトウェアで、Goで書かれている。

Tinkerbell 101

Tinkerbell 101

この動画のタイトルにある「101」は、アメリカの大学の学部で最初に受講する入門科目の番号である「101」を模した形になっており、このセッションがTinkerbellそのものの入門となっていることを示している。

ベアメタルとは何か?

ベアメタルとは何か?

セッションの最初のトピックは「そもそもベアメタルとは何か?」である。

ベアメタルは熊がヘビーメタルを演奏すること?

ベアメタルは熊がヘビーメタルを演奏すること?

ここではジョークとして、熊がヘビーメタルを演奏しているスライドを使ってアイスブレークしようとしているのがわかる。

ベアメタルを使う理由は?

ベアメタルを使う理由は?

ベアメタルは仮想化基盤などを搭載しない物理サーバーを指し、それを使う理由として、「高いパフォーマンス」「柔軟であること」「ライセンスが不要なこと」などを挙げて説明を行った。

パフォーマンスを必要とするシステムにベアメタルが有効

パフォーマンスを必要とするシステムにベアメタルが有効

仮想化されたサーバーは、多少のオーバーヘッドを許容しても一つのハードウェア上で複数の仮想サーバーを動作させ、その上で多くのアプリケーションを稼働させることでフルにサーバーを使うという発想になる。一方より高い性能を要求するシステムを実現するためには、ベアメタルを用いてハードウェアの持つ性能を100%目的のアプリケーションに専有させることが必要になる。

ベアメタルの利用例

ベアメタルの利用例

ベアメタルのデプロイ

ここまではどうしてベアメタルが必要か?を解説するフェーズだったが、ここから実際にベアメタルをデプロイする方法の解説が始まった。

ベアメタルをデプロイする方法の解説

ベアメタルをデプロイする方法の解説

ここでは過去を振り返るという意味で、PCにWindows 95をインストールする際に大量のフロッピーディスクを使っていたことを紹介したのち、その後はネットワークを経由したインストール方法に移行したことを語った。フロッピーディスクからCDに移行したとしても、BIOSが制御するハードウェアがFDドライブからCDドライブに変わっただけで本質的には変わっていない。しかしネットワークからのOSインストールを可能にした複数の技術が1990年代に登場したことで、ベアメタルの進化が始まったことを解説した。

ベアメタルのデプロイを可能にした技術DHCP、TFTP、PXE

ベアメタルのデプロイを可能にした技術DHCP、TFTP、PXE

ここからはベアメタルマシンへのOSインストールをネットワーク経由で可能にした技術としてDHCP、TFTP、PXEを挙げた。DHCPはDynamic Host Configuration Protocol、TFTPはTrivial File Transfer Protocol、PXEはPreboot eXecution Environmentの略だ。PXEはPCのCPUで圧倒的なシェアを持っていたIntelが開発したテクノロジーである。またDHCPとTFTPは、IETFのRFCとして標準化されている。

ここからDHCP、TFTP、PXEを使ったブートまでのフローを解説するフェーズになった。

ベアメタルマシンがDHCPを使うフローを解説

ベアメタルマシンがDHCPを使うフローを解説

ここではGIFを使って動画の中で解説されていたPXEブートするベアメタルマシンとDHCPサーバーのやり取り、TFTPを使ったOSイメージの転送を紹介する。ベアメタルマシンがDCHPの拡張機能を使ってIPアドレスを取得して、ファイル転送に至る過程が解説されている。具体的には、DHCP DiscoverからDHCP Offer、DHCP Request、DHCP Ackを経て、DHCPのOptionを使ってPXEブートのファイルイメージがベアメタルマシンに渡されていくというフローだ。

ベアメタルへの実装は難しい

ベアメタルへの実装は難しい

このスライドでは、ベアメタルマシンへのネットワークを介したブートストラップにはカスタマイズされたスクリプトやベンダー固有のパッケージなどが必要となっており、容易ではなかったことが解説されている。

自動化やスケールさせることが難しいのがベアメタルの実装だった

自動化やスケールさせることが難しいのがベアメタルの実装だった

またベアメタルの実装が可能となったとしても、それをコード化し自動化することが困難だったと説明して、Tinkerbellが開発された背景を語った。そしてここからTinkerbellのコンポーネントがどのようにベアメタルマシンをブートしていくのかが解説されるフェーズとなる。

Tinkerbellのコンポーネントが順に実行されていくようすを解説

Tinkerbellのコンポーネントが順に実行されていくようすを解説

ここからはTinkerbellのコンポーネントがどういう順番で実行されていくのかを解説しているが、最初にTinkerbellのコンポーネントの概略を紹介する。詳細はオフィシャルのドキュメントサイトを参照して欲しい。

Tinkerbellのコンポーネント概略(<a href="https://docs.tinkerbell.org/architecture/" class="link">https://docs.tinkerbell.org/architecture/</a>より引用)

図1.14: Tinkerbellのコンポーネント概略(https://docs.tinkerbell.org/architecture/より引用)

参考:Architecture - Tinkerbell Docs

この図にあるようにBootsがベアメタルマシンのブートを担当し、まずOSIE(Operating System Installation Environment)と呼ばれるインメモリーのOSがベアメタルマシンにインストールされる。その後、TinkerbellエンジンがDockerコンテナのタスクをワークフローとして実行することで、ベアメタルマシンにユーザーが必要とするOSがインストールされるという仕組みである。図中のHegelはベアメタルマシンにメタデータを設定するためのコンポーネントだ。

OSIEの中身はAlpine LinuxとDockerコンテナ

OSIEの中身はAlpine LinuxとDockerコンテナ

インメモリーOSとして実行されるAlpine LinuxとDockerコンテナ、ハードウェアを定義するYAMLファイル、そしてベアメタルマシンを実装するためのタスクを実行するワークフローエンジンであるTinkerbell(Tink-server、Tink-worker、Tink-CLI)が、ここから仕事をする段になる。

Dockerコンテナがワークフローとして実行されていく

Dockerコンテナがワークフローとして実行されていく

TinkerbellがCNCFのサンドボックスプロジェクトとして採用されたのは、インメモリーOS上でDockerコンテナをワークフローのタスクとして実行するという発想がクラウドネイティブなオペレーションに適合していると評価されたからだろう。ワークフローとして実行されることで、自動化だけではなくエラー処理などもコードとして定義できるというのがTinkerbellの美点と言える。

OSIEのベースとなっているAlpine Linuxも、より省資源化する計画があるということから、単にデータセンターのサーバーのプロビジョニングだけではなく、エッジデバイスもターゲットにしているのだろう。このことは動画の最初に出てくるイラストに、サーバーだけではなくRaspberry Piの絵や製造ラインに設置されているロボットの絵が描かれていることからも想像できる。

左側にRaspberry Pi、右がFA用ロボット、奥にサーバーが描かれている

左側にRaspberry Pi、右がFA用ロボット、奥にサーバーが描かれている

また公式サイトではないが、元Packetのエンジニアで今はEquinixで働くGianluca Arbezzano氏のブログにも、Tinkerbellを解説する記事が公開されているので、そちらも参考にして欲しい。Arbezzano氏は、CNCFのアンバサダーとして活動していた経歴を持つイタリア在住のエンジニアである。

Arbezzano氏のブログ:What is Tinkerbell?

Equinixが提供するベアメタルサービスであるEquinix Metalの中核として利用されるTinkerbellの進化に、今後とも注目していきたい。

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

連載バックナンバー

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

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

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

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