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
Custom Kubernetes Controllers at Mercari
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yuki Ito
February 21, 2022
Programming
870
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Custom Kubernetes Controllers at Mercari
Yuki Ito
February 21, 2022
More Decks by Yuki Ito
See All by Yuki Ito
newmo の創業を支える Software Architecture と Platform Engineering
110y
5
3.6k
Modular Monolith Go Server with GraphQL Federation + gRPC
110y
1
1.1k
Modular Monolith + Go @ newmo
110y
1
1.2k
Go + GraphQL @ newmo
110y
3
980
Architect / Platform Team at KAUCHE
110y
1
690
Cloud Run + Observability / Reliability @ KAUCHE
110y
0
670
Cloud Run CI/CD + QA @ KAUCHE
110y
1
670
Microservices on Cloud Run @ KAUCHE
110y
0
310
KAUCHE Loves Go
110y
0
530
Other Decks in Programming
See All in Programming
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
480
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
13
3.6k
Lessons from Spec-Driven Development
simas
PRO
0
150
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
3
1.2k
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
680
AI時代のUIはどこへ行く?その2!
yusukebe
19
6.9k
3Dシーンの圧縮
fadis
1
680
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.3k
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
510
net-httpのHTTP/2対応について
naruse
0
460
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
4.8k
スマートグラスで並列バイブコーディング
hyshu
0
100
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
9
860
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Unsuck your backbone
ammeep
672
58k
New Earth Scene 8
popppiees
3
2.3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
A Tale of Four Properties
chriscoyier
163
24k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
610
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Un-Boring Meetings
codingconduct
0
310
Ruling the World: When Life Gets Gamed
codingconduct
0
250
Transcript
Custom Kubernetes Controllers at Mercari Yuki Ito (@mrno110) Kubernetes Casual
Talk
Merpay / Mercoin Architect Mercari Microservices Platform CI/CD Yuki Ito
@mrno110
Agenda ɾCustom Kubernetes Controllers ɾCode Generation
Agenda ɾCustom Kubernetes Controllers ɾCode Generation
spanner-autoscaler Autoscaler for the Google Cloud Spanner Instances
spanner-autoscaler apiVersion: spanner.mercari.com/v1alpha1 kind: SpannerAutoscaler metadata: name: spannerautoscaler-sample namespace: your-namespace
spec: scaleTargetRef: projectId: your-gcp-project-id instanceId: your-spanner-instance-id minNodes: 1 maxNodes: 4 maxScaleDownNodes: 1 targetCPUUtilization: highPriority: 60 Autoscaler for the Google Cloud Spanner Instances
spanner-autoscaler Google Cloud Day 2020 https://cloudonair.withgoogle.com/events/google-cloud-day-digital?talk=d3-da07
Bootes Bootes Namespace: a Namespace: b app: foo app: bar
app: foo app: bar app: foo app: bar Namespace: c xDS Control Plane Kubernetes Controller
Bootes xDS Control Plane Kubernetes Controller apiVersion: bootes.io/v1 kind: Cluster
metadata: name: example-cluster namespace: foo spec: config: name: example-cluster connect_timeout: 1s type: EDS lb_policy: ROUND_ROBIN http2_protocol_options: {} eds_cluster_config: eds_config: ads: {}
Bootes Envoy Meetup Tokyo #2 https://envoytokyo.connpass.com/event/175256/
Pull Request Replication Controller
Service Routing Controller
Service Routing Controller Merpay Tech Fest 2021 https://events.merpay.com/techfest-2021/
Agenda ɾCustom Kubernetes Controllers ɾCode Generation
Agenda ɾCustom Kubernetes Controllers ɾCode Generation
De fi ne CRDs as Protocol Buffers message Repository {
string owner = 1; string repository = 2; } type Repository struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Owner string `protobuf:...` Repository string `protobuf:...` } Protocol Buffers func (in *Repository) DeepCopyInto(out *Repository) { p := proto.Clone(in).(*Repository) *out = *p } func (in *Repository) DeepCopy() *Repository { if in == nil { return nil } out := new(Repository) in.DeepCopyInto(out) return out } protoc-gen-go protoc-gen-deepcopy
istio / tools / protoc-gen-deepcopy https://github.com/istio/tools/tree/master/cmd/protoc-gen-deepcopy
Generic protoc-gen-deepcopy https://github.com/protobuf-tools/protoc-gen-deepcopy
De fi ne CRDs as Protocol Buffers type Repository struct
{ state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Owner string `protobuf:...` Repository string `protobuf:...` } Protocol Buffers protoc-gen-go type Repository struct { v1.TypeMeta v1.ObjectMeta // Proto Buffer Struct Spec apisv1alpha1.Repository } kubetype-gen
istio / tools / kubetype-gen https://github.com/istio/tools/tree/master/cmd/kubetype-gen
Generic kubetype-gen https://github.com/110y/kubetype-gen
De fi ne CRDs as Protocol Buffers Protocol Buffers protoc-gen-go
/ protoc-gen-deepcopy Protocol Buffer Go Struct (+ DeepCopy) Kubernetes Go Types Custom Resource De fi nitions (YAML) kubetype-gen controller-gen
De fi ne CRDs as Protocol Buffers Protocol Buffers Advanced
Custom Resource De fi nitions (YAML) istio /tools / cue-gen