1.5K Views
April 10, 25
スライド概要
2025/4/10 初心者歓迎!クラフトビールを楽しむLT会!#2 のLT 資料です。
都内で働いているインフラエンジニアです。Azure を含むMicrosoft 製品、インフラ、開発周りに興味があります。
GitHub Actions Self-Hosted Runner の コンテナイメージをアップデートしなかったために CI/CD 基盤がダウンしたお話 2025/04/10 初心者歓迎!クラフトビールを楽しむLT会!#2 Kazuki Yamabe
アジェンダ • 自己紹介 • 今回お伝えしたいこと • Self-Hosted Runner & Actions Runner Controller • 発生した障害・原因 • 障害に対する対策、気づき • まとめ 2
自己紹介 名前:Kazuki Yamabe 所属:株式会社エーピーコミュニケーションズ 得意分野:Azure、Microsoft 製品、インフラ全般の構築・運用 IaC、CI/CD 構築・運用、など ◼ ブログ・SNS • ブログ:https://www.kdkwakaba.com/ • X:@kdk_wakaba • Linkedin:kdk-wakaba 3
注意事項・お話しないこと • 本内容は2025年4月10日現在の内容となります。今後のアップデートで仕様が変更 される可能性もあるためご了承ください • 本内容では各種ツールの具体的な設定手順はお話しません 4
今回皆さんにお伝えしたいこと ツールのバージョンを固定しても 定期的にアップデート情報を検知し 適切なタイミングで最新のバージョンに ちゃんとアップデートをしましょう! 5
Self-Hosted Runner & Actions Runner Controller ■Self-Hosted Runner • GitHub Actions のワークフローをユーザー所持のマシンで実行するシステム • ユーザー所持のマシンを使うため、スペック、環境のカスタマイズ性が高い • GitHub Hosted と違い従量課金はなし。ただしマシンの運用コストが発生する ■Actions Runner Controller • Self-Hosted Runner のスケールを容易にするためのKubernetes Controller • 一時的なコンテナを実行環境とするため、クリーンな環境でのワークフロー実行 • Helm 管理による運用工数の削減 6
Actions Runner Controller 構成 Controller opentelemetry-controller GitHub Listener arc-systems arc-runners 7
発生した障害・原因 ある日、出社してメール、チャットを確認していると大量のアラートを確認する。 あれ、大量のアラートが発生してる。しかも 全環境のRunner Pod が0台になってる!? メンバーを呼んで確認しなきゃ! 8
発生した障害・原因 ログを見てもめぼしい情報がない。 Pod を再起動してもすぐダウンする…。 9
発生した障害・原因 障害調査中にGitHub Actions のドキュメントでアップデートに関する内容を確認する。 引用元:セルフホステッド ランナーでランナー ソフトウェアの更新を制御する 10
発生した障害・原因 他に手はないしRunner イメージのバージョンを アップデートしてみたら事象が解消した! 11
発生した障害・原因 Self-Hosted Runner は既定でバージョンの自動更新が設定されている。今回事象が 発生したのはActions Runner Controller でEphemeral runner を利用していた。 引用元:セルフホステッド ランナーでランナー ソフトウェアの更新を制御する 12
発生した障害・原因 Runner イメージをカスタマイズするため、イメージのタグを固定させていた。 Runner イメージのタグを固定したことで、古いバージョンのPod がアップデー トのために再起動を繰り返していたため起動しなくなっていた。 13
障害に対する対策、気づき - 障害に対する対策 障害発生後にポストモーテムを行い、障害に対する対策や気づきなどを話し合った。 • GitHub Dependabot による最新のコンテナイメージの検知、通知を追加 - 新しいリリース検知時にはTeams チャネルへ通知しメンバーが気づけるように - 最新バージョンへアップデートした内容のPull Request も自動作成するよう設定 • アップデートプロセスの確立 - メンテナンス作業や通知周りについて再度見直し - 将来的にはアップデートからリリースまでの自動化も行いたい • 障害対応フローの整備 - 障害発生時の通知、エスカレーション先の特定 - ユーザー影響発生時の判断フローの準備 14
障害に対する対策、気づき - 障害発生によって気づいたこと • 運用で不足している部分を見直すきっかけ - 監視の設定、アップデート管理、障害時の体制、など • ユーザー影響に対する意識の改善 - 開発者、リリース担当者への影響について再認識 - CI/CD 基盤の可用性を見直すきっかけに 15
まとめ • 定期的にアップデート情報を把握し、適切なタイミングで最新バージョンにアップデート しましょう - 企業によって頻繁に更新できないケースもあるので、更新しやすい構成、文化形成 も大事 - 利用しているツール、サービスのアップデート情報を追える仕組みの準備や自動化も 検討する • ツール (サービス) のアップデート、EOL の影響は事前に調査しておきましょう 16
ご清聴ありがとうございました。 17