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
How to utilize GKE for QA environment
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Kenichi Masuda
June 18, 2018
Technology
1.4k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
How to utilize GKE for QA environment
Kenichi Masuda
June 18, 2018
More Decks by Kenichi Masuda
See All by Kenichi Masuda
2022-09-05 「明日から新規事業を作ってみよう(実践編)」トヨタ車体株式会社様ウェビナー
masudak
0
770
2022-08-10「明日から新規事業を作ってみよう」トヨタ車体株式会社様向けウェビナー
masudak
1
600
2022-09-05 「明日から新規事業を作ってみよう(実践編)」トヨタ車体株式会社様ウェビナー
masudak
0
68
2022-06-09「新規事業担当に必要な要素とは」ヤマトシステム開発株式会社様向けウェビナー
masudak
0
850
Development/QA environments and the Go tools in it
masudak
0
7.3k
Introduction of mercari SET team
masudak
0
13k
Recommendation for using your own tools
masudak
1
5.6k
Other Decks in Technology
See All in Technology
SteampipeとExcel Power QueryでAWS構成定義書の作成を自動化する
jhashimoto
0
180
元銀行員がAIだけでアプリを量産!「バイブコーディング実演セミナー 」
tatsuya1970
0
110
自宅LLMの話
jacopen
1
720
不要なレビューをAIにまかせて AIコーディングの環境改善を加速した
shoota
1
270
2026-06-24_人とAIの責務分離に基づく開発プロセスの提案.pdf
takahiromatsui
0
180
入門!AWS Blocks
ysuzuki
1
190
AIはどのように 組織のアジリティを変えるのか?
junki
4
1.4k
從開發到部署全都交給 AI:實作 AI 驅動的自動化流程
appleboy
0
170
2026年6月23日 Syncable Tech + Start Python Club にて
hamukazu
0
150
自分が詳しくない領域でAIを使う #プロヒス2026
konifar
20
7.5k
“詰む”前に仕組みを作れ 〜技術の波に溺れないためのキャッチアップ術〜
takasyou
7
3.9k
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
11k
Featured
See All Featured
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Documentation Writing (for coders)
carmenintech
77
5.4k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Six Lessons from altMBA
skipperchong
29
4.3k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
170
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
740
Facilitating Awesome Meetings
lara
57
7k
Building the Perfect Custom Keyboard
takai
2
800
We Are The Robots
honzajavorek
0
250
The SEO identity crisis: Don't let AI make you average
varn
0
500
Abbi's Birthday
coloredviolet
3
8.2k
Transcript
How to utilize GKE for QA environment @masudak GCPUG Tokyo
June 2018
About me • @masudak ますだっくと呼ばれてます • 2016年4月入社 • SET(Software Engineer
in Test) • 最近感動したもの: ルンバ(自動化素晴らし い)
SET (Software Engineer in Test)
About SET • 2011年にGoogleが設立 • 「開発生産性とプロダクト品質の向上」がテー マ • SDET, SWETなど色々な名称ある
• メルカリSETは2016年10月設立 • 2017年春に出るUKアプリがトリガー • 当時作ったもの ◦ ローカル開発環境 ◦ QA環境 ◦ UIテスト自動化
開発フロー
開発フロー • PMが仕様をJIRAでFIX • エンジニア・デザイナーが「ローカル開発環 境」で実装 • PRを他のメンバーにレビューしてもらう • LGTM
• 「QA環境」でQAエンジニアがマニュアルQA • PMがリリース承認 • エンジニアがリリース
QA環境
QA環境 • QAエンジニアやエンジニアがQAするところ • 共通のDBや検索データを持つ • API, Frontend, Admin, Webなどが動く
• 他の人に影響を受けない独立した環境 • 独立したエンドポイント • トピックをデプロイ
QA環境要件 • 自分専用の環境 • 共通のWebUIからデプロイ • スケールしやすい • 可能な限り本番の構成を反映
2017年春
2017年春 • USアプリの刷新をすることに • PHP -> Go • Monolithic ->
Microservices • Kubernetes on GCP • 「いい感じ」でアプリをデプロイしたい
2017年前半 • CircleCIのビルド中にデプロイ • 新しい環境が自動的に • HTTPヘッダを見て、プロキシ
CircleCI • テストだけでなくreviewdogとかカバレッジと か • gcloud SDKやDockerのインストール • 古いpods削除 •
マニフェストファイルのテンプレートを書き換 え $ kubectl get pods --no-headers --selector='app=XXXX-api' | cut -f1 -d' ' | xargs kubectl delete pod そのあと $ make setup-branch-k8s
書き換え setup-branch-k8s: $(eval PR_NUMBER := $(shell basename ${CIRCLE_PULL_REQUEST})) sed -ie
"s/{{ PR_NUMBER }}/$(PR_NUMBER)/gi" ./tools/kubernetes/XXX-branch.tmpl.yml sed -ie "s/{{ BUILD_NUMBER }}/$(CIRCLE_BUILD_NUM)/gi" ./tools/kubernetes/XXX-branch.tmpl.yml /google-cloud-sdk/bin/kubectl apply -f ./tools/kubernetes/
Go reverse proxy director := func(req *http.Request) { xPrNumber :=
req.Header.Get("X-FOOBAR-PR") apisPort := 4000 req.URL.Scheme = "http" if xPrNumber != "" { req.URL.Host = fmt.Sprintf("foobar-api-%s:%d", xPrNumber, apisPort) } else { req.URL.Host = fmt.Sprintf("foobar-api:%d", apisPort) }
2017年後半
Spinnaker • CircleCIからはGCRにイメージをプッシュするだけ • それをトリガーにSpinnakerからデプロイ • オレオレyamlテンプレートがなくなる • とは言え、まだWebUI中心 •
PR podsに対応できてない
2017年後半 • reconciliation loop ◦ In Kubernetes, a controller is
a control loop that watches the shared state of the cluster through the apiserver and makes changes attempting to move the current state towards the desired state. deeeet氏: PRのstateをdesired stateとしよう!
K8s Controller for PR • ループしながら、PRの状況をチェック • Openだったら、既存のRSを複製 • 環境変数などを書き換え
• desired stateを変更 • k8sがそのdesiredに近づけていく • PR用のRS完成 • 必要に応じて、external-dnsでドメイン付与 もしかしたら、kustomizeに置き換わる運命???
終わりに • 開発生産性も品質もまだまだ追求できる • 開発環境だから、QA環境だからで終わらせない • 開発速度を上げるのはすごく大事 • たった一つのVMの時代から2年でここまで来た •
parityなどを考えるとまだまだ課題は多い • 是非情報交換していきましょう
We are hiring!! • ソフトウェアエンジニア(SET: Software Engineer in Test) •
ソフトウェアエンジニア(SET iOS: Software Engineer in Test iOS)
ご清聴 ありがとうございました