SlideShare une entreprise Scribd logo
1  sur  75
Télécharger pour lire hors ligne
Build your own
kubectl plugin
using Quarkus
Sebastien Blanc
● @sebi2706
● sblanc@redhat.com
● Currently Red Hat’s Director of Developer Experience
● Java Champion
● Passion-Driven-Developer with one goal : share his
passion by giving talks that are pragmatic, fun and
focused on live coding
kubectl
Kubectl > pronunciation fight
Disclaimer
Pronounce “kubectl” as you want :-)
Kubectl > kubernetes tool/cli
Kubectl > a very logical CLI!
Kubectl > a very logical CLI!
Kubectl > a very logical CLI!
Kubectl > cool, but can i extend it?
Kubectl plugins
Kubectl: tied to core release cycle
Wants to implement a new feature in Kubectl?
So … Forget about it and think about plugins instead ;-)
KuberneteS, an extensible world
Plugins > Why it’s useful?
Extend kubectl with extra functionality
that still feels like kubectl
● e.g. kubectl service-catalog [...]
Encapsulate repetitive workflow
● e.g checking a secret resource, check logs
Plugins > language agnostic!
1. Create a file named kubectl-myplugin
Kubectl plugin > How it works?
15
1. Create a file named kubectl-myplugin
2. Make it executable
Kubectl plugin > How it works?
16
1. Create a file named kubectl-myplugin
2. Make it executable
3. Put it in your PATH
Kubectl plugin > How it works?
17
1. Create a file named kubectl-myplugin
2. Make it executable
3. Put it in your PATH
4. Run “kubectl myplugin”
Kubectl plugin > How it works?
18
https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/
1. How to manage the CLI options and parameters ?
2. How to make it interact with a cluster ?
3. How to quickly bootstrap a project ?
4. How to make it executable ?
5. How to make it fast ?
Kubectl plugin > Using Java ?
19
https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/
PLUGIN
PARAMETER
OPTION
Kubectl plugin > Handle parameters and options
20
https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/
Meet picocli
22
https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/
Meet Fabric8 Client
24
https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/
Java on steroids !
//DEPS info.picocli:picocli:4.5.0
import picocli.CommandLine;
import picocli.CommandLine.
Command;
import picocli.CommandLine.
Parameters;
import java.util.concurrent.Callable;
@Command(name = "intro")
class intro implements Callable<Integer> {
SUPERSONIC SUBATOMIC JAVA
Quarkus Extensions
Going Native
Let’s create a plugin!
Our plugin > how to share it?
What is krew?
● A package manager for kubectl plugins
○ Like “brew” but for kubectl :)
○ Developed summer of 2018 by Google intern
Luk Burchard (@lbb)
● Krew is open sourced, try it:
https://github.com/kubernetes-sigs/krew
33
Krew > useful for users
● Discover kubectl plugins
● Easy way to install plugins
● Update easily plugins
34
Krew > useful for developers
● Make their plugins discoverable
● Easy way to package their plugins for
multiplatforms (Win, Linux, MacOS)
35
Krew
36
Krew > search
37
Krew > list
38
Krew > install
39
Krew > install not published plugins
40
Your plugin is not already published/available on krew
index?
Not problem, you can also install it through Krew!
Krew > install not published plugins
41
Your plugin is not already published/available on krew
index?
Not problem, you can also install it through Krew!
krew > Local Architecture
42
Publishing on Krew
43
Index:
apiVersion: krew.googlecontainertools.github.com/v1alpha2
kind: Plugin
metadata:
name: season
spec:
homepage: https://github.com/scraly/kubectl-season
shortDescription: Display seasonal emoji randomly before resources name
version: v0.0.3
description: |
This plugin allows you to add randomly a seasonal (halloween, christmas, easter...) emoji
just before the resources name. It's a special seasonal mode.
platforms:
- selector:
matchExpressions:
- key: os
operator: In
values:
- darwin
- linux
uri: https://github.com/scraly/kubectl-season/archive/v0.0.3.tar.gz
sha256: ee194028b38fd102becc552ebfc7a7f38253acfb949835aa80bb1eb46eed3de8
bin: kubectl-season-0.0.3/kubectl-season
kubectl-season/.krew.yaml
44
Publishing on Krew > manifest file
apiVersion: krew.googlecontainertools.github.com/v1alpha2
kind: Plugin
metadata:
name: season
spec:
homepage: https://github.com/scraly/kubectl-season
shortDescription: Display seasonal emoji randomly before resources name
version: v0.0.3
description: |
This plugin allows you to add randomly a seasonal (halloween, christmas, easter...) emoji
just before the resources name. It's a special seasonal mode.
platforms:
- selector:
matchExpressions:
- key: os
operator: In
values:
- darwin
- linux
uri: https://github.com/scraly/kubectl-season/archive/v0.0.3.tar.gz
sha256: ee194028b38fd102becc552ebfc7a7f38253acfb949835aa80bb1eb46eed3de8
bin: kubectl-season-0.0.3/kubectl-season
K8s Object
45
kubectl-season/.krew.yaml
apiVersion: krew.googlecontainertools.github.com/v1alpha2
kind: Plugin
metadata:
name: season
spec:
homepage: https://github.com/scraly/kubectl-season
shortDescription: Display seasonal emoji randomly before resources name
version: v0.0.3
description: |
This plugin allows you to add randomly a seasonal (halloween, christmas, easter...) emoji
just before the resources name. It's a special seasonal mode.
platforms:
- selector:
matchExpressions:
- key: os
operator: In
values:
- darwin
- linux
uri: https://github.com/scraly/kubectl-season/archive/v0.0.3.tar.gz
sha256: ee194028b38fd102becc552ebfc7a7f38253acfb949835aa80bb1eb46eed3de8
bin: kubectl-season-0.0.3/kubectl-season
Plugin
Info
46
kubectl-season/.krew.yaml
apiVersion: krew.googlecontainertools.github.com/v1alpha2
kind: Plugin
metadata:
name: season
spec:
homepage: https://github.com/scraly/kubectl-season
shortDescription: Display seasonal emoji randomly before resources name
version: v0.0.3
description: |
This plugin allows you to add randomly a seasonal (halloween, christmas, easter...) emoji
just before the resources name. It's a special seasonal mode.
platforms:
- selector:
matchExpressions:
- key: os
operator: In
values:
- darwin
- linux
uri: https://github.com/scraly/kubectl-season/archive/v0.0.3.tar.gz
sha256: ee194028b38fd102becc552ebfc7a7f38253acfb949835aa80bb1eb46eed3de8
bin: kubectl-season-0.0.3/kubectl-season
Platforms[]
47
kubectl-season/.krew.yaml
apiVersion: krew.googlecontainertools.github.com/v1alpha2
kind: Plugin
metadata:
name: season
spec:
homepage: https://github.com/scraly/kubectl-season
shortDescription: Display seasonal emoji randomly before resources name
version: v0.0.3
description: |
This plugin allows you to add randomly a seasonal (halloween, christmas, easter...) emoji
just before the resources name. It's a special seasonal mode.
platforms:
- selector:
matchExpressions:
- key: os
operator: In
values:
- darwin
- linux
uri: https://github.com/scraly/kubectl-season/archive/v0.0.3.tar.gz
sha256: ee194028b38fd102becc552ebfc7a7f38253acfb949835aa80bb1eb46eed3de8
bin: kubectl-season-0.0.3/kubectl-season
Match
Platform
48
kubectl-season/.krew.yaml
apiVersion: krew.googlecontainertools.github.com/v1alpha2
kind: Plugin
metadata:
name: season
spec:
homepage: https://github.com/scraly/kubectl-season
shortDescription: Display seasonal emoji randomly before resources name
version: v0.0.3
description: |
This plugin allows you to add randomly a seasonal (halloween, christmas, easter...) emoji
just before the resources name. It's a special seasonal mode.
platforms:
- selector:
matchExpressions:
- key: os
operator: In
values:
- darwin
- linux
uri: https://github.com/scraly/kubectl-season/archive/v0.0.3.tar.gz
sha256: ee194028b38fd102becc552ebfc7a7f38253acfb949835aa80bb1eb46eed3de8
bin: kubectl-season-0.0.3/kubectl-season
Download
49
kubectl-season/.krew.yaml
apiVersion: krew.googlecontainertools.github.com/v1alpha2
kind: Plugin
metadata:
name: season
spec:
homepage: https://github.com/scraly/kubectl-season
shortDescription: Display seasonal emoji randomly before resources name
version: v0.0.3
description: |
This plugin allows you to add randomly a seasonal (halloween, christmas, easter...) emoji
just before the resources name. It's a special seasonal mode.
platforms:
- selector:
matchExpressions:
- key: os
operator: In
values:
- darwin
- linux
uri: https://github.com/scraly/kubectl-season/archive/v0.0.3.tar.gz
sha256: ee194028b38fd102becc552ebfc7a7f38253acfb949835aa80bb1eb46eed3de8
bin: kubectl-season-0.0.3/kubectl-season
Plugin
Binary
50
kubectl-season/.krew.yaml
Publishing on Krew > Pull Request
51
https://github.com/kubernetes-sigs/krew-index
Krew > Create your private index & publish into it
New feature: you can create your private index
Krew > update index
53
Krew > upgrade plugins
54
Krew > our fav plugins
55
> view-secret
Krew > our fav plugins
56
> view-secret
> view-cert
Krew > our fav plugins
57
> view-secret
> view-cert
> view-utilization
Krew > our fav plugins
58
> view-secret
> view-cert
> view-utilization
> neat
best practices
Plugin creation > best practices
60
Naming is important
● DON’T: kubectl-version
Not possible to create plugins that
overwrite existing kubectl commands
Plugin creation > best practices
61
Naming is important
● DON’T: kubectl service
Unclear what the plugin is doing
with service
● DON’T: kubectl open
Unclear what it is opening
● DO: kubectl open-svc
The plugin will open a service :-)
Plugin creation > best practices
62
Golang
https://github.com/kubernetes/sample-cli-plugin
Plugin creation > best practices
63
krew-release-bot
https://github.com/rajatjindal/krew-release-bot
Golang
Plugin creation > best practices
64
krew-release-bot Go releaser
https://goreleaser.com/
Golang
understanding in a visual way
http://gumroad.com/aurelievache & http://dev.to/aurelievache
Conclusion
$ kubectl thank-you
http://bit.ly/kubernetes-plugin-krew-asynconf
@aurelievache | @Gaelleacas
$ kubectl apply -f questions.yaml
Qui parle quand ?
● why this talk? (G)
● kubectl (A)
● kubectl plugin (G)
● create a plugin (A)
● krew (G)
● best practices (A)
● sketchnotes (G)
● conclusion (G)
● thank you+feedbacks+questions (A)
👍
Building kubectl plugins with Quarkus | DevNation Tech Talk
Building kubectl plugins with Quarkus | DevNation Tech Talk
Building kubectl plugins with Quarkus | DevNation Tech Talk
Building kubectl plugins with Quarkus | DevNation Tech Talk

Contenu connexe

Tendances

DCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker CaptainsDCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker CaptainsDocker, Inc.
 
On-Demand Image Resizing from Part of the monolith to Containerized Microserv...
On-Demand Image Resizing from Part of the monolith to Containerized Microserv...On-Demand Image Resizing from Part of the monolith to Containerized Microserv...
On-Demand Image Resizing from Part of the monolith to Containerized Microserv...Docker, Inc.
 
Docker for (Java) Developers
Docker for (Java) DevelopersDocker for (Java) Developers
Docker for (Java) DevelopersRafael Benevides
 
Docker Container As A Service - JAX 2016
Docker Container As A Service - JAX 2016Docker Container As A Service - JAX 2016
Docker Container As A Service - JAX 2016Patrick Chanezon
 
Jenkins, pipeline and docker
Jenkins, pipeline and docker Jenkins, pipeline and docker
Jenkins, pipeline and docker AgileDenver
 
Continuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins
Continuous Delivery in Enterprise Environments using Docker, Ansible and JenkinsContinuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins
Continuous Delivery in Enterprise Environments using Docker, Ansible and JenkinsMarcel Birkner
 
Building Jenkins Pipelines at Scale
Building Jenkins Pipelines at ScaleBuilding Jenkins Pipelines at Scale
Building Jenkins Pipelines at ScaleJulien Pivotto
 
Zero to Continuous Delivery on Google Cloud
Zero to Continuous Delivery on Google CloudZero to Continuous Delivery on Google Cloud
Zero to Continuous Delivery on Google CloudJames Heggs
 
Extending kubernetes with CustomResourceDefinitions
Extending kubernetes with CustomResourceDefinitionsExtending kubernetes with CustomResourceDefinitions
Extending kubernetes with CustomResourceDefinitionsStefan Schimanski
 
kubernetes - minikube - getting started
kubernetes - minikube - getting startedkubernetes - minikube - getting started
kubernetes - minikube - getting startedMunish Mehta
 
Minikube Workshop Handout
Minikube Workshop HandoutMinikube Workshop Handout
Minikube Workshop HandoutAlfie Chen
 
Baking docker using chef
Baking docker using chefBaking docker using chef
Baking docker using chefMukta Aphale
 
Taking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and DecideTaking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and DecideDocker, Inc.
 
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Docker, Inc.
 
Docker Meetup Paris: enterprise Docker
Docker Meetup Paris: enterprise DockerDocker Meetup Paris: enterprise Docker
Docker Meetup Paris: enterprise DockerArnaud MAZIN
 
How to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildHow to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildDocker, Inc.
 
Containerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and JavaContainerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and JavaJadson Santos
 
Ci with jenkins docker and mssql belgium
Ci with jenkins docker and mssql belgiumCi with jenkins docker and mssql belgium
Ci with jenkins docker and mssql belgiumChris Adkin
 
[DockerCon 2019] Hardening Docker daemon with Rootless mode
[DockerCon 2019] Hardening Docker daemon with Rootless mode[DockerCon 2019] Hardening Docker daemon with Rootless mode
[DockerCon 2019] Hardening Docker daemon with Rootless modeAkihiro Suda
 

Tendances (20)

DCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker CaptainsDCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker Captains
 
On-Demand Image Resizing from Part of the monolith to Containerized Microserv...
On-Demand Image Resizing from Part of the monolith to Containerized Microserv...On-Demand Image Resizing from Part of the monolith to Containerized Microserv...
On-Demand Image Resizing from Part of the monolith to Containerized Microserv...
 
devops@cineca
devops@cinecadevops@cineca
devops@cineca
 
Docker for (Java) Developers
Docker for (Java) DevelopersDocker for (Java) Developers
Docker for (Java) Developers
 
Docker Container As A Service - JAX 2016
Docker Container As A Service - JAX 2016Docker Container As A Service - JAX 2016
Docker Container As A Service - JAX 2016
 
Jenkins, pipeline and docker
Jenkins, pipeline and docker Jenkins, pipeline and docker
Jenkins, pipeline and docker
 
Continuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins
Continuous Delivery in Enterprise Environments using Docker, Ansible and JenkinsContinuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins
Continuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins
 
Building Jenkins Pipelines at Scale
Building Jenkins Pipelines at ScaleBuilding Jenkins Pipelines at Scale
Building Jenkins Pipelines at Scale
 
Zero to Continuous Delivery on Google Cloud
Zero to Continuous Delivery on Google CloudZero to Continuous Delivery on Google Cloud
Zero to Continuous Delivery on Google Cloud
 
Extending kubernetes with CustomResourceDefinitions
Extending kubernetes with CustomResourceDefinitionsExtending kubernetes with CustomResourceDefinitions
Extending kubernetes with CustomResourceDefinitions
 
kubernetes - minikube - getting started
kubernetes - minikube - getting startedkubernetes - minikube - getting started
kubernetes - minikube - getting started
 
Minikube Workshop Handout
Minikube Workshop HandoutMinikube Workshop Handout
Minikube Workshop Handout
 
Baking docker using chef
Baking docker using chefBaking docker using chef
Baking docker using chef
 
Taking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and DecideTaking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and Decide
 
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
 
Docker Meetup Paris: enterprise Docker
Docker Meetup Paris: enterprise DockerDocker Meetup Paris: enterprise Docker
Docker Meetup Paris: enterprise Docker
 
How to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildHow to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker Build
 
Containerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and JavaContainerizing a Web Application with Vue.js and Java
Containerizing a Web Application with Vue.js and Java
 
Ci with jenkins docker and mssql belgium
Ci with jenkins docker and mssql belgiumCi with jenkins docker and mssql belgium
Ci with jenkins docker and mssql belgium
 
[DockerCon 2019] Hardening Docker daemon with Rootless mode
[DockerCon 2019] Hardening Docker daemon with Rootless mode[DockerCon 2019] Hardening Docker daemon with Rootless mode
[DockerCon 2019] Hardening Docker daemon with Rootless mode
 

Similaire à Building kubectl plugins with Quarkus | DevNation Tech Talk

Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17Ryan Jarvinen
 
Container Deployment and Management with kubernetes
Container Deployment and Management with kubernetesContainer Deployment and Management with kubernetes
Container Deployment and Management with kubernetessiuyin
 
Continuous Deployment with Kubernetes, Docker and GitLab CI
Continuous Deployment with Kubernetes, Docker and GitLab CIContinuous Deployment with Kubernetes, Docker and GitLab CI
Continuous Deployment with Kubernetes, Docker and GitLab CIalexanderkiel
 
Learn kubernetes in 90 minutes
Learn kubernetes in 90 minutesLearn kubernetes in 90 minutes
Learn kubernetes in 90 minutesLarry Cai
 
Kubernetes + Python = ❤ - Cloud Native Prague
Kubernetes + Python = ❤ - Cloud Native PragueKubernetes + Python = ❤ - Cloud Native Prague
Kubernetes + Python = ❤ - Cloud Native PragueHenning Jacobs
 
Shakr - Container CI/CD with Google Cloud Platform
Shakr - Container CI/CD with Google Cloud PlatformShakr - Container CI/CD with Google Cloud Platform
Shakr - Container CI/CD with Google Cloud PlatformMinku Lee
 
Extending Kubectl.pptx
Extending Kubectl.pptxExtending Kubectl.pptx
Extending Kubectl.pptxLibbySchulze
 
JOIN 2022: Patching 3rd party software Like a boss
JOIN 2022: Patching 3rd party software Like a bossJOIN 2022: Patching 3rd party software Like a boss
JOIN 2022: Patching 3rd party software Like a bossPieter Vincken
 
Comandos - Evento - Virtual Lab Despliegue de aplicaciones en Kubernetes
Comandos - Evento - Virtual Lab Despliegue de aplicaciones en KubernetesComandos - Evento - Virtual Lab Despliegue de aplicaciones en Kubernetes
Comandos - Evento - Virtual Lab Despliegue de aplicaciones en KubernetesJulio Pari
 
Exploring MySQL Operator for Kubernetes in Python
Exploring MySQL Operator for Kubernetes in PythonExploring MySQL Operator for Kubernetes in Python
Exploring MySQL Operator for Kubernetes in PythonIvan Ma
 
Mihai Criveti - PyCon Ireland - Automate Everything
Mihai Criveti - PyCon Ireland - Automate EverythingMihai Criveti - PyCon Ireland - Automate Everything
Mihai Criveti - PyCon Ireland - Automate EverythingMihai Criveti
 
Knative build for open whisk runtimes phase 1 - 2018-02-20
Knative build for open whisk runtimes   phase 1 - 2018-02-20Knative build for open whisk runtimes   phase 1 - 2018-02-20
Knative build for open whisk runtimes phase 1 - 2018-02-20Matt Rutkowski
 
KubeCon 2017 Zero Touch Provision
KubeCon 2017 Zero Touch ProvisionKubeCon 2017 Zero Touch Provision
KubeCon 2017 Zero Touch ProvisionRackN
 
Kubecon 2017 Zero Touch Kubernetes
Kubecon 2017 Zero Touch KubernetesKubecon 2017 Zero Touch Kubernetes
Kubecon 2017 Zero Touch Kubernetesrhirschfeld
 
Docker and Kubernetes 101 workshop
Docker and Kubernetes 101 workshopDocker and Kubernetes 101 workshop
Docker and Kubernetes 101 workshopSathish VJ
 
5 Things I Wish I Knew About Gitlab CI
5 Things I Wish I Knew About Gitlab CI5 Things I Wish I Knew About Gitlab CI
5 Things I Wish I Knew About Gitlab CISebastian Witowski
 
Get you Java application ready for Kubernetes !
Get you Java application ready for Kubernetes !Get you Java application ready for Kubernetes !
Get you Java application ready for Kubernetes !Anthony Dahanne
 

Similaire à Building kubectl plugins with Quarkus | DevNation Tech Talk (20)

Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17
 
Container Deployment and Management with kubernetes
Container Deployment and Management with kubernetesContainer Deployment and Management with kubernetes
Container Deployment and Management with kubernetes
 
Continuous Deployment with Kubernetes, Docker and GitLab CI
Continuous Deployment with Kubernetes, Docker and GitLab CIContinuous Deployment with Kubernetes, Docker and GitLab CI
Continuous Deployment with Kubernetes, Docker and GitLab CI
 
Learn kubernetes in 90 minutes
Learn kubernetes in 90 minutesLearn kubernetes in 90 minutes
Learn kubernetes in 90 minutes
 
Kubernetes + Python = ❤ - Cloud Native Prague
Kubernetes + Python = ❤ - Cloud Native PragueKubernetes + Python = ❤ - Cloud Native Prague
Kubernetes + Python = ❤ - Cloud Native Prague
 
Shakr - Container CI/CD with Google Cloud Platform
Shakr - Container CI/CD with Google Cloud PlatformShakr - Container CI/CD with Google Cloud Platform
Shakr - Container CI/CD with Google Cloud Platform
 
Extending Kubectl.pptx
Extending Kubectl.pptxExtending Kubectl.pptx
Extending Kubectl.pptx
 
JOIN 2022: Patching 3rd party software Like a boss
JOIN 2022: Patching 3rd party software Like a bossJOIN 2022: Patching 3rd party software Like a boss
JOIN 2022: Patching 3rd party software Like a boss
 
DevOps_project.pdf
DevOps_project.pdfDevOps_project.pdf
DevOps_project.pdf
 
Comandos - Evento - Virtual Lab Despliegue de aplicaciones en Kubernetes
Comandos - Evento - Virtual Lab Despliegue de aplicaciones en KubernetesComandos - Evento - Virtual Lab Despliegue de aplicaciones en Kubernetes
Comandos - Evento - Virtual Lab Despliegue de aplicaciones en Kubernetes
 
Kubernetes Node Deep Dive
Kubernetes Node Deep DiveKubernetes Node Deep Dive
Kubernetes Node Deep Dive
 
Exploring MySQL Operator for Kubernetes in Python
Exploring MySQL Operator for Kubernetes in PythonExploring MySQL Operator for Kubernetes in Python
Exploring MySQL Operator for Kubernetes in Python
 
Mihai Criveti - PyCon Ireland - Automate Everything
Mihai Criveti - PyCon Ireland - Automate EverythingMihai Criveti - PyCon Ireland - Automate Everything
Mihai Criveti - PyCon Ireland - Automate Everything
 
Knative build for open whisk runtimes phase 1 - 2018-02-20
Knative build for open whisk runtimes   phase 1 - 2018-02-20Knative build for open whisk runtimes   phase 1 - 2018-02-20
Knative build for open whisk runtimes phase 1 - 2018-02-20
 
KubeCon 2017 Zero Touch Provision
KubeCon 2017 Zero Touch ProvisionKubeCon 2017 Zero Touch Provision
KubeCon 2017 Zero Touch Provision
 
Kubecon 2017 Zero Touch Kubernetes
Kubecon 2017 Zero Touch KubernetesKubecon 2017 Zero Touch Kubernetes
Kubecon 2017 Zero Touch Kubernetes
 
Docker and Kubernetes 101 workshop
Docker and Kubernetes 101 workshopDocker and Kubernetes 101 workshop
Docker and Kubernetes 101 workshop
 
5 Things I Wish I Knew About Gitlab CI
5 Things I Wish I Knew About Gitlab CI5 Things I Wish I Knew About Gitlab CI
5 Things I Wish I Knew About Gitlab CI
 
Get you Java application ready for Kubernetes !
Get you Java application ready for Kubernetes !Get you Java application ready for Kubernetes !
Get you Java application ready for Kubernetes !
 
Introduction to Tekton
Introduction to TektonIntroduction to Tekton
Introduction to Tekton
 

Plus de Red Hat Developers

DevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOpsDevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOpsRed Hat Developers
 
Exploring the power of OpenTelemetry on Kubernetes
Exploring the power of OpenTelemetry on KubernetesExploring the power of OpenTelemetry on Kubernetes
Exploring the power of OpenTelemetry on KubernetesRed Hat Developers
 
GitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech TalkGitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech TalkRed Hat Developers
 
Quinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech TalkQuinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech TalkRed Hat Developers
 
Extra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech TalkExtra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech TalkRed Hat Developers
 
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Red Hat Developers
 
Integrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech TalkIntegrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech TalkRed Hat Developers
 
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...Red Hat Developers
 
Containers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech TalkContainers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech TalkRed Hat Developers
 
Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...Red Hat Developers
 
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...Red Hat Developers
 
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...Red Hat Developers
 
11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech Talk11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech TalkRed Hat Developers
 
A Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech TalkA Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech TalkRed Hat Developers
 
GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...Red Hat Developers
 
To the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech TalkTo the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech TalkRed Hat Developers
 
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...Red Hat Developers
 
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...Red Hat Developers
 
Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...Red Hat Developers
 
Level-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech TalkLevel-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech TalkRed Hat Developers
 

Plus de Red Hat Developers (20)

DevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOpsDevNation Tech Talk: Getting GitOps
DevNation Tech Talk: Getting GitOps
 
Exploring the power of OpenTelemetry on Kubernetes
Exploring the power of OpenTelemetry on KubernetesExploring the power of OpenTelemetry on Kubernetes
Exploring the power of OpenTelemetry on Kubernetes
 
GitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech TalkGitHub Makeover | DevNation Tech Talk
GitHub Makeover | DevNation Tech Talk
 
Quinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech TalkQuinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
Quinoa: A modern Quarkus UI with no hassles | DevNation tech Talk
 
Extra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech TalkExtra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech Talk
 
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
 
Integrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech TalkIntegrating Loom in Quarkus | DevNation Tech Talk
Integrating Loom in Quarkus | DevNation Tech Talk
 
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
Quarkus Renarde 🦊♥: an old-school Web framework with today's touch | DevNatio...
 
Containers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech TalkContainers without docker | DevNation Tech Talk
Containers without docker | DevNation Tech Talk
 
Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...Distributed deployment of microservices across multiple OpenShift clusters | ...
Distributed deployment of microservices across multiple OpenShift clusters | ...
 
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
DevNation Workshop: Object detection with Red Hat OpenShift Data Science [Mar...
 
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
Dear security, compliance, and auditing: We’re sorry. Love, DevOps | DevNatio...
 
11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech Talk11 CLI tools every developer should know | DevNation Tech Talk
11 CLI tools every developer should know | DevNation Tech Talk
 
A Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech TalkA Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
 
GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...GitHub Actions and OpenShift: ​​Supercharging your software development loops...
GitHub Actions and OpenShift: ​​Supercharging your software development loops...
 
To the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech TalkTo the moon and beyond with Java 17 APIs! | DevNation Tech Talk
To the moon and beyond with Java 17 APIs! | DevNation Tech Talk
 
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
Profile your Java apps in production on Red Hat OpenShift with Cryostat | Dev...
 
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
Kafka at the Edge: an IoT scenario with OpenShift Streams for Apache Kafka | ...
 
Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Kubernetes configuration and security policies with KubeLinter | DevNation Te...
 
Level-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech TalkLevel-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
Level-up your gaming telemetry using Kafka Streams | DevNation Tech Talk
 

Dernier

The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 

Dernier (20)

The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 

Building kubectl plugins with Quarkus | DevNation Tech Talk

  • 1. Build your own kubectl plugin using Quarkus
  • 2. Sebastien Blanc ● @sebi2706 ● sblanc@redhat.com ● Currently Red Hat’s Director of Developer Experience ● Java Champion ● Passion-Driven-Developer with one goal : share his passion by giving talks that are pragmatic, fun and focused on live coding
  • 4. Kubectl > pronunciation fight Disclaimer Pronounce “kubectl” as you want :-)
  • 6. Kubectl > a very logical CLI!
  • 7. Kubectl > a very logical CLI!
  • 8. Kubectl > a very logical CLI!
  • 9. Kubectl > cool, but can i extend it?
  • 11. Kubectl: tied to core release cycle Wants to implement a new feature in Kubectl? So … Forget about it and think about plugins instead ;-)
  • 13. Plugins > Why it’s useful? Extend kubectl with extra functionality that still feels like kubectl ● e.g. kubectl service-catalog [...] Encapsulate repetitive workflow ● e.g checking a secret resource, check logs
  • 14. Plugins > language agnostic!
  • 15. 1. Create a file named kubectl-myplugin Kubectl plugin > How it works? 15
  • 16. 1. Create a file named kubectl-myplugin 2. Make it executable Kubectl plugin > How it works? 16
  • 17. 1. Create a file named kubectl-myplugin 2. Make it executable 3. Put it in your PATH Kubectl plugin > How it works? 17
  • 18. 1. Create a file named kubectl-myplugin 2. Make it executable 3. Put it in your PATH 4. Run “kubectl myplugin” Kubectl plugin > How it works? 18 https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/
  • 19. 1. How to manage the CLI options and parameters ? 2. How to make it interact with a cluster ? 3. How to quickly bootstrap a project ? 4. How to make it executable ? 5. How to make it fast ? Kubectl plugin > Using Java ? 19 https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/
  • 20. PLUGIN PARAMETER OPTION Kubectl plugin > Handle parameters and options 20 https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/
  • 26. //DEPS info.picocli:picocli:4.5.0 import picocli.CommandLine; import picocli.CommandLine. Command; import picocli.CommandLine. Parameters; import java.util.concurrent.Callable; @Command(name = "intro") class intro implements Callable<Integer> {
  • 30. Let’s create a plugin!
  • 31. Our plugin > how to share it?
  • 32.
  • 33. What is krew? ● A package manager for kubectl plugins ○ Like “brew” but for kubectl :) ○ Developed summer of 2018 by Google intern Luk Burchard (@lbb) ● Krew is open sourced, try it: https://github.com/kubernetes-sigs/krew 33
  • 34. Krew > useful for users ● Discover kubectl plugins ● Easy way to install plugins ● Update easily plugins 34
  • 35. Krew > useful for developers ● Make their plugins discoverable ● Easy way to package their plugins for multiplatforms (Win, Linux, MacOS) 35
  • 40. Krew > install not published plugins 40 Your plugin is not already published/available on krew index? Not problem, you can also install it through Krew!
  • 41. Krew > install not published plugins 41 Your plugin is not already published/available on krew index? Not problem, you can also install it through Krew!
  • 42. krew > Local Architecture 42
  • 44. Index: apiVersion: krew.googlecontainertools.github.com/v1alpha2 kind: Plugin metadata: name: season spec: homepage: https://github.com/scraly/kubectl-season shortDescription: Display seasonal emoji randomly before resources name version: v0.0.3 description: | This plugin allows you to add randomly a seasonal (halloween, christmas, easter...) emoji just before the resources name. It's a special seasonal mode. platforms: - selector: matchExpressions: - key: os operator: In values: - darwin - linux uri: https://github.com/scraly/kubectl-season/archive/v0.0.3.tar.gz sha256: ee194028b38fd102becc552ebfc7a7f38253acfb949835aa80bb1eb46eed3de8 bin: kubectl-season-0.0.3/kubectl-season kubectl-season/.krew.yaml 44 Publishing on Krew > manifest file
  • 45. apiVersion: krew.googlecontainertools.github.com/v1alpha2 kind: Plugin metadata: name: season spec: homepage: https://github.com/scraly/kubectl-season shortDescription: Display seasonal emoji randomly before resources name version: v0.0.3 description: | This plugin allows you to add randomly a seasonal (halloween, christmas, easter...) emoji just before the resources name. It's a special seasonal mode. platforms: - selector: matchExpressions: - key: os operator: In values: - darwin - linux uri: https://github.com/scraly/kubectl-season/archive/v0.0.3.tar.gz sha256: ee194028b38fd102becc552ebfc7a7f38253acfb949835aa80bb1eb46eed3de8 bin: kubectl-season-0.0.3/kubectl-season K8s Object 45 kubectl-season/.krew.yaml
  • 46. apiVersion: krew.googlecontainertools.github.com/v1alpha2 kind: Plugin metadata: name: season spec: homepage: https://github.com/scraly/kubectl-season shortDescription: Display seasonal emoji randomly before resources name version: v0.0.3 description: | This plugin allows you to add randomly a seasonal (halloween, christmas, easter...) emoji just before the resources name. It's a special seasonal mode. platforms: - selector: matchExpressions: - key: os operator: In values: - darwin - linux uri: https://github.com/scraly/kubectl-season/archive/v0.0.3.tar.gz sha256: ee194028b38fd102becc552ebfc7a7f38253acfb949835aa80bb1eb46eed3de8 bin: kubectl-season-0.0.3/kubectl-season Plugin Info 46 kubectl-season/.krew.yaml
  • 47. apiVersion: krew.googlecontainertools.github.com/v1alpha2 kind: Plugin metadata: name: season spec: homepage: https://github.com/scraly/kubectl-season shortDescription: Display seasonal emoji randomly before resources name version: v0.0.3 description: | This plugin allows you to add randomly a seasonal (halloween, christmas, easter...) emoji just before the resources name. It's a special seasonal mode. platforms: - selector: matchExpressions: - key: os operator: In values: - darwin - linux uri: https://github.com/scraly/kubectl-season/archive/v0.0.3.tar.gz sha256: ee194028b38fd102becc552ebfc7a7f38253acfb949835aa80bb1eb46eed3de8 bin: kubectl-season-0.0.3/kubectl-season Platforms[] 47 kubectl-season/.krew.yaml
  • 48. apiVersion: krew.googlecontainertools.github.com/v1alpha2 kind: Plugin metadata: name: season spec: homepage: https://github.com/scraly/kubectl-season shortDescription: Display seasonal emoji randomly before resources name version: v0.0.3 description: | This plugin allows you to add randomly a seasonal (halloween, christmas, easter...) emoji just before the resources name. It's a special seasonal mode. platforms: - selector: matchExpressions: - key: os operator: In values: - darwin - linux uri: https://github.com/scraly/kubectl-season/archive/v0.0.3.tar.gz sha256: ee194028b38fd102becc552ebfc7a7f38253acfb949835aa80bb1eb46eed3de8 bin: kubectl-season-0.0.3/kubectl-season Match Platform 48 kubectl-season/.krew.yaml
  • 49. apiVersion: krew.googlecontainertools.github.com/v1alpha2 kind: Plugin metadata: name: season spec: homepage: https://github.com/scraly/kubectl-season shortDescription: Display seasonal emoji randomly before resources name version: v0.0.3 description: | This plugin allows you to add randomly a seasonal (halloween, christmas, easter...) emoji just before the resources name. It's a special seasonal mode. platforms: - selector: matchExpressions: - key: os operator: In values: - darwin - linux uri: https://github.com/scraly/kubectl-season/archive/v0.0.3.tar.gz sha256: ee194028b38fd102becc552ebfc7a7f38253acfb949835aa80bb1eb46eed3de8 bin: kubectl-season-0.0.3/kubectl-season Download 49 kubectl-season/.krew.yaml
  • 50. apiVersion: krew.googlecontainertools.github.com/v1alpha2 kind: Plugin metadata: name: season spec: homepage: https://github.com/scraly/kubectl-season shortDescription: Display seasonal emoji randomly before resources name version: v0.0.3 description: | This plugin allows you to add randomly a seasonal (halloween, christmas, easter...) emoji just before the resources name. It's a special seasonal mode. platforms: - selector: matchExpressions: - key: os operator: In values: - darwin - linux uri: https://github.com/scraly/kubectl-season/archive/v0.0.3.tar.gz sha256: ee194028b38fd102becc552ebfc7a7f38253acfb949835aa80bb1eb46eed3de8 bin: kubectl-season-0.0.3/kubectl-season Plugin Binary 50 kubectl-season/.krew.yaml
  • 51. Publishing on Krew > Pull Request 51 https://github.com/kubernetes-sigs/krew-index
  • 52. Krew > Create your private index & publish into it New feature: you can create your private index
  • 53. Krew > update index 53
  • 54. Krew > upgrade plugins 54
  • 55. Krew > our fav plugins 55 > view-secret
  • 56. Krew > our fav plugins 56 > view-secret > view-cert
  • 57. Krew > our fav plugins 57 > view-secret > view-cert > view-utilization
  • 58. Krew > our fav plugins 58 > view-secret > view-cert > view-utilization > neat
  • 60. Plugin creation > best practices 60 Naming is important ● DON’T: kubectl-version Not possible to create plugins that overwrite existing kubectl commands
  • 61. Plugin creation > best practices 61 Naming is important ● DON’T: kubectl service Unclear what the plugin is doing with service ● DON’T: kubectl open Unclear what it is opening ● DO: kubectl open-svc The plugin will open a service :-)
  • 62. Plugin creation > best practices 62 Golang https://github.com/kubernetes/sample-cli-plugin
  • 63. Plugin creation > best practices 63 krew-release-bot https://github.com/rajatjindal/krew-release-bot Golang
  • 64. Plugin creation > best practices 64 krew-release-bot Go releaser https://goreleaser.com/ Golang
  • 65. understanding in a visual way http://gumroad.com/aurelievache & http://dev.to/aurelievache
  • 69. $ kubectl apply -f questions.yaml
  • 70.
  • 71. Qui parle quand ? ● why this talk? (G) ● kubectl (A) ● kubectl plugin (G) ● create a plugin (A) ● krew (G) ● best practices (A) ● sketchnotes (G) ● conclusion (G) ● thank you+feedbacks+questions (A) 👍