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 Binaries Manager
Search
hhiroshell
June 24, 2021
Technology
0
1k
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でアプリの安定稼働と高頻度のアップデートを両立するためのプラクティス / Best Practices for Applications on Kubernetesto Achieve Both Frequent Updates and Stability
hhiroshell
10
3.1k
Platform EngineeringにおけるKubernetesの活用法とLINEヤフーにおける事例のご紹介 / Platform Engineering and Kubernetes Findy Lunch LT Edition
hhiroshell
7
1.2k
大規模Webアプリケーションプラットフォームを開発して軌道に乗るまでにやったこと / How to Put Platforms on Track
hhiroshell
2
2.2k
Kubernetesとカスタムコントローラーを活用したプラットフォーム開発・運用の勘所 / Platform Engineering and Kubernetes
hhiroshell
1
800
Best Practices for Applications on Kubernetesto Achieve Both Frequent Updates and Stability
hhiroshell
3
540
Cloud Native Developers JP (cndjp) のご紹介 / about cndjp
hhiroshell
0
140
KustomizeのHash Suffixがあってもいい感じにdiffが見られるkubectlプラグインを作った話 / about kubectl realname-diff
hhiroshell
0
1.4k
JavaアプリをKubernetesで動かすためのチューニングガイド / A tuning guide for running java apps on Kubernetes
hhiroshell
2
3.7k
20,000+行のmanifestをリファクタリングして分かったKustomizeの美しきアーキテクチャと拡張性 / Kustomize deep dive
hhiroshell
5
4.9k
Other Decks in Technology
See All in Technology
よく聞くけど使ったことないソフトウェアNo.1 KafkaとSnowflake
foursue
4
360
KubeConにproposalを送りたい人へのアドバイス
sat
PRO
3
250
Azure Container Apps + Bicep 〜 こんな感じで運用しています
kaz29
2
480
私が trocco を推す理由
__allllllllez__
1
230
JAWS-UG Bedrock Claude Night
yamahiro
3
610
現代CSSフレームワークの内部実装とその仕組み
poteboy
7
3.6k
プロトタイピングによる不確実性の低減 / Reducing Uncertainty through Prototyping
ohbarye
5
390
TechFeed Experts Night#27 〜 フロントエンドフレームワーク最前線 (Svelte)
baseballyama
1
530
レガシーをぶっ壊せ。AEONで始めるDevRelの話 / Qiita Night 2024-2-22
aeonpeople
3
1.3k
Cracking the KubeCon CfP
inductor
2
250
データベース02: データベースの概念
trycycle
0
160
非同期推論システムによるコスト削減と信頼性向上
koki_nishihara
0
260
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
16
2.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
24
2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
244
20k
Infographics Made Easy
chrislema
238
18k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
19
1.7k
Web Components: a chance to create the future
zenorocha
305
41k
Building a Scalable Design System with Sketch
lauravandoore
456
32k
Agile that works and the tools we love
rasmusluckow
325
20k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
104
6.6k
Large-scale JavaScript Application Architecture
addyosmani
504
110k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
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