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
Yuki Ito
February 21, 2022
Programming
880
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.7k
Modular Monolith Go Server with GraphQL Federation + gRPC
110y
1
1.2k
Modular Monolith + Go @ newmo
110y
1
1.3k
Go + GraphQL @ newmo
110y
3
990
Architect / Platform Team at KAUCHE
110y
1
720
Cloud Run + Observability / Reliability @ KAUCHE
110y
0
680
Cloud Run CI/CD + QA @ KAUCHE
110y
1
680
Microservices on Cloud Run @ KAUCHE
110y
0
320
KAUCHE Loves Go
110y
0
540
Other Decks in Programming
See All in Programming
VibeCodingからAgenticWorkflowへ
starfish719
0
860
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
360
typoなんかねぇよ
raspython3
0
540
30年振りにコンパイラの定数整数除算を改善した
herumi
9
4.2k
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
2
440
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.8k
React本体のコードリーディング
high_g_engineer
1
160
Go 1.27 における memory allocation の高速化
andpad
0
320
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
430
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
150
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
120
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
390
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Making the Leap to Tech Lead
cromwellryan
135
10k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
The Invisible Side of Design
smashingmag
301
52k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.4k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
480
Evolving SEO for Evolving Search Engines
ryanjones
0
260
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.2k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
440
Accessibility Awareness
sabderemane
1
180
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