Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Envtest Binaries Managerを使ってみた話 / About Envtest...
Search
hhiroshell
June 24, 2021
Technology
0
1.2k
Envtest Binaries Managerを使ってみた話 / About Envtest Binaries Manager
Kubernetes Meetup Tokyo #42 で LT しました。
https://k8sjp.connpass.com/event/214286/
hhiroshell
June 24, 2021
Tweet
Share
More Decks by hhiroshell
See All by hhiroshell
CNCFの視点で捉えるPlatform Engineering - 最新動向と展望 / Platform Engineering from the CNCF Perspective
hhiroshell
0
150
Cloud Native Scalability for Internal Developer Platforms
hhiroshell
5
710
LINEヤフーにおける超大規模プラットフォーム実現への挑戦と学び / Challenges and Lessons in Building an Ultra-Large-Scale Platform at LY Corporation
hhiroshell
3
1.7k
Architecting Kubernetes-Based Internal Developer Platforms: Essential Patterns and Practices
hhiroshell
0
250
Discover Your Tailored Platform Strategy with Real-World Practice
hhiroshell
1
270
Kubernetesでアプリの安定稼働と高頻度のアップデートを両立するためのプラクティス / Best Practices for Applications on Kubernetesto Achieve Both Frequent Updates and Stability
hhiroshell
11
4.2k
Platform EngineeringにおけるKubernetesの活用法とLINEヤフーにおける事例のご紹介 / Platform Engineering and Kubernetes Findy Lunch LT Edition
hhiroshell
7
2.5k
大規模Webアプリケーションプラットフォームを開発して軌道に乗るまでにやったこと / How to Put Platforms on Track
hhiroshell
2
2.7k
Kubernetesとカスタムコントローラーを活用したプラットフォーム開発・運用の勘所 / Platform Engineering and Kubernetes
hhiroshell
1
1.7k
Other Decks in Technology
See All in Technology
InsightX 会社説明資料/ Company deck
insightx
0
130
OpenCensusと歩んだ7年間
bgpat
0
280
プロダクト開発と社内データ活用での、BI×AIの現在地 / Data_Findy
sansan_randd
1
710
AIエージェントによる業務効率化への飽くなき挑戦-AWS上の実開発事例から学んだ効果、現実そしてギャップ-
nasuvitz
5
1.5k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
2
190
GCASアップデート(202508-202510)
techniczna
0
190
AI機能プロジェクト炎上の 3つのしくじりと学び
nakawai
0
180
Amazon Q Developer CLIをClaude Codeから使うためのベストプラクティスを考えてみた
dar_kuma_san
0
270
Open Table Format (OTF) が必要になった背景とその機能 (2025.10.28)
simosako
3
560
パフォーマンスチューニングのために普段からできること/Performance Tuning: Daily Practices
fujiwara3
2
180
初海外がre:Inventだった人間の感じたこと
tommy0124
1
140
DSPy入門
tomehirata
6
780
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
116
20k
How STYLIGHT went responsive
nonsquared
100
5.9k
GitHub's CSS Performance
jonrohan
1032
470k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.7k
Designing for humans not robots
tammielis
254
26k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Keith and Marios Guide to Fast Websites
keithpitt
412
23k
What's in a price? How to price your products and services
michaelherold
246
12k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.5k
Transcript
Kubernetes Meetup Tokyo Envtest Binaries Managerを使ってみた話 @hhiroshell 1
Kubernetes Meetup Tokyo 宣伝 しっかり感染対策して遊舎⼯房に⾏きましょう 2 遊舎⼯房さんの店舗はこちら→ ↓現在の@hhiroshellのキーボード #crkbd ⾃⼰紹介
@hhiroshell 早川 博 (はやかわ ひろし) • Cloud Nativeなインフラを開発 するエンジニア。 Yahoo Japan Corporation 所属 • エンジニアコミュニティ 「Cloud Native Developers JP」 オーガナイザー • Developers Summit 2018 Japan Container Days 12.18 CloudNative Days Tokyo 2019 / 2020 登壇 • ⾃作キーボード沼
Kubernetes Meetup Tokyo Envtest Binaries Manager is 何 • カスタムコントローラーのテストで使うツール
• テスト⽤のControl Planeバイナリ(API Server + etcd)を便利に管理 • 2021年6⽉8⽇⽣まれ(リリースタグが付いた) • https://github.com/kubernetes-sigs/controller-runtime/tree/master/tools/setup-envtest 3
Kubernetes Meetup Tokyo その前に…Envtestとは • controller-runtimeに含まれるテストユーティリティのパッケージ • API Serverと組み合わせてカスタムコントローラーの結合テスト⾏う ことができる
• kubebuilderでscaffoldするとEnvtest前提のテストが出⼒されたりする。 なので結構よく使われているのでは 4 【参考】Envtestのgodoc: https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/envtest
Kubernetes Meetup Tokyo Envtestによるカスタムコントローラーのテスト • テストを実⾏する環境上にControl Planeバイナリが必要 5 API Server
& etcd Control Planeバイナリ 起動 (goroutine) watch & edit 起動 (Envtest経由でバイナリ実⾏) 環境変数 KUBEBUILDER_ASSETS で指定されたパス hoge_controller.go suite_test.go hoge_controller_test.go controllerの振る舞いをテスト • hogeリソースを作ったら、配下にfugaリソースが作られる • fugaリソースを消したら、hogeリソースを元に再作成される...etc
Kubernetes Meetup Tokyo Control Planeバイナリを⽤意するのは⼤変 • kubebuilderのドキュメントではこれを⼿動で実施 (curl, tar) •
setup-envtest.sh で多少省⼒化できたが以下のような不便さがあった – 使えるk8sバージョンを調べるのが⼿間 – バージョンを切り替えて使ったり管理するのが⼤変 6 1. 使いたいk8sバージョンのバイナリをダウンロード/展開する 2. Envtestにバイナリの場所を指⽰する(環境変数で指定) 3. テストを実⾏する
Kubernetes Meetup Tokyo Envtest Binary Managerならとても簡単! • 簡単なコマンドでControl Planeバイナリを⼿に⼊れられる •
簡単なコマンドで複数バージョンのバイナリを切り替えられる • 簡単なコマンドでバイナリのパスの環境変数を設定できる • Windows環境でもOK • つまりとても便利 7
Kubernetes Meetup Tokyo 8 Envtest Binaries Manager クイックスタート 1/2 $
go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest • Envtest Binaries Managerのインストール $ setup-envtest use • 最新版のControl Planeバイナリをダウンロード $ setup-envtest list • ダウンロード済み/ダウンロード可能なControl Planeバイナリの⼀覧 $ setup-envtest use 1.21.x • バージョンを指定してControl Planeバイナリをダウンロード
Kubernetes Meetup Tokyo 9 Envtest Binaries Manager クイックスタート 2/2 $
source <(setup-envtest use -i -p env 1.21.x) # export KUBEBUILDER_ASSETS='/Users/hhiroshell/Library/Application Support/io.kubebuilder.envtest/k8s/1.21.2-darwin-amd64' • Control Planeバイナリのパスを環境変数に設定(envtestが使えるよう にする)
Kubernetes Meetup Tokyo おまけ • EnvtestによるテストのGitHub Action(中⾝にEnvtest Binaries Managerを利⽤) –
https://github.com/marketplace/actions/envtest-action 10
Kubernetes Meetup Tokyo まとめ • Envtest Binaries Managerはカスタムコントローラーのテストのときに 使うツールです •
テスト⽤のControl Planeバイナリを便利に導⼊・管理できます 11
Kubernetes Meetup Tokyo Fin. 12
Kubernetes Meetup Tokyo Appendix. 参考リンク集 13
Kubernetes Meetup Tokyo 【参考リンク】 • Envtest Binalies Manager – https://github.com/kubernetes-sigs/controller-runtime/tree/master/tools/setup-envtest
– https://github.com/kubernetes-sigs/controller-runtime/pull/1488 • kubebuilderのドキュメント – https://book.kubebuilder.io/cronjob-tutorial/writing-tests.html – https://book.kubebuilder.io/reference/envtest.html • controller-runtimeのenvtestパッケージ – https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/envtest • setup-envtest.sh(Envtest Binaries Managerの前⾝) – https://github.com/kubernetes-sigs/controller-runtime/blob/v0.8.3/hack/setup-envtest.sh 14