LoginSignup
1
2

More than 1 year has passed since last update.

Windows 11でKestraを体験してみる

Last updated at Posted at 2022-06-17

はじめに

この記事ではWindows上で分散処理プラットフォームKestraを実行するため公式サイト の記述を参考にWSL2とDockerで環境を構築し、作業過程で躓いた点や気付いたことなどをメモしています。
インストール手順に関してはこちらのWebサイトなどを参考にしました。
参考サイトはWindows 10を対象にしているのでここではWindows 11で必要な作業だけ記述します。

Kestraの概要

この記事を書いている2022.06.08の時点ではQiitaにKestraの情報が全く無かったので、最初にそもそもKestraとは何かについて簡単にご紹介します。

公式サイトのWhat’s Kestra?からそのまま表現を借りると、Kestraは 複雑なパイプラインの構築、実行、スケジューリング、監視を支援するオーケストレーションとスケジューラのプラットフォーム です。
アーキテクチャとしてはApache KafkaとElasticSearchをベースとしていて、正式運用向けとしては図のようにKubernetesが推奨環境となっていますが、手っ取り早く触ってみたい場合は今回ご紹介するようにDockerを使う事も出来ます。
kestra_architecture ( https://kestra.io/docs/architecture/ より引用 )

Kestraではサービスのワークフローをyamlで記述します。
ワークフローは特定の実行環境に依存しない形で定義可能で、ワークフローの運用管理に関する

  • デプロイメント
  • スケーリング
  • モニタリング
  • エラー処理

等々のややこしい部分は全てKestraが処理してくれます。
公式サイトによるとKestraはスケーラビリティに上限が無いとの事なので、今回構築する最小構成の環境で記述したワークフローを大規模な分散環境にデプロイする事も簡単にできるのかもしれません。
スケーラビリティについては別の機会に試してみたいと思います。

環境構築

それではKestraを構築して、上記のようにKestraがいろいろやってくれるのを実際に見てみたいと思います。
公式サイトのGetting-StartedによるとDockerとDocker Composeを用意すれば後は数ステップで完了するようです。
Linuxマシンを用意するほどでも無さそうなのでWindows 11+WSL2をベース環境に選びました。

WSL2へDebianをインストール

Windows 11ではWSL2を簡単に使えるようになっていて、管理者権限で起動したコマンドプロンプトやPowerShellから

> wsl --install

を実行するだけでWSL2が有効になります。

次はDocker実行環境としてどのLinuxディストリビューションを選択するかですが、今回はDockerのインストールで参考にしたWebサイトに従ってDebianを選びます。
次のコマンドを実行するだけでDebianがインストールされます。

> wsl --install -d Debian

それからこれは必須ではないですが、WSL2の環境を操作しやすくするためにWindowsターミナルもインストールしておきます。
Windowsターミナルを入れておくとPowerShellやWSL2など複数のシェルをマウス操作で起動してタブで切り替える事が出来るのでとても便利です。

Docker + Docker Composeをインストール

DockerをDebian上にインストールします。
WindowsのスタートメニューまたはWindowsターミナルからDebianを起動するとコマンドプロンプトが表示されるのでそこで以下のコマンドを実行していきます。

  • apt-getをアップデートしHTTPSリポジトリ使用を設定
    apt-getは標準ではHTTPSトランスポートがインストールされないので2つめのコマンドを実行しておかないと後ではまります。
$ sudo apt-get update
$ sudo apt-get install apt-transport-https
$ sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
  • DockerのGPGキーを追加
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/debian/gpg \
 | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  • リポジトリをセットアップ
$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update
  • Docker Engineをインストール
    Docker公式サイトの記載に従うとコマンド末尾のdocker-composeはdocker-compose-pluginとするところなのですが、やってみるとエラーが出て進みません。
    こちらの情報を参考に"-plugin"を削除して実行します。
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose
  • Docker Composeをアップグレード
    デフォルトでインストールされるDocker ComposeだとKestraのdocker-compose.ymlが実行できないので別途適切なバージョンをインストールします。ここでは2022.06.08時点で最新の2.6.0を指定します。
$ sudo rm -f /usr/local/bin/docker-compose
$ sudo curl -L https://github.com/docker/compose/releases/download/v2.6.0/\
docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
  • 念のためバージョンを確認
$ docker-compose -v
Docker Compose version v2.6.0
  • sudoなしでのdockerコマンド実行権限を付与
$ sudo usermod -aG docker <USER>

 ※ターミナルを再度起動した時から有効です。

これでKestraインストールの準備は完了です。

Kestraをインストール

  • docker-compose.ymlをダウンロード
$ wget https://raw.githubusercontent.com/kestra-io/kestra/develop/docker-compose.yml
  • イメージをダウンロード
    私の環境では数十分掛かりました。
$ docker-compose pull
  • サービスを起動
$ docker-compose up -d

WEBコンソールを起動

Kestraは操作が全てWEBブラウザ上で行えるようになっています。
http://localhost:8080/
へアクセスすると次の画面が表示されます。
Main.png

Kestraを動かしてみる

Docker用Kestraにはサンプルのワークフローが多数登録されています。
その中の1つを使ってKestraの動作を見てみます。

ワークフロー parallel を実行する

初期画面に一覧表示されているワークフロー(Flows)からparallelをクリックするとこのようなトポロジー図(Topology)が表示されます。
parallel_topology.png
このワークフローは左の始点から右の終点へ流れる途中でt1~t6の6つのタスクを並列実行するよう設計されています。

これを実行するにはメニューのExecuteを選択し、Executeボタンをクリックします。
parallel_execute.PNG
すると、画面がガントチャート(Gantt)に切り替わりワークフローの実行状態がリアルタイムで表示されます。
マイビデオ1.gif

parallel_Gantt_for_AGIF.PNG

トポロジー図で表現されていた通りにタスクt1~t6が全て完了した時点でタスクparentの実行が完了し、その後にタスクlastが実行された事が分かります。

ワークフロー parallel を編集する

このワークフローに少し手を加えるため、右下のEdit flowボタンをクリックします。
parallel_edit.PNG
するとワークフローのソースコードが表示されます。
parallel_source.PNG
タスクt6の定義をコピーして新たにタスクt7を作ってみました。
タスクの同時実行数(concurrent)が3に設定されているので、タスクt7は単独で実行されるはずです。
parallel_7_source.png
右下のSaveボタンで保存します。
parallel_save.PNG
すると即座にトポロジー図に反映されます。
parallel_7_topology.PNG
タスクt7が増えているのが分かります。

編集したワークフローを実行する

これを先ほどと同じように実行した結果がこちらのガントチャートです。
parallel_7_gantt.PNG
予想通り concurrent: 3 の制約の下でタスクt7が単独で実行されています。

また、トポロジー図に実行結果が紐付けられているので
parallel_7_execution_topology.PNG
Show task logsをクリックすると各タスクの実行結果を表示することもできます。
parallel_7_execution_task_log.PNG

Docker用Kestraにはparallel以外にも様々なワークフローのサンプルが登録されているので皆さんも試してみて下さい。

まとめ

Kestraの環境を構築して触ってみて、ワークフローの作成や実行、モニタリングといった操作が簡単にできることを確認出来ました。
WSL2上のDockerに全てが収まる最小構成なのでスケーラビリティやデプロイメントの部分は試せませんでしたが、Kubernetesを使った本格的な分散環境についても別の機会に構築してみたいと思います。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2