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
Cloud Native Scalability for Internal Developer Platforms
hhiroshell
2
510
LINEヤフーにおける超大規模プラットフォーム実現への挑戦と学び / Challenges and Lessons in Building an Ultra-Large-Scale Platform at LY Corporation
hhiroshell
3
1.6k
Architecting Kubernetes-Based Internal Developer Platforms: Essential Patterns and Practices
hhiroshell
0
210
Discover Your Tailored Platform Strategy with Real-World Practice
hhiroshell
1
250
Kubernetesでアプリの安定稼働と高頻度のアップデートを両立するためのプラクティス / Best Practices for Applications on Kubernetesto Achieve Both Frequent Updates and Stability
hhiroshell
11
4.1k
Platform EngineeringにおけるKubernetesの活用法とLINEヤフーにおける事例のご紹介 / Platform Engineering and Kubernetes Findy Lunch LT Edition
hhiroshell
7
2.3k
大規模Webアプリケーションプラットフォームを開発して軌道に乗るまでにやったこと / How to Put Platforms on Track
hhiroshell
2
2.6k
Kubernetesとカスタムコントローラーを活用したプラットフォーム開発・運用の勘所 / Platform Engineering and Kubernetes
hhiroshell
1
1.5k
Best Practices for Applications on Kubernetesto Achieve Both Frequent Updates and Stability
hhiroshell
3
740
Other Decks in Technology
See All in Technology
Oracle Audit Vault and Database Firewall 20 概要
oracle4engineer
PRO
2
1.6k
25分で解説する「最小権限の原則」を実現するための AWS「ポリシー」大全 / 20250625-aws-summit-aws-policy
opelab
6
670
登壇ネタの見つけ方 / How to find talk topics
pinkumohikan
1
140
2年でここまで成長!AWSで育てたAI Slack botの軌跡
iwamot
PRO
2
130
Observability в PHP без боли. Олег Мифле, тимлид Altenar
lamodatech
0
260
Uniadex__公開版_20250617-AIxIoTビジネス共創ラボ_ツナガルチカラ_.pdf
iotcomjpadmin
0
140
キャディでのApache Iceberg, Trino採用事例 -Apache Iceberg and Trino Usecase in CADDi--
caddi_eng
0
170
Definition of Done
kawaguti
PRO
6
450
OAuth/OpenID Connectで実現するMCPのセキュアなアクセス管理
kuralab
5
790
Microsoft Build 2025 技術/製品動向 for Microsoft Startup Tech Community
torumakabe
1
200
本当に使える?AutoUpgrade の新機能を実践検証してみた
oracle4engineer
PRO
1
120
JSX - 歴史を振り返り、⾯⽩がって、エモくなろう
pal4de
3
1.1k
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
52
7.6k
Into the Great Unknown - MozCon
thekraken
39
1.8k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Become a Pro
speakerdeck
PRO
28
5.4k
Git: the NoSQL Database
bkeepers
PRO
430
65k
KATA
mclloyd
29
14k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.6k
Code Reviewing Like a Champion
maltzj
524
40k
Code Review Best Practice
trishagee
68
18k
Done Done
chrislema
184
16k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
660
Optimizing for Happiness
mojombo
379
70k
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