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
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Envtest Binaries Managerを使ってみた話 / About Envtest Binaries Manager
Kubernetes Meetup Tokyo #42 で LT しました。
https://k8sjp.connpass.com/event/214286/
hhiroshell
June 24, 2021
More Decks by hhiroshell
See All by hhiroshell
Maximizing Launch Reliability: Controlled Lift-off for Reliable Application Startup on Kubernetes
hhiroshell
0
49
Kubernetes Multi-tenancy: Principles and Practices for Large Scale Internal Platforms
hhiroshell
0
250
Platform Engineering from the CNCF Perspective
hhiroshell
0
85
Maximizing the Launch Reliability: Ensuring Stable Application Lift-off and Orbit on Kubernetes
hhiroshell
0
130
CNCFの視点で捉えるPlatform Engineering - 最新動向と展望 / Platform Engineering from the CNCF Perspective
hhiroshell
0
380
Cloud Native Scalability for Internal Developer Platforms
hhiroshell
5
910
LINEヤフーにおける超大規模プラットフォーム実現への挑戦と学び / Challenges and Lessons in Building an Ultra-Large-Scale Platform at LY Corporation
hhiroshell
3
1.9k
Architecting Kubernetes-Based Internal Developer Platforms: Essential Patterns and Practices
hhiroshell
0
320
Discover Your Tailored Platform Strategy with Real-World Practice
hhiroshell
1
320
Other Decks in Technology
See All in Technology
コンポーネント名には何を含めるべきなのか? / what-should-be-included-in-component-names
airrnot1106
0
190
ここは地獄!つらい朝会を体験することで、チームとしてのより良い振る舞いに気づくワークショップ / The stand-up meeting from hell in the game industry
scrummasudar
0
440
なぜ、あなたのエージェントは言うことを聞かないのか
segavvy
1
580
13年運用タイトルのサーバーサイドが辿り着いた現在地 ― モンスターストライクにおける技術・組織・AI活用から得た知見
mixi_engineers
PRO
1
330
AIがAPIを書く時代に、私たちは何を設計すべきか
nagix
0
160
LLMリーダーボードアップデートに向けたAgentic Math_SWEのトレースについて
nejumi
0
140
現場をAIで動かす「フィジカル AI」の組み込み設計の考え方【SORACOM Discovery 2026】
soracom
PRO
0
150
LangfuseによるLLMOps基盤の構築と活用事例
zozotech
PRO
1
170
WEBフロントエンド研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
1
750
AI駆動開発は個人技からチーム戦へ:組織でAIを使いこなすための実践設計
moongift
PRO
0
290
AIツールを導入しても生産性はあがらない? カオナビが直面した 3つの壁と乗り越え方。/ Overcoming 3 Barriers to AI-Driven Productivity at kaonavi
kaonavi
0
460
テックカンファレンス三大ステークホルダーの文化人類学 ─ 違いを認め合う関係性作り
bash0c7
5
1.2k
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
340
A designer walks into a library…
pauljervisheath
211
24k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Paper Plane (Part 1)
katiecoart
PRO
1
9.9k
The untapped power of vector embeddings
frankvandijk
2
1.8k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
330
A better future with KSS
kneath
240
18k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
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