Kontroler は、有向非巡回グラフ (DAG) の管理を簡素化するように設計されたオープンソースの Kubernetes スケジューリング エンジンです。 Kontroler を使用すると、YAML でワークフローを定義し、コンテナ化されたジョブとしてタスクを実行し、オプションの Web ベースの UI を使用してタスクを視覚化することもできます。ワークフローをスケジュールに従って実行する必要がある場合でも、リアルタイムのイベントに応答する必要がある場合でも、Kontroler は柔軟な Kubernetes ネイティブ ソリューションを提供します。
とはいえ、Kontroler は現在アルファ版であることに注意しなければなりません。実験やプロトタイピングには最適ですが、まだ実稼働環境で使用する準備ができていない可能性があります。サイド プロジェクトとして、Kontroler にはサポートが付属していないため、実稼働環境での使用は自己責任で行ってください。
GitHub リポジトリをチェックアウトしたい場合は、ここにあります: https://github.com/GreedyKomodoDragon/Kontroler
Kubernetes でのワークフローの管理は困難な場合があります。 Kubernetes は CronJob や Jobs などの強力なプリミティブを提供しますが、依存関係、再試行、動的トリガーを使用して複雑なワークフローを調整するには、カスタム スクリプトや外部ツールが必要になることがよくあります。 Kontroler は、有向非巡回グラフ (DAG) としてワークフローを定義、スケジュール、管理するための Kubernetes ネイティブ ソリューションを提供することで、このプロセスを簡素化します。
Kontroler の優れた点は次のとおりです:
Kontroler を使用すると、単純な YAML ファイルを使用して、タスク、依存関係、再試行ロジック、条件付き実行を含むワークフロー全体を定義できます。このアプローチにより、ワークフローが宣言型に保たれ、バージョン管理され、チーム間で共有しやすくなります。
それらを Helm チャートにラップし、ArgoCD や FluxCD などの自動デプロイメント システムを使用すると、GitOps ワークフロー内で DAG を管理できます。
ワークフローを定期的なスケジュールで実行する必要がある場合 (CronJob など)、またはリアルタイムのトリガー (キューからのメッセージなど) に反応する必要がある場合でも、Kontroler が対応します。両方のスケジューリング パラダイムをシームレスに統合し、幅広いユースケースに多用途に使用できます。
Kontroler は、DagRuns (Kontroler が監視できるカスタム リソース定義、つまり CRD) を使用して動作します。 DAG 実行を実行するには、DagRun を作成するだけで、Kontroler が実行を管理します。この機能をコントローラの外部に公開することで、Kontroler は外部システムとのシームレスな統合を可能にします。以下の DagRun の例を参照してください:
apiVersion: kontroler.greedykomodo/v1alpha1 kind: DagRun metadata: labels: app.kubernetes.io/name: dagrun app.kubernetes.io/instance: dagrun-sample name: dagrun-sample spec: dagName: dag-sample parameters: - name: first fromSecret: secret-name-new - name: second value: value_new
DAG の名前を指定するだけで、オプションでパラメーターを含めることができます。パラメータが何も指定されていない場合は、デフォルト値が使用されます。
Kubernetes ネイティブ アプリケーションとして、Kontroler はプラットフォームの利点を活用します。単純なスクリプトから複雑なアプリケーションまで、Kontroler のコンテナファースト設計により、あらゆるワークロードを DAG に簡単に統合できます。
作業の重複をさらに減らすために、CRD としてのタスクのサポートを追加しています。
YAML はコードとしてのインフラストラクチャに優れていますが、ワークフローを視覚化し、その実行を追跡することで、デバッグと最適化を大幅に簡素化できます。 Kontroler は、DAG の作成と監視のためのオプションの Web ベース UI を提供し、チームにワークフローを管理する直感的な方法を提供します。
上のスクリーンショットでは、次のことが示されています:
内部では、この機能はグラフ作成用のオープンソース プロジェクトである vis-network によって強化されています。ここで GitHub リポジトリを見つけることができます。当初、私たちは独自のグラフ作成ツールを開発しましたが、拡張が難しく、複雑なグラフを読みやすくするのが難しいことがわかりました。その結果、このオープンソース ソリューションを採用しました。
Kontroler のポッド テンプレートを使用すると、シークレット、PVC、ノード アフィニティ、セキュリティ コンテキストなどの高度な Kubernetes 機能を使用してタスクをカスタマイズできます。これにより、タスクの実行方法をきめ細かく制御でき、クラスターの特定の要件との互換性が確保されます。
ワークフローを管理する際の重要な課題の 1 つは、基盤となるインフラストラクチャがニーズに合わせて拡張できるようにすることです。 Kontroler は、柔軟なデータベース サポートとログ機能を提供し、チームが DAG を管理し、詳細な実行ログをキャプチャすることを容易にします。軽量のセットアップで作業している場合でも、より堅牢な実稼働環境で作業している場合でも、Kontroler にはニーズを満たすオプションがあります。
小規模なセットアップまたは開発中に、SQLite が Kontroler によって使用されるデフォルトのデータベースになります。シンプルかつ軽量で、多くの設定は必要ありません。 Kontroler を始めたばかりの場合、またはテスト目的で Kontroler を実行している場合は、追加のデータベース設定なしで「すぐに使える」SQLite が便利な選択肢です。
SQLite を使用する場合は、デプロイメントに追加の変更を加える必要はありません。インストール手順に従うだけで、残りは Kontroler が処理します。
大規模な運用グレードのデプロイメントの場合、DAG と DagRun を保存するためのデータベースとして PostgreSQL が推奨されます。 Kontroler は PostgreSQL を使用して、大量のワークフロー データを処理するために必要な、より高いパフォーマンス、スケーラビリティ、および信頼性を提供します。 Kontroler は PostgreSQL 16 以降と互換性があります
多くの Kubernetes ユーザーにとって、一元化されたログ ストレージは可観測性とトラブルシューティングにとって重要な要件です。 Kontroler はログストレージとして Amazon S3 とシームレスに統合されており、DAG 実行からのログの収集、保存、分析が簡単になります。この統合により、詳細なログを取得し、監査用に長期保存し、問題が発生した場合の事後分析に使用できるようになります。
コストを回避するために MinIO を使用してテストしていますが、内部では AWS S3 API を使用し、IAM 属性を検出して S3 バケットへのアクセスを許可できるはずです。
ぜひ Kontroler をチェックしてみてください!ここで見つけることができます: https://github.com/GreedyKomodoDragon/Kontroler.
Kontroler はまだアルファ版ですが、Kubernetes 運用の合理化を目指すチームにとって大きな可能性を秘めています。 Kontroler は進化するにつれて、Kubernetes でワークフローを調整するための強力なツールとなり、チームが複雑なプロセスを簡単に自動化するために必要な信頼性と拡張性を提供することを目指しています。
Kontroler は常に改善されているため、今後のアップデートにも注目してください。プロジェクトに貢献したい場合は、あらゆる形式の貢献を歓迎します。
以上がKontroler の紹介: DAG 用の Kubernetes スケジューリング エンジンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。