$30 off During Our Annual Pro Sale. View Details »
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.3k
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
Kubernetes Multi-tenancy: Principles and Practices for Large Scale Internal Platforms
hhiroshell
0
130
Platform Engineering from the CNCF Perspective
hhiroshell
0
43
Maximizing the Launch Reliability: Ensuring Stable Application Lift-off and Orbit on Kubernetes
hhiroshell
0
66
CNCFの視点で捉えるPlatform Engineering - 最新動向と展望 / Platform Engineering from the CNCF Perspective
hhiroshell
0
240
Cloud Native Scalability for Internal Developer Platforms
hhiroshell
5
760
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
270
Discover Your Tailored Platform Strategy with Real-World Practice
hhiroshell
1
280
Kubernetesでアプリの安定稼働と高頻度のアップデートを両立するためのプラクティス / Best Practices for Applications on Kubernetesto Achieve Both Frequent Updates and Stability
hhiroshell
11
4.5k
Other Decks in Technology
See All in Technology
なぜ あなたはそんなに re:Invent に行くのか?
miu_crescent
PRO
0
200
「図面」から「法則」へ 〜メタ視点で読み解く現代のソフトウェアアーキテクチャ〜
scova0731
0
490
AI との良い付き合い方を僕らは誰も知らない
asei
0
250
通勤手当申請チェックエージェント開発のリアル
whisaiyo
3
450
ペアーズにおけるAIエージェント 基盤とText to SQLツールの紹介
hisamouna
2
1.6k
Bedrock AgentCore Memoryの新機能 (Episode) を試してみた / try Bedrock AgentCore Memory Episodic functionarity
hoshi7_n
2
1.8k
日本の AI 開発と世界の潮流 / GenAI Development in Japan
hariby
1
390
20251218_AIを活用した開発生産性向上の全社的な取り組みの進め方について / How to proceed with company-wide initiatives to improve development productivity using AI
yayoi_dd
0
650
AI時代のワークフロー設計〜Durable Functions / Step Functions / Strands Agents を添えて〜
yakumo
3
2.1k
AWS運用を効率化する!AWS Organizationsを軸にした一元管理の実践/nikkei-tech-talk-202512
nikkei_engineer_recruiting
0
170
半年で、AIゼロ知識から AI中心開発組織の変革担当に至るまで
rfdnxbro
0
140
マイクロサービスへの5年間 ぶっちゃけ何をしてどうなったか
joker1007
19
7.6k
Featured
See All Featured
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
69
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
30
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.3k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Building Applications with DynamoDB
mza
96
6.8k
Facilitating Awesome Meetings
lara
57
6.7k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
17
It's Worth the Effort
3n
187
29k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
91k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
110
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