SlideShare a Scribd company logo
@bridgetkromhout #helmsummit
Increasing Reliability
via Helm Pre-Release Checks
@bridgetkromhout #helmsummit
lives:
Minneapolis,
Minnesota
works:
Microsoft
podcasts:
Arrested
DevOps
organizes:
devopsdays
Bridget Kromhout
@bridgetkromhout #helmsummit
Where is Waldo Lachie?
(and he still wrote most of this talk, too!)
@bridgetkromhout #helmsummit
Image credit: Vasa Museet
failed Helm release

circa 1628
@bridgetkromhout #helmsummit
Image credit: Vasa Museet
a successful Helm release

…has gotten harder

(because k8s is

vast and contains

multitudes)
@bridgetkromhout #helmsummit
open-source tooling for
more reliable Helm releases
kubeval
conftest
kubectl auth can-i
@bridgetkromhout #helmsummit
$ helm install stable/nginx-ingress
Let’s choose a chart to use
@bridgetkromhout #helmsummit
Helm Pre-Release Checks
resource validity
policy
role based access control
@bridgetkromhout #helmsummit
invalid k8s resources
$ helm install stable/nginx-ingress --set
controller.replicaCount=two
Error: release estranged-arachnid failed:
Deployment in version "v1beta1" cannot be handled
as a Deployment: v1beta1.Deployment.Spec:
v1beta1.DeploymentSpec.Replicas: readUint32:
unexpected character: , error found in #10 byte
of ...|eplicas":"two","revi|..., bigger
context ...|default"},"spec":{"minReadySeconds":
0,"replicas":"two","revisionHistoryLimit":
10,"strategy":{},"temp|...
@bridgetkromhout #helmsummit
resources don’t work!?
(…on this k8s version)
https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/
$ helm install stable/nginx-ingress
Error: validation failed: unable to
recognize "": no matches for kind
"Deployment" in version "extensions/
v1beta1"
@bridgetkromhout #helmsummit
$ helm plugin install https://
github.com/instrumenta/helm-kubeval
kubeval: install as Helm plugin
@garethr - kubeval.instrumenta.dev
@bridgetkromhout #helmsummit
kubeval: find invalid deployments
$ helm kubeval stable/nginx-ingress --set
controller.replicaCount=two
[…]
The file nginx-ingress/templates/controller-
deployment.yaml contains an invalid Deployment
---> spec.replicas: Invalid type. Expected:
[integer,null], given: string
The file nginx-ingress/templates/default-backend-
deployment.yaml contains a valid Deployment
[…]
Error: plugin "kubeval" exited with error
@bridgetkromhout #helmsummit
kubeval: will a chart work with a given version?
$ helm kubeval stable/nginx-ingress -v 1.15.0
The file nginx-ingress/templates/controller-
serviceaccount.yaml contains a valid ServiceAccount
The file nginx-ingress/templates/default-backend-
serviceaccount.yaml contains a valid ServiceAccount
[…]
@bridgetkromhout #helmsummit
Helm Pre-Release Checks
resource validity
policy
role based access control
@bridgetkromhout #helmsummit
conftest
openpolicyagent.org
Open Policy Agent
https://garethr.dev/2019/06/introducing-conftest/
Policy-based control
specified declaratively &
enforced automatically
Write policy in OPA native
query language Rego
test locally against structured configuration data (uses Rego)
(enforced server-side: PodSecurityPolicy, Gatekeeper, etc)
@bridgetkromhout #helmsummit
$ helm conftest stable/nginx-ingress
FAIL - nginx-ingress-controller in the Deployment
release-name-nginx-ingress-controller does not have
a memory limit set
FAIL - nginx-ingress-controller in the Deployment
release-name-nginx-ingress-controller does not have
a CPU limit set
[…]
Error: plugin "conftest" exited with error
conftest: fail if non-compliant with policy
@bridgetkromhout #helmsummit
conftest: succeed when explicitly setting limits
$ helm conftest stable/nginx-ingress/ —set
controller.resources.limits.cpu=100m,controller
.resources.limits.memory=64Mi
$
@bridgetkromhout #helmsummit
Helm Pre-Release Checks
resource validity
policy
role based access control
@bridgetkromhout #helmsummit
RBAC tl;dr: if you don’t have
permissions, you’ll have a failed
deployment…
@bridgetkromhout #helmsummit
… and spoiler alert: in Helm 3, with
Tiller gone, you won’t have the
“cluster admin” permissions
anymore!
@bridgetkromhout #helmsummit
$ for i in `helm template stable/nginx-ingress | grep -i
Kind | awk -F: '{print $2}' | sort -u`; do echo "$i:
`kubectl auth can-i create $i`"; done
Warning: resource 'clusterroles' is not namespace scoped
in group 'rbac.authorization.k8s.io'
ClusterRole: no
Warning: resource 'clusterrolebindings' is not namespace
scoped in group 'rbac.authorization.k8s.io'
ClusterRoleBinding: no
Deployment: yes
Role: yes
RoleBinding: yes
Service: yes
ServiceAccount: yes
kubectl auth can-i
@bridgetkromhout #helmsummit
multiple options:
kubectl auth can-i
(https://kubernetes.io/docs/reference/access-authn-
authz/authorization/#checking-api-access)
who-can
(https://github.com/aquasecurity/kubectl-who-can)
@bridgetkromhout #helmsummit
great! what now?
- add pre-release checks to
your CI/CD pipelines:

- kubeval

- conftest

- kubectl auth can-i

- prevent broken releases

- …

- profit!
@bridgetkromhout #helmsummit
@bridgetkromhout #helmsummit
To learn more…
Cloud Native Tooling

deislabs.io

Helm FAQ

v3.helm.sh/docs/faq

Container Training

container.training

What is Kubernetes?

aka.ms/k8slearning
@bridgetkromhout #helmsummit
Thanks!
Cloud Native Tooling

deislabs.io

Helm FAQ

v3.helm.sh/docs/faq

Container Training

container.training

What is Kubernetes?

aka.ms/k8slearning

More Related Content

PDF
Join Our Party: The Cloud Native Adventure Brigade (TCSW 2019)
PDF
Join Our Party: The Cloud Native Adventure Brigade (Kubernetes Belgium 2019)
PDF
Join Our Party: The Cloud Native Adventure Brigade (devopsdays Philly 2019)
PPTX
Using Azure Runbooks and Microsoft Flow to Automate SharePoint Tasks
PDF
Kubernetes Operability Tooling (GOTO Chicago 2019)
PDF
Reactive Programming by UniRx for Asynchronous & Event Processing
PDF
Microservices in Golang
PDF
A microservice architecture based on golang
Join Our Party: The Cloud Native Adventure Brigade (TCSW 2019)
Join Our Party: The Cloud Native Adventure Brigade (Kubernetes Belgium 2019)
Join Our Party: The Cloud Native Adventure Brigade (devopsdays Philly 2019)
Using Azure Runbooks and Microsoft Flow to Automate SharePoint Tasks
Kubernetes Operability Tooling (GOTO Chicago 2019)
Reactive Programming by UniRx for Asynchronous & Event Processing
Microservices in Golang
A microservice architecture based on golang

What's hot (20)

PPTX
Bootiful Reactive Testing - Mario Gray
PDF
How to Use Mirroring and Caching to Optimize your Container Registry
PPTX
HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...
PDF
Ambassador: Building a Control Plane for Envoy
PDF
給 RD 的 Kubernetes 初體驗 (EKS version)
PDF
Driving and virtualizing control systems: the Open Source approach used in Wh...
PPTX
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...
PDF
Go for Operations
PDF
Docker in Production: Reality, Not Hype - DevOps Chicago
PDF
Relevez les défis Kubernetes avec NGINX
PDF
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
PDF
PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...
PDF
Supercharge your app with Cloud Functions for Firebase
PDF
From zero to hero with Kubernetes and Istio
PDF
You and your containers: strumenti di automazione in Cloud (parte 2) - Gabrie...
PDF
Open Source in the Era of 5G
PDF
Ondřej Procházka - Deployment podle Devel.cz
PDF
Git deep dive – chopping Kubernetes
PPTX
Cleaner Code Through Test-Driven Development
PDF
Bootiful Reactive Testing - Mario Gray
How to Use Mirroring and Caching to Optimize your Container Registry
HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...
Ambassador: Building a Control Plane for Envoy
給 RD 的 Kubernetes 初體驗 (EKS version)
Driving and virtualizing control systems: the Open Source approach used in Wh...
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...
Go for Operations
Docker in Production: Reality, Not Hype - DevOps Chicago
Relevez les défis Kubernetes avec NGINX
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...
Supercharge your app with Cloud Functions for Firebase
From zero to hero with Kubernetes and Istio
You and your containers: strumenti di automazione in Cloud (parte 2) - Gabrie...
Open Source in the Era of 5G
Ondřej Procházka - Deployment podle Devel.cz
Git deep dive – chopping Kubernetes
Cleaner Code Through Test-Driven Development
Ad

Similar to Increasing Reliability via Helm Pre-Release Checks (Helm Summit 2019) (20)

PDF
Helm 3 - Navigating to distant shores
PDF
Deploying on Kubernetes - An intro
PDF
2022-05-23-DevOps pro Europe - Managing Apps at scale.pdf
PDF
Configuration Management for the Cloud Native world with GitOps and Helm - To...
PPTX
Helm and the zen of managing complex Kubernetes apps
PDF
Kubecon SIG Apps December 2017 Update
PDF
Helm 3: Navigating to Distant Shores (KubeCon EU 2019)
PDF
Config management for kubernetes: GitOps + Helm
PDF
Helm - Application deployment management for Kubernetes
PDF
[k8s] Kubernetes terminology (1).pdf
PDF
Delve into Helm - Advanced DevOps
PPTX
Deploying Windows Apps to Kubernetes with Draft and Helm
PDF
Deploying Kubernetes without scaring off your security team - KubeCon 2017
PPTX
Leveraging Helm to manage Deployments on Kubernetes
PPTX
Helm @ Orchestructure
PPTX
Exploring the Future of Helm
PDF
Kubernetes Application Deployment with Helm - A beginner Guide!
PDF
Verified CKAD Exam Questions and Answers
PDF
Helm Charts Security 101
PDF
Config management for_kubernetes: GitOps + Helm (CfgMgmtCamp 2020)
Helm 3 - Navigating to distant shores
Deploying on Kubernetes - An intro
2022-05-23-DevOps pro Europe - Managing Apps at scale.pdf
Configuration Management for the Cloud Native world with GitOps and Helm - To...
Helm and the zen of managing complex Kubernetes apps
Kubecon SIG Apps December 2017 Update
Helm 3: Navigating to Distant Shores (KubeCon EU 2019)
Config management for kubernetes: GitOps + Helm
Helm - Application deployment management for Kubernetes
[k8s] Kubernetes terminology (1).pdf
Delve into Helm - Advanced DevOps
Deploying Windows Apps to Kubernetes with Draft and Helm
Deploying Kubernetes without scaring off your security team - KubeCon 2017
Leveraging Helm to manage Deployments on Kubernetes
Helm @ Orchestructure
Exploring the Future of Helm
Kubernetes Application Deployment with Helm - A beginner Guide!
Verified CKAD Exam Questions and Answers
Helm Charts Security 101
Config management for_kubernetes: GitOps + Helm (CfgMgmtCamp 2020)
Ad

More from bridgetkromhout (20)

PDF
An introduction to Helm - KubeCon EU 2020
PDF
devops, distributed (devopsdays Ghent 2019)
PDF
Kubernetes for the Impatient (devopsdays Cape Town 2019)
PDF
Join Our Party: The Cloud Native Adventure Brigade (OSS 2019)
PDF
Helm 3: Navigating To Distant Shores (OSS NA 2019)
PDF
Helm 3: Navigating to Distant Shores (OSCON 2019)
PDF
Kubernetes for the Impatient (Velocity San Jose 2019)
PDF
Community projects inform enterprise products (Velocity San Jose 2019)
PDF
Kubernetes Operability Tooling (Minnebar 2019)
PDF
Livetweeting Tech Conferences - SREcon Americas 2019
PDF
Kubernetes Operability Tooling (devopsdays Seattle 2019)
PDF
Kubernetes Operability Tooling (LEAP 2019)
PDF
Day 2 Kubernetes - Tools for Operability (KubeCon)
PDF
Cloud, Containers, Kubernetes (YOW Melbourne 2018)
PDF
Cloud, Containers, Kubernetes (YOW Brisbane 2018)
PDF
Cloud, Containers, Kubernetes (YOW Sydney 2018)
PDF
Day 2 Kubernetes - Tools for Operability (Philly Open Source)
PDF
Day 2 Kubernetes - Tools for Operability (QConSF)
PDF
Day 2 Kubernetes - Tools for Operability (Velocity London Meetup)
PDF
the endless now: distributed systems & teams
An introduction to Helm - KubeCon EU 2020
devops, distributed (devopsdays Ghent 2019)
Kubernetes for the Impatient (devopsdays Cape Town 2019)
Join Our Party: The Cloud Native Adventure Brigade (OSS 2019)
Helm 3: Navigating To Distant Shores (OSS NA 2019)
Helm 3: Navigating to Distant Shores (OSCON 2019)
Kubernetes for the Impatient (Velocity San Jose 2019)
Community projects inform enterprise products (Velocity San Jose 2019)
Kubernetes Operability Tooling (Minnebar 2019)
Livetweeting Tech Conferences - SREcon Americas 2019
Kubernetes Operability Tooling (devopsdays Seattle 2019)
Kubernetes Operability Tooling (LEAP 2019)
Day 2 Kubernetes - Tools for Operability (KubeCon)
Cloud, Containers, Kubernetes (YOW Melbourne 2018)
Cloud, Containers, Kubernetes (YOW Brisbane 2018)
Cloud, Containers, Kubernetes (YOW Sydney 2018)
Day 2 Kubernetes - Tools for Operability (Philly Open Source)
Day 2 Kubernetes - Tools for Operability (QConSF)
Day 2 Kubernetes - Tools for Operability (Velocity London Meetup)
the endless now: distributed systems & teams

Recently uploaded (20)

PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Electronic commerce courselecture one. Pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Approach and Philosophy of On baking technology
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Modernizing your data center with Dell and AMD
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
NewMind AI Weekly Chronicles - August'25 Week I
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Advanced methodologies resolving dimensionality complications for autism neur...
Encapsulation_ Review paper, used for researhc scholars
Electronic commerce courselecture one. Pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Approach and Philosophy of On baking technology
Unlocking AI with Model Context Protocol (MCP)
Digital-Transformation-Roadmap-for-Companies.pptx
Dropbox Q2 2025 Financial Results & Investor Presentation
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Modernizing your data center with Dell and AMD
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
NewMind AI Monthly Chronicles - July 2025
Diabetes mellitus diagnosis method based random forest with bat algorithm
Reach Out and Touch Someone: Haptics and Empathic Computing

Increasing Reliability via Helm Pre-Release Checks (Helm Summit 2019)