Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
K8sをTerraformで管理してみた
Search
SHIFT EVOLVE
PRO
July 26, 2021
Business
620
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
K8sをTerraformで管理してみた
SHIFT EVOLVE
PRO
July 26, 2021
More Decks by SHIFT EVOLVE
See All by SHIFT EVOLVE
価値実現重視へとシフトした時代を生き抜くには / 20260713 Takeshi Watarai
shift_evolve
PRO
1
84
SHIFTのコミュニティ活動 / 20260828 Yumiko Ohata
shift_evolve
PRO
2
85
AI活用によるレガシーモダナイゼーションとプロジェクトマネジメント / 20260827 Tsukasa Takemura & Takashi Maekawa
shift_evolve
PRO
0
95
兼務の事務局から、組織へ SHIFTのAWSアライアンス立ち上げ記 / 20260807 Satoshi Torano
shift_evolve
PRO
1
88
AIは実装を速くする。では、私たちは何を今作るべきか?-立場を越えてリリースに向き合ったチーム開発の実践 / 20260801 Hiromi Nakaya and Naoki Takahashi
shift_evolve
PRO
3
1.4k
Issue設計から始める仕様駆動開発 / 20260731 Mizuki Hirata
shift_evolve
PRO
1
330
”そのまま移行”からの脱却へ ― AI解析で実現するSAP S/4HANA導入成功メソッド / 20260729 Akio Hane
shift_evolve
PRO
1
92
区民の問い合わせ、AIにどこまで任せる? 品川区×SHIFTが挑む自治体音声AI実証の現在地 / 20260626 Taku Nishizawa and Satoshi Torano
shift_evolve
PRO
1
290
コミュニティを、仕事にした。‐ 学びの場が会社の価値になるまで / 20260724 Ayana Chandler
shift_evolve
PRO
0
190
Other Decks in Business
See All in Business
会社説明資料(新卒採用)
witsjp
0
220
なぜデベロッパーアドボカシーが必要なのか?
taiponrock
PRO
0
190
事業領域
daisan123
0
840
202609_UPDATER_companysummary
updater_pr
0
170k
地方自治体向け地域脱炭素・再エネ推進支援・コンサルティング事例・ソリューション資料
satoru_higuchi
PRO
1
490
ラス恋カンパニーデック_260907
laskoi
0
770
[AWS大喜利]こんなアーキテクチャは嫌だ ~コスト編~
kazuma777777
1
790
株式会社うるる エンジニア向け採用資料
uluru_hr
3
140k
Macbee Planet_会社紹介資料
macbeeplanet
0
230
“隣のチームの改善の取り組み”を見える化 すれば、チームはもっと良くなると思っていた。同じ部署 19チーム・243件 の取り組みを見える化した記録と、見えてきた 壁と価値
hansodeeeeee
2
910
uniam_事業概要.pdf
uniam
PRO
0
620
株式会社レボルト採用deck
takemura_yuto
0
230
Featured
See All Featured
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
3
4.3k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Statistics for Hackers
jakevdp
799
230k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
500
Into the Great Unknown - MozCon
thekraken
41
2.7k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
350
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
420
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
520
Leo the Paperboy
mayatellez
10
2.3k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.2k
Transcript
K8sをTerraformで管理してみた 開発支援プロダクト推進部 CAT開発 小田柿 敦士
Terraformでもk8s上のアプリ管理ができ るって知ってました? ◦ クラウドリソースの管理 ◦ ネットワーク(VPC/サブネット) ◦ コントロールプレーン(EKS) ◦ ワーカーノード(EC2/Autoscaling
Group) ◦ etc. ◦ ⇒ これらがTerraformで管理できるのは普通に分かる ◦ K8s上のアプリのインストール・更新・削除 ◦ ⇒ 実はこれもTerraformで実行できます
【本番運用課題】 K8sマニフェストのテンプレート化ツール選定 候補ツール 事前調査結果 Helm • Helmチャートを自分で作るのは敷居が高そう(学習コスト高そう) • 複雑なことができそう(OSS公開するなら必須のようだ、、、) Kustomize
• 学習コスト低そう • kubectlコマンドの付随してくるので利用の敷居も低そう Terraform • クラウドリソース管理と併せて管理を一元化できる • ベトナムメンバーFooさんイチ押し ⇒ 採用 ◦ 実際の運用では dev/stg/prod で構成や設定値が異なる ◦ テンプレートと設定ファイルを分けて、環境ごとの差分だけ設定値として管理したい ◦ ⇒ K8sマニフェストのテンプレート化ツールが必要
【機能】 k8sアプリ管理でTerraformができること ◦ K8sマニフェストのテンプレート化&適用 ◦ プロバイダ: kubernetes provider ◦ 参考
https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs ◦ リソース: kubernetes_xxx (k8sオブジェクトの種類ごと) ◦ kubernetes_deployment, kubernetes_service, kubernetes_config_map, kubernetes_secret, ◦ kubernetes_daemonset, kubernetes_job, kubernetes_ingress, … ◦ Helmリポジトリに公開されているアプリの導入・更新 ◦ プロバイダ: helm provider ◦ リソース: helm_release (helmコマンドの代替) ◦ 参考 https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release
【実装】 K8sマニフェストのテンプレート化&適用 通常のマニフェストYAML resource "kubernetes_deployment" "nginx" { metadata { name
= "nginx-deployment" labels = { app = "nginx" } } spec { replicas = 3 selector { match_labels = { app = "nginx" } } template { metadata { labels = { app = "nginx" } } spec { container { image = "nginx:1.14.2" name = "nginx" port { container_port = 80 } } } } } } ② 変数定義埋め込み ⇒ テンプレート化 ③ Terraform実行 → 適用 HCL = HashiCorp configuration language = JSONぽい?Terraform独自記法 ※YAMLを単純に変換できないのがハマりどころ HCL形式のマニフェスト この例では分かりにくいが、配列の表現形式が違う のが厄介(都度ドキュメントの確認が必要なレベル) ① HCLに変換
【実装】 Helmリポジトリ公開アプリインストール URL・チャート名・バージョンを指定 設定ファイル指定: 通常の設定用YAMLファイルが指定可 設定値の上書き定義作成 ここにTerraformの変数定義を適用する ⇒ 設定YAMLファイルが簡単にテンプレート化できる HCL化不要で
とても簡単! ② Terraform実行 一連のhelmコマンドが実行される ① Terraformコード作成(helm_release)
【感想】 実際導入してみて… ◦ 慣れれば問題なく使える ◦ クラウドリソースのエンドポイント等をTfstateから取得し て利用できるのでアプリ-リソース間連携設定は容易 ◦ Helmリポジトリ上の公開アプリインストールはまあ便利 ◦
が、特段おすすめするほどでもない
【問題点】 積極的に勧められない理由 ◦ Terraform公式ドキュメント以外にHCLでのマニフェスト例 がほぼない ◦ ⇒ 調べたマニフェストYAMLをHCLに変換する作業が頻発 ◦ ⇒
HCLの書き方も都度調べることになり学習コストが増大 ◦ K8s:宣言的構成管理が売りだが… ◦ ⇒ Terraformを挟むとTfstate(状態)管理が発生 ◦ ⇒ 管理コストはさほどでもないが何か違和感。。。 ◦ AWSリソースとk8s上のアプリでは更新頻度も管理体系も そもそも別 ◦ ⇒ Terraformに統一することによる恩恵があまりない