shibatch's journey

日々考えていることをつらつら書くだけです

skaffoldでのデプロイに時間がかかっていたのでやったこと2つ

skaffoldというKubernetesでbuild〜push〜deployを一気通貫にやってくれるツールがあります。 GitHub Workflowでskaffoldを叩いてdeployする運用をやっているのですが、これが最近とても遅く(1時間とかかかってた…)改善するべく2つのことをやったのでメモ。

BuildKitを有効化する

これを有効化するとリモートキャッシュが有効化されてビルド時間が短くなりました。例えば、staging環境でbuild〜deployしたものをそのままproduction環境でdeployする、といった場合はリモートキャッシュのデータをそのまま使ったりしてbuild自体スキップしたりします。

skaffold.yamlに以下の設定を入れるだけです。

     artifacts:
     - image: containers.repo.com/example/package
       context: ../
+    local: 
+      useBuildkit: true 

↓のようなログが出てくれば、リモートキャッシュが使われている証拠。

 - containers.repo.com/example/package: Found Remotely

deploy完了後のステータスチェックをやめる

skaffold run コマンドでbuild〜push〜deployまで一気通貫にできるのですが、デフォルトだとdeployした後Podがすべてupdateされるまで待ち、ステータスチェックをします。

この場合、たとえば100Pod立っていてローリングアップデートを少しずつ(5%とか…)するような運用にしている場合、延々と完了を待つことになります。

これがむちゃくちゃに時間がかかっていたのでやめました。

skaffold run -f ./skaffold.yaml -p $SKAFFOLD_ENV --status-check=false

↑このstatus-check=false の部分

これでCIで延々とdeploy終わらん〜〜という状況は無くなりました。(1時間→5分くらいになった)

CI完了=ローリングアップデート完了 ではなくなる点は留意が必要。でもやってよかったです。