Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Argo Workflowsのバージョンアップで困った話

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for 三森弘満 三森弘満
September 25, 2024
370

Argo Workflowsのバージョンアップで困った話

Avatar for 三森弘満

三森弘満

September 25, 2024

Transcript

  1. © ASOVIEW Inc. 8 Argo Workflowについて
 • Kubernetesネイティブなワークフローエンジン 
 •

    コンテナ化されたジョブアプリケーションを実行する 
 • yamlファイルでテンプレートを書いて管理する 
 

  2. © ASOVIEW Inc. 10 はじまり バージョンアップしようとしたら...
 ArgoWorkflowを3.5.6へバージョンアップしたら、実行済みジョブ (以下、アーカイブ)をマネジメントコン ソール上でリストされるのですが、想定通り表示されませんでした。 
 


    このバージョンから、それまでアーカイブと実行中のジョブが分けて表示されていたものが、一つの画面 で表示されるようになるUIのアップデートが入っていました。 
 
 上記のアップデートがあり、なおかつアーカイブが多すぎて、アーカイブをリストする SQLがデータベース のメモリを多く利用していることが今回のバージョンアップで明らかになりました。 
 
 このように、Argo Workflowsの製品特性をあまり把握しないまま利用したため、運用上困ることが出て きてしまいました。
 

  3. © ASOVIEW Inc. 11 当時の弊社のArgo Workflowの状況
 • Argo Workflow を導入して以来、アーカイブが溜まっていた。

    
 • アーカイブが200万行ほどになっており、アーカイブをリストする SQLがDBに負荷をかけていた。
 • ジョブの中には、数分おきに実行されるものがいくつかあった。( 1分毎、10分毎)
 • この数分おきに実行されるジョブのアーカイブがネックになっていそうだった。 
 
 => 全てのアーカイブを消すのは、運用上好ましくないため、一部のアーカイブを残さないようにでき ないか検討をしたところ、archiveLabelSelectorを使えばできそうなことがわかった。 

  4. © ASOVIEW Inc. 12 archiveLabelSelectorについて
 アーカイブを取得する判定として、 
 workflow-controller-configmap.yamlに記載したラベルと
 Workflowに付与されたラベルがマッチすることが判定条件となっております。 


    仕組みとしてはラベルセレクターを採用しているようです。 
 
 今回は、
 workflows.argoproj.io/archive-strategy: ”always”
 のラベルがついたWorkflowのアーカイブを残すようにしました。 
 

  5. © ASOVIEW Inc. 13 CronWorkflowとWorkflowTemplateについて
 Argo WorkflowsでのWorkflowを管理するyamlがいくつかありますが、今回気にするのは以下の 2 つです。
 •

    WorkflowTemplate 
 ◦ Workflowのテンプレートです。Workflowで共通に設定したいものをここに書きます。 
 
 • CronWorkflow 
 ◦ 上記のWorkflowの設定 + cronの設定になります。cronの設定とは、実行時間やタイム ゾーンなどのcronの実行の制御に関わるものです。 
 
 なので、Workflow Templateにラベルをつければ、 
 残したいアーカイブとそうでないものの判別をしてくれそう!