Judgementは必ずしもUI上からする必要はない。spin-deckになればなんでもできる。automation最近作ったSpinnakerのPipeline僕が最も追っているプロダクトの一つにSpinnakerがあります。ここ2年は軽くしか追っていないです。幸いにも根本的なことは何も変わっておらず、今年度新卒入社した今の会社でSpinnakerが使われているため学生時代の知識が大いに役立っています。Judgementの自動化があります。ドキュメントなどはなく、そもそも自動化するものではないのですがSpinnakerのArchitectureと仕組みを知っていると簡単にできます。Judgementを承認するのとは違う形で承認プロセスを行うことができます。これらはSpinnakerでCI/CDを運用する上で、一つの自動化のお道具箱として使えるものなのでぜひご覧ください。toolSpinnakerそのものの解説をしたいわけではないので詳しくはSpinnakerのDocumentにあたってください。CassandraやRedisは今は一般的に使われずMinioや外部Redis、オブジェクトストレージが広く使われていることに留意してください。使えないことはありませんが非推奨になっています。Gatewayアーキテクチャを取っていることです。Gatewayにあたるspin-gateが公開されており、それ以外のコンポーネント群はインターネットには公開されていません。これは裏を返せば、spin-gateのAPIを知ることができればUI上でできることは自動化できるわけです。GateのAPIドキュメント参考にしないほうがいいです。非常に雑なドキュメントになっています。それでも見たい方はGATE_URL/swaggerを開くことによって見ることができますが、大した情報はありません。それでもみたいなら興味本位でどうぞご覧ください。Judgementとはどのようなものでしょうか。「人間がそのPipelineを進めるかどうか判断するステージ」のことです。Judgement)を入れることによって実現します。JudgementがあるPipelineこれは広く一般的に使われていて、Spinnakerのコンポーネントが勝手にデプロイしたりすることを防ぐ役割もあったりします。実際にPipelineを実行してみると以下のように停止します。Productionリリースの前に一旦、確認したいとします。人為的なミスによって誤ってリリースがされることを防ぎます。リリース時は以下のように確認が求められます。JudgmentはProduction環境でSpinnakerを使うにあたっては有用な機能なのです。自動化これより自動化を進めていきます。Judgementをアプリケーションをつかって自動化することを示すことは以下の可能性を提示します。Judgementを別の形で半自動化ができること例えば、自動化をアプリケーションをつかって実現できるならロジックを入れることができます。Judgement」が単なるボタンを押す行為ではなくてロジックを含み、インタフェースを変えられることができます。このため、自動化ができるということは大きな可能性を秘めているわけです。Judgementと平行して自動化を担うServerへWebhookを送ります。このときにspin-gateを叩くために必要な情報を集めるためのPipelineIDをSpELで渡します。必要な情報は以下の通りです。JudgementのStageを特定するIDこれはgetPipelineAPIとPipelineIDを元に求めることができます。これを実現するには以下のようなステージを設けます。Judgementが必要になったイベントをWebhookを使って通知することができます。JudgementのStageで実行がとまり、同時にWebhookによって通知されている状態になっています。Gateにリクエストを送る以下のようなリクエストを送ることで承認をすることができます。application/json"また逆に停止したいときは以下のようなリクエストを送ります。application/json"もちろん、SSOによって認証をかけていたり、何かしらの方法でGATE_URLを守っていると思うのでその場合にはアクセストークンなどを追加してください。JudgementのStageを設ける意味がありません。JudgementにはContinueとStopの選択肢以外にもPipelineで定義したInputを選択できる機能があります。そのような場合には以下のようなリクエストを送るとよいです。application/json"注意点ですがJudementStatusは必須です。自動化によるアプリケーションの例ここまでで自動化の方法は説明しましたがどのような応用例があるでしょうか。JudgementをSlackで行うことができます。JudgementをSlackで承認するこのようにすることによっていちいちUI上で行う必要がなくなります。Functionsを用いましたが、どのようなアプリケーションでもいいです。重要なのはここでロジックを実装することができるようになる点です。APIを使って承認の可否を決めてもいいかもしれません。少なからず、このようにお道具箱として知ることはいいのではないかなと思います。まとめSpinnakerはそれ自体がマイクロサービスになっているため、どのコンポーネントをみても面白いです。ここ3年で大きな機能追加はないものの、UIがv2になったりすこしずつ変更点がありますが基本的な知識はずっと使えます。アーキテクチャやマイクロサービスのそれぞれのコンポーネントを理解することによってより自動化・アプリ化の幅が広がるのではないかなと思います。僕はもっと自分の所属している組織のCI/CDについて向きあっていきたいし、Agilityがより継続的デリバリーによって実現できたら嬉しい。pipeline)によってデプロイされていたらきっとわくわくする。頑張りたいなと思った。自分も久しぶりにSpinnakerの記事を書くことができ、いいリハビリになりました。最後までありがとうございました。KeisukeYamashita。