Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
JCConf 2021 Access Kubernetes API in Java
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Shihyu Ho
November 19, 2021
Technology
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JCConf 2021 Access Kubernetes API in Java
Access Kubernetes API in Java
Shihyu Ho
November 19, 2021
More Decks by Shihyu Ho
See All by Shihyu Ho
JCConf 2024 Jib
shihyuho
0
130
JCConf 2022 - Using ArchUnit to test your architecture
shihyuho
0
180
hybrid-cloud-seminar.pdf
shihyuho
0
140
JCConf 2020 Observing in Microservices
shihyuho
0
960
iThome Kubernetes Summit 2018
shihyuho
0
92
JCConf 2016 zookeeper
shihyuho
0
110
Other Decks in Technology
See All in Technology
AI時代に求められる優秀なTechLeadの振る舞い
pospome
11
15k
AWS Quick 入門 | 目指せ Quick マスター 01
inariku
PRO
2
260
生成AI時代のIAMのマニアックな話
takuros
6
2.8k
内製アプリとClaudeスキルのセキュリティチェック、 Backlogの課題で回しています。
ayaka_egaaa
0
160
お客様の「やりたい」の先を見通す合意形成プロセス ~裏にある課題と不安を解きほぐすコツ~
yukakoseki
0
130
HQ駆動開発で最高のAI-Contextを作ろう
sansantech
PRO
1
120
長い仕事を任せる (Workflows、クラウドセッション、Kiro Web) | 目指せ Kiro マスター 10
inariku
PRO
3
150
プロダクションコードにおける encoding/json から encoding/json/v2 へのスムーズな移行
sansantech
PRO
1
230
属人化したISMS運用をGitHubとAIで仕組み化した1年間の記録
sioncojp
4
1.8k
視野はAIに、視座は人に / ai-for-breadth-humans-for-perspective
nkzn
6
3.2k
FinOpsを導入してマルチプロダクトのコスト最適化を実現する
kworkdev
PRO
0
140
公共分野での生成AI活用
toru_kubota
1
310
Featured
See All Featured
Bash Introduction
62gerente
615
220k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
The Curious Case for Waylosing
cassininazir
1
610
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1.1k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
350
The Mindset for Success: Future Career Progression
greggifford
PRO
0
560
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
610
How to Ace a Technical Interview
jacobian
280
24k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
740
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
390
Transcript
JCConf Taiwan 2021 Access Kubernetes API in Java Matt Ho
Access Kubernetes API in Java
Hi, I'm Matt https://github.com/shihyuho
[email protected]
@SoftLeader Access Kubernetes API in
Java
Requirements Some experience with Java and Spring. Basic understanding of
Kubernetes. YAML language. Access Kubernetes API in Java
你爲什麼會需要去跟 Kubernetes 互動? Access Kubernetes API in Java
Kubernetes Architecture Access Kubernetes API in Java
Kubernetes Architecture Access Kubernetes API in Java
環境準備 Local Kubernetes cluster 推薦: docker + minikube # Start
the cluster $ minikube start # Configure environment to use minikube’s Docker daemon $ eval $(minikube docker-env) # Halt the cluster $ minikube stop Access Kubernetes API in Java
環境準備 A simple web app w/ Spring Boot $ curl
https://start.spring.io/starter.zip \ -d dependencies=web,lombok,devtools \ -d bootVersion=2.5.7 \ -o demo.zip Access Kubernetes API in Java
環境準備 Add the following dependency to your pom.xml file: <dependency>
<groupId>io.fabric8</groupId> <artifactId>kubernetes-client</artifactId> <version>5.10.1</version> </dependency> <!-- Optional --> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> <version>1.5.12</version> </dependency> Access Kubernetes API in Java
Kubernetes Java Client Officially-supported - kubernetes-client/java Community-maintained - fabric8io/kubernetes-client Access
Kubernetes API in Java
起手式 try (var client = new DefaultKubernetesClient()) { client.{apiGroup}.{apiVersion}.{resource}.{verb}... }
Access Kubernetes API in Java
kubectl get pod -n default kubectl get service -A kubectl
get deploy -l my=label kubectl get cronjob myjob Access Kubernetes API in Java
A Hello Pod apiVersion: v1 kind: Pod metadata: name: hello
spec: containers: - name: hello image: busybox imagePullPolicy: IfNotPresent command: ["sh", "-c", "echo Hello JCConf Taiwan; sleep 2"] restartPolicy: Never Access Kubernetes API in Java
Builder Pattern new {Resource}Builder() .withNew{FieldObject} .with{Field}(...) .with{Field}(...) .end{FieldObject} .build(); Access
Kubernetes API in Java
Packing Image mvn compile com.google.cloud.tools:jib-maven-plugin:3.1.4:dockerBuild -Djib.to.image=demo:1.0.0 # mvn spring-boot:build-image -Dspring-boot.build-image.imageName=demo:1.0.0
Access Kubernetes API in Java
Deploy apiVersion: apps/v1 kind: Deployment metadata: name: demo spec: selector:
matchLabels: app: demo template: metadata: labels: app: demo spec: containers: - name: demo image: demo:1.0.0 Access Kubernetes API in Java
Kubernetes RBAC Access Kubernetes API in Java
Kubernetes RBAC Access Kubernetes API in Java
Kubernetes RBAC Access Kubernetes API in Java
apiVersion: v1 kind: ServiceAccount metadata: name: demo namespace: default ---
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: demo rules: - apiGroups: [ "" ] resources: [ "pods" ] verbs: [ "get", "list", "watch", "create", "update", "patch", "delete" ] - apiGroups: [ "" ] resources: [ "events" ] verbs: [ "list" ] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: demo roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: demo subjects: - kind: ServiceAccount name: demo namespace: default Access Kubernetes API in Java
Recap Basic understanding of Kubernetes API. How to access Kubernetes
API in Java. How to configure access control to the app. Demo code. Access Kubernetes API in Java
Thank you Access Kubernetes API in Java