Event-driven scripting for Kubernetes.
https://brigade.sh/ external_link
関連ページ
brigade における Project ってどういう概念?
- https://github.com/Azure/brigade/blob/master/docs/topics/projects.md external_link
- そもそも Brigade は k8s 内で VCS や Docker Registry に何か更新があったときに定型の処理を走らせる event-driven framework である
- Brigade がその処理を走らせるときに使われるデータ、秘密にしておきたい内容を「プロジェクト」という形であらかじめ登録しておく
- https://github.com/Azure/brigade/blob/master/docs/topics/secrets.md external_link
- アプリで言ったら environment 相当なのかな?
- 登録しておいた値は、brigade.js 内で参照できる
- 中身は Secret で、helm で管理するのがいいらしい
処理の流れ
- Gateway が event を emit する
- Controller が event を検知する
- Controller が Worker Pod を立ち上げて、VCS リポジトリ上にある brigade.js or event 内で指定された script を実行する
- イメージの中身は https://github.com/Azure/brigade/tree/master/brigade-worker external_link
- スクリプトの中身に Job が含まれている場合、各々 Pod として立ち上げて処理する
- 処理状況は API or brig CLI を通じて確認できる
その他わかったこと
発火した後のロジックの置き場
- event が発火した際に実際に処理する内容は、VCS 上に置いておくか emit する event に含めるかの二択っぽい?
- VCS リポジトリに brigade.js というファイルを置いておくと、そのリポジトリを対象とするプロジェクトではその brigade.js を採用して実行する
- これを実現しているのは VCS sidecar と呼ばれるもの
- このスクリプトは worker 実行時に見つけられる
- 発火する側が指定している例
custom gateway を書く方法
- http://technosophos.com/2018/04/23/building-brigade-gateways-the-easy-way.html external_link
- draft を使う
- Docker image を作って registry にアップロードして chart を install するところまでやってくれるツール
- pack-repo plugin を使うと、draft の scaffold が簡単に落ちてくるようになる