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

self-hosted runnersでAWSコスト削減?

saramune
November 16, 2024

self-hosted runnersでAWSコスト削減?

実践DevOps! 〜KAGとkubellの取り組み〜
https://chatwork.connpass.com/event/334502/

saramune

November 16, 2024
Tweet

More Decks by saramune

Other Decks in Technology

Transcript

  1. #kkdevops 自己紹介 2 • 古屋 啓介 ◦ 株式会社kubell SRE部 ◦

    JAWS-UG SRE支部運営 ◦ AWS Community Builder(2023〜) ◦ ドラム叩きます
  2. #kkdevops (改めて)GitHub Actionsとは 7 GitHub Actions は、ビルド、テスト、デプロイのパイプラインを自動化できる 継続的インテグレーションと継続的デリバリー (CI/CD) のプラットフォームです。

    リポジトリに対するすべての pull request をビルドしてテストしたり、マージされ た pull request を運用環境にデプロイしたりするワークフローを作成できます。 GitHub Actions は、DevOps であるだけでなく、(略 https://docs.github.com/ja/actions/about-github-actions/understanding-github-actions
  3. #kkdevops (改めて)GitHub Actionsとは 8 GitHub Actions は、ビルド、テスト、デプロイのパイプラインを自動化できる 継続的インテグレーションと継続的デリバリー (CI/CD) のプラットフォームです。

    リポジトリに対するすべての pull request をビルドしてテストしたり、マージされ た pull request を運用環境にデプロイしたりするワークフローを作成できます。 GitHub Actions は、DevOps であるだけでなく、(略 https://docs.github.com/ja/actions/about-github-actions/understanding-github-actions よかった、テーマに沿ってた...
  4. #kkdevops GitHub Actionsの利用シーン 9 • CI ◦ 静的解析 ▪ lintとかpolicy

    checkとか ◦ アプリケーションのビルド ▪ コンテナのbuild & pushとか ◦ テスト ▪ E2Eとか • CD ◦ デプロイ ▪ aws deployとかkubectl applyとか
  5. #kkdevops 小ネタ: repository_dispatchの活用 11 • そんなときはrepository_dispatch ◦ 外部からGitHub Actionsを呼び出せるAPI ◦

    認証したうえでRESTで叩く ◦ 諸々の情報も渡せる ビルドとコンテナイメージのpush終わったら k8sマニフェストリポジトリのファイルを 自動で更新したい
  6. #kkdevops え、なんでECR? 14 開発者 Application Manifest (helmfile) Charts ECR EKS

    Push Build & Test Update Push kubectl apply Sync CI Reconciliation Loop • 要因 ◦ 実はテストんときにECRからイメージをPullしなおしている Pull
  7. #kkdevops self-hosted runnersとは 22 A self-hosted runner is a system

    that you deploy and manage to execute jobs from GitHub Actions on GitHub. (中略) Self-hosted runners can be physical, virtual, in a container, on-premises, or in a cloud. https://docs.github.com/ja/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners
  8. #kkdevops self-hosted runnersとは 23 A self-hosted runner is a system

    that you deploy and manage to execute jobs from GitHub Actions on GitHub. (中略) Self-hosted runners can be physical, virtual, in a container, on-premises, or in a cloud. https://docs.github.com/ja/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners
  9. #kkdevops Actions Runner Controllerとは 27 Actions Runner Controller (ARC) is

    a Kubernetes operator that orchestrates and scales self-hosted runners for GitHub Actions. With ARC, you can create runner scale sets that automatically scale based on the number of workflows running in your repository, organization, or enterprise. https://github.com/actions/actions-runner-controller
  10. #kkdevops コラム: ARCの出自 29 • もともとOSSだったのをGitHubが取り込んでくれた! ◦ @summerwind さんによって誕生 ◦

    その後 @mumoshu さんらによって開発・メンテ ◦ OSSとして開発してたらGitHub側がメンテしてくれることに! https://github.com/actions/actions-runner-controller/discussions/2072
  11. #kkdevops • ARCおよびrunnerをEKSにデプロイする ◦ 詳しくは公式ドキュメントを! • runnerをGitHubに登録する ◦ 詳しくは(ry •

    yaml側のruns-onでrunnerを指定する ◦ 実はARC自体はずっと前から動いていたので今回やった対応はここだけ ◦ こんな感じ 設定 30
  12. #kkdevops 実際お得なの? 35 • 減るの ◦ ECRの通信費用 ◦ GitHub Actionsの料金

    • 増えるの ◦ EC2の料金 たーぶん安くなってるはず (他のEC2とかの料金と混ざっちゃうので計算むずい)
  13. #kkdevops self-hosted runnersでAWSコスト削減? 37 • 通信コスト、というGitHub Actions利用時の意外な落とし穴 ◦ もちろん基本的にはめちゃくちゃ便利 •

    ワークロードに近いところでGitHub Actionsを実行することで解決 ◦ self-hosted runnersやActions Runner Controllerを活用 • こんな方法でもコスト削減ができるよ、という一例