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

EKSでManifestまでTerraformで管理するのが意外とよかった/SRE_NEXT_...

 EKSでManifestまでTerraformで管理するのが意外とよかった/SRE_NEXT_After_2025

リンクアンドモチベーション登壇資料(2025/07/29)

EKSでManifestまでTerraformで管理するのが意外とよかった

#srenext #リンモチ

===========================================
【イベント情報】
■イベントページ
https://timeedev.connpass.com/event/359985/

【株式会社リンクアンドモチベーション】
■お問合せ先
 [email protected]
■テックブログ
 https://link-and-motivation.hatenablog.com/
■開発組織の公式X
 https://x.com/LinkandM_dev
=============================================

More Decks by リンクアンドモチベーション

Transcript

  1. © Link and Motivation Group EKS で Manifest まで Terraform

    で管理するのが 意外とよかった 株式会社リンクアンドモチベーション 篠原昂
  2. 2 © Link andMotivation Group 篠原 昂(@koh_sh) 株式会社リンクアンドモチベーション Developer Productivityユニット

    SREイネーブリンググループ • 2021年7月株式会社リンクアンドモチベーションに SREとして入社。 • モチベーションクラウドの信頼性向上や、開発組織の 生産性向上に取り組んでいる。 自己紹介
  3. 3 © Link and Motivation Group 創業年月日|2000年4月7日 上場市場 |東京証券取引所 プライム市場

    従業員数 |約1,500名 (グループ全体) 売上 |374億 (グループ全体) ※2024年12月期 事業内容 |組織改善を支援する『モチベーションクラウド』を提供 株式会社リンクアンドモチベーション 会社紹介
  4. 6 © Link and Motivation Group 前提 ECS時代のインフラ管理はTerraformメイン • ECS

    Cluster/Service/Task Def • IAM, Lambda, SQS… (ECS以外のAWSリソース) ※ アプリのデプロイ (タスク定義のtag更新) のみスクリプトで実施
  5. 7 © Link and Motivation Group 前提 EKS移行で管理が必要なリソースが変わる • ECS

    Cluster/Service/Task Def (削除) • IAM, Lambda, SQS… (ECS以外のAWSリソース) • EKS Cluster (追加) • Kubernetes Manifest (追加)
  6. 9 © Link and Motivation Group 課題 EKS クラスターは Terraform

    管理でいいとして... Manifest やアプリデプロイの管理方法を考えないといけない プレーンな YAML管理? Kustomize? Helm? Argo CD?
  7. 11 © Link and Motivation Group 課題 • Terraform 管理に加え、新しい仕組みの管理も増える

    • 開発者の学習コストがさらに必要 ① 管理対象が純増する
  8. 12 © Link and Motivation Group k8s層 AWS層 課題 ②

    AWS / k8s リソース間の依存管理が複雑になる SQS App (Shoryuken) YAML Ingress (ALB Controller) Route 53 ALB のホスト名 が必要 追加 起動時に SQS 名が必要 ※ Shoryukenは Ruby SQS Adapter
  9. 15 © Link and Motivation Group ソリューション provider "kubernetes" {

    config_path = "~/.kube/config" } resource "kubernetes_deployment" "example" { metadata { name = "example-deployment" } spec { replicas = 1 selector { match_labels = { app = "example" } } spec { container { name = "example-container" image = "app:${var.app_tag}" } } } } } Terraform でも k8s リソースの構築ができる (公式 Provider)
  10. 18 © Link and Motivation Group k8s層 AWS層 メリット ②

    AWS / k8s リソース間の依存をシンプルに解決できる SQS App (Shoryuken) # K8S DEPLOYMENT resource "kubernetes_deployment" "example" { metadata { name = "example-deployment" } spec { spec { container { name = "app" image = "app:v1.2.3" env { name = "SQS_NAME" value = aws_sqs_queue.example.name # コード内で直接参照することで、 # Terraformが依存解決してくれる } } } } } } # SQS resource "aws_sqs_queue" "example" { name = "example-queue" } 依存参照
  11. 20 © Link and Motivation Group 注意点 全てのリソースを単一の tfstate で管理してしまうと、

    リソース操作を並列に実行できなくなる ステージング QA環境 負荷試験環境 TFSTATE ステージングの tag更新したい QAにbug fix デプロイ中 負荷試験環境の cpu増やしたい コンフリクトするため 直列にterraform apply しないといけない
  12. 21 © Link and Motivation Group 注意点 Terraform の workspace

    などで tfstate 分割が必要 ステージング QA環境 負荷試験環境 TFSTATE ws:qa TFSTATE ws:stg TFSTATE ws:perf ステージングの tag更新中 QAにbug fix デプロイ中 負荷試験環境の cpu増やし中
  13. 22 © Link and Motivation Group まとめ Terraform での Manifest

    管理はいいぞ • 学習/運用コストを増やさない • 関連 AWS / k8s リソースをまとめて管理 • tfstate 管理がポイント AIでのコード生成 にも便利!