カスタムコントローラーの開発で注意すべきポイントは?
より使いやすい開発環境の実現に有効なカスタムコントローラーだが、実際にどう開発すればいいのか。早川氏は、同社で実践している開発の流れを紹介した。
大まかな流れは、設計、コントローラーの実装およびテスト、リリースの3段階だ。設計で試行錯誤してからひとつずつ実装、テスト、リリースして、設計にフィードバックするサイクルを回していると早川氏は言う。
設計では、主に次の3つを行っているという。
- コントローラーとカスタムリソースの構成を決める
- カスタムリソースの仕様を決める
- コントローラーごとに詳しい挙動を整理
1つは、作りたい機能を実現できるよう、コントローラーとカスタムリソースをどのような単位で作るか、さまざまなパターンを図で書き出して考える。「1つのコントローラーに機能を詰め込みすぎると、メンテナンスが大変になったり挙動が不安定になったりするので、その点を意識して試行錯誤している」(早川氏)
2つめは、どのような情報をカスタムリソースで記述するのかなど、manifestを書きながらカスタムリソースの仕様を考える。そして3つめは、コントローラーそれぞれの挙動を詳細に書き出して整理する。たとえば前述の権限設定するカスタムコントローラーの場合は、Namespaceリソースが新規作成されたというイベントに対して、AthenzPolicyClaimリソースをこのような値で作成するといったように、イベントごとの動作をリストアップするのだ。「この情報はそのままテストケースとしても使える」(早川氏)
コントローラーの仕様を決めるときのポイントとして、挙動を多く設定しすぎるとコントローラーの役割が増えすぎて、テストを書くのが大変になると指摘。増えすぎるようであれば、挙動を複数のコントローラーに分けるといった工夫をしたいと述べた。
設計が確定したら、次はコントローラーの実装だ。ここでのポイントは、コントローラーを1つずつ実装することだ。「きちんと設計されていれば、コントローラーの挙動は互いに独立しており、自分の担当するReconciliation Loopを回すだけで良い状態になっているはずだ」(早川氏)
コントローラー単位で開発すると、スクラム開発にうまくはまるというメリットもあると早川氏は明かす。「意味のある小さな単位でリリースし、早めにフィードバックを得て改善するという流れが作りやすく、複数チームでの分担もしやすい。スプリント単位でコントローラー作成するのがお勧めだ」。
同社では、さまざまな場所でアプリケーション実行基盤についての発表を積極的に展開している。気になる人はぜひチェックしてほしいと早川氏は述べて、講演を終えた。