SlideShare a Scribd company logo
Copyright Β© 2018 Samsung SDS America, Inc. All rights reserved
October, 2018
Signing
Helm Charts
and Helm
v3
Matt Farina
Exploring the Future of Helm
Exploring the Future of Helm
$ helm create mychart
$ helm package --sign --key 'key' --keyring path/to/keyring.secret mychart
$ helm verify mychart-0.1.0.tgz
$ helm install --verify mychart-0.1.0.tgz
-----BEGIN PGP SIGNED MESSAGE-----
name: nginx
description: The nginx web server as a replication controller and service pair.
version: 0.5.1
keywords:
- https
- http
- web server
- proxy
source:
- https://github.com/foo/bar
home: http://nginx.com
...
files:
nginx-0.5.1.tgz: β€œsha256:9f5270f50fc842cfcb717f817e95178f”
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEARECAAYFAkjilUEACgQkB01zfu119ZnHuQCdGCcg2YxF3XFscJLS4lzHlvte
WkQAmQGHuuoLEJuKhRNo+Wy7mhE7u1YG
=eifq
-----END PGP SIGNATURE-----
$ helm verify topchart-0.1.0.tgz
Error: sha256 sum does not match for topchart-0.1.0.tgz: "sha256:1939fbf7c10
23d2f6b865d137bbb600e0c42061c3235528b1e8c82f4450c12a7" != "sha256:5a391a90de
56778dd3274e47d789a2c84e0e106e1a37ef8cfa51fd60ac9e623a"
Exploring the Future of Helm
https://gnupg.org/faq/whats-new-in-2.1.html
$ gpg --export-secret-keys >~/.gnupg/secring.gpg
$ helm package --sign --key 'key' --keyring ~/.gnupg/secring.gpg mychart
$ gpg --export >~/.gnupg/pubring.pgp
$ helm verify mychart-0.1.0.tgz --keyring ~/.gnupg/pubring.pgp
$ gpg --export-secret-keys >~/.gnupg/secring.gpg
$ helm package --sign --key 'key' --keyring ~/.gnupg/secring.gpg mychart
Successfully packaged chart and saved it to: /path/to/mychart-0.1.0.tgz
Error: openpgp: unsupported feature: hash for S2K function: 0
Exploring the Future of Helm
Sorry, no windows as it requires shell
$ helm create mychart
$ helm package mychart
$ helm gpg sign mychart-0.1.0.tgz
$ helm gpg verify mychart-0.1.0.tgz
$ helm install --verify mychart-0.1.0.tgz
CI NOT using smart card for key can still use previous methods
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
apiVersion: v1
appVersion: "1.0"
description: A Helm chart for Kubernetes
name: mychart
version: 0.1.0
...
files:
mychart-0.1.0.tgz: sha256:352c6fa9f974983a5c1455059c82913c4da2b8de7e7c9211e3bd38330cf8fb0f
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEcR8o1RDh4Ly9X2v+lDboC/ukaQkFAlvOGJ4ACgkQlDboC/uk
aQmcDA/+InIc/ybA472MxhY7pOU5AILyjFJnTC6Ky7YKMdWP9Ig+GFk/THKd5VJo
bCwpUgtrXs1+nnNuiRN/53wd/ocYXQry/mAN7yZJDaKhqTX2Y2nRz7JHJKwDIwt3
i/herOby+l0h54kYaUyyCGpZidCJhTe79YvvFP9nLbfa5UGhL+rbAMSCV0D3fIwG
FU01VPUsoOaiHvdE7snFLX2gdyvkgsFXhj4I6fT66EBaxL4zGS/1IidyfGZZ1N2Z
5MfXWBWfdJ2xcamR/6f32HckXq9yRGZHvT7VYobiwVptRvpkS3CTMMr9cwXAbj53
1L6INbQ+xlh121elzEBC1f91pf8BCgTnWXarfuMek0U/T0L1GBSUUL9aau1B7Cic
9Ql10EGZEm9erT/w4vRcVSGWdIqj1ks66mOv4Nz1CvC+AaMPUNxFlfwYT5B1iiB2
+8rzq0h3ZIER7/GNevG/G1r9O9DBBcEkx5MMFL4asutUk+VWsOKkPOT8d5QaoGiW
MnV+1l3nOW2k8BOi4SkMQYBKLnznrC+WqKqLIruzSulM132GW7UbjKnP/2LiOVMh
FMCUbo7DGVis39xHicm4PUT0As9m/zO2UezDbEKm9Vw7kw6pPBl2hfokMPyXWjGO
6glgCAIoEarVH8jqsjALAWKVyybjslVctVH172/m4LoTMrw4yJk=
=+L4T
-----END PGP SIGNATURE-----
If you’re into that…
Exploring the Future of Helm
Exploring the Future of Helm
2.11.0
Semantic Versioning Example:
Increment for new features
Increment for bug fixesIncrement when API changes
Kubernetes
TillerHelm v2
Kubernetes
Helm v3
Local Computer
Kubernetes
Tiller
Helm v2
Tiller still stores data in cluster
Exploring the Future of Helm
Kubernetes
Helm v2
Kubernetes
Helm v3
State stored in ConfigMaps.
Optionally setup to use Secrets.
State stored in Secrets and
Custom Resources.
Access to data including:
- Chart data
- Values
- Capabilities
- Files
- Templates
- Dependencies
Many Events
These depend on the command being
run and include: pre-create, post-create,
pre-delete, pre-dependency-build,
post-dependency-build, pre-render,
post-render, pre-install, pre-lint,
pre-rollback, post-template…
… and many others
function init(events) {
-- Initialize subcharts
subchart.init(events)
-- Do other stuff
events.on("pre-load", function () {
print("pre-load event")
})
}
A simple made up example:
The Lua API is
still under
development
Permission Scheme
The ext/permissions.yaml file:
lua:
- network
- io
The Helm CLI will ask for permission to
use these libraries. Only permissible libs
will be imported.
Easy To Embed
Requirements:
- Interpreter embedded in Helm
(Do not rely extra system software)
- Cross platform Helm binaries
(Windows, macOS, Linux)
Lua is a lightweight language designed
primarily for embedded use in
applications. Lua was designed for this!
requirements:
- name: apache
version: 1.2.3
repository: http://example.com/charts
- name: mysql
version: 3.2.1
repository: http://another.example.com/charts
libraries:
- name: common
version: "^2.1.0"
repository: http://another.example.com/charts
Library charts are noted in the library: directive in the requirements.yaml:
title: Values
type: object
properties:
name:
description: Service name
type: string
protocol:
type: string
port:
description: Port
type: integer
minimum: 0
image:
description: Container Image
type: object
properties:
repo:
type: string
tag:
type: string
required:
- protocol
- port
Example schema stored in a
values.schema.yaml file
apiVersion: v1
kind: Secret
metadata:
name: {{ template "tensorflow-notebook.fullname" . }}
labels:
app: {{ template "tensorflow-notebook.name" . }}
chart: {{ template "tensorflow-notebook.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
annotations:
"helm.sh/hook": pre-install,pre-upgrade
type: Opaque
data:
password: {{ .Values.jupyter.password | b64enc | quote }}
The pre-install and
pre-upgrade hook
are set
Computer outside Kubernetes
Kubernetes
Helm v3
Normal Helm CLI model is a push
Helm Controller Model (idea still in development)
Kubernetes
Helm v3
Controller
Helm
Repository
name: "last"
version: "0.1.0"
usage: "get the last release name"
description: "get the last release name"
command: "$HELM_BIN --host $TILLER_HOST list --short --max 1 --date -r"
# New part:
platformCommand:
- os: linux
arch: i386
command: "$HELM_BIN list --short --max 1 --date -r"
- os: windows
arch: amd64
command: "$HELM_BIN list --short --max 1 --date -r"
Exploring the Future of Helm
plugins:
- name: helm-template
url: https://github.com/technosophos/helm-template
- name: helm-value-store
url: https://github.com/skuid/helm-value-store
- name: helm-diff
url: https://github.com/databus23/helm-diff
helm init --plugins <file.yaml>
An Example Plugins file:
$ helm serve
Regenerating index. This may take a moment.
Now serving you on 127.0.0.1:8879
Run a local Helm
repository
$ helm login https://repo.example.com
$ helm push mychart-0.1.0.tgz https://repo.example.com
The exact commands are still being worked out
{
"apiVersion": "v2",
"entries": {
"artifactory": {
"ref": "https://kubernetes-charts-incubator.storage.googleapis.com/artifactory.json",
"stable": {
"created": "2017-07-06T01:33:50.952Z",
"description": "Universal Repository Manager supporting all major packaging formats,nbuild tools and CI servers.",
"digest": "249e27501dbfe1bd93d4039b04440f0ff19c707ba720540f391b5aefa3571455",
"home": "https://www.jfrog.com/artifactory/",
"icon": "https://raw.githubusercontent.com/JFrogDev/artifactory-dcos/master/images/jfrog_med.png",
"keywords": [
"artifactory",
"jfrog"
],
"maintainers": [
{
"email": "[redacted]",
"name": "[redacted]"
}
],
"name": "artifactory",
"sources": [
"https://bintray.com/jfrog/product/JFrog-Artifactory-Pro/view",
"https://github.com/JFrogDev"
],
"urls": [
"https://kubernetes-charts-incubator.storage.googleapis.com/artifactory-5.2.0.tgz"
],
"version": "5.2.0"
}
}
}
}
An example index.json file
ο‚§ No More Tiller
ο‚§ State Storage
ο‚§ Event Driven Architecture
ο‚§ Charts:
β€’ Extensions
β€’ Library Charts
β€’ Schemas for values files
ο‚§ Hook Annotations
ο‚§ Helm controller model
Changes from v2:
ο‚§ Plugins:
β€’ Handling Cross Platforms (like Windows)
β€’ Plugins in Lua
β€’ Easier installation
ο‚§ Repositories:
β€’ No more helm serve
β€’ Push to repositories
β€’ Performance improvements
https://www.slideshare.net/mattfarina/helm-orchestructure

More Related Content

PPTX
Helm @ Orchestructure
PDF
How Helm, The Package Manager For Kubernetes, Works
PDF
Helm 3
PDF
Integrate Openshift with Cloudforms
PDF
Docker Basics & Alfresco Content Services
PDF
Deploy Prometheus - Grafana and EFK stack on Kubic k8s Clusters
PDF
[OpenInfra Days Korea 2018] Day 2 - E4 - λ”₯λ‹€μ΄λΈŒ: immutable Kubernetes architecture
PDF
Kubernetes Node Deep Dive
Helm @ Orchestructure
How Helm, The Package Manager For Kubernetes, Works
Helm 3
Integrate Openshift with Cloudforms
Docker Basics & Alfresco Content Services
Deploy Prometheus - Grafana and EFK stack on Kubic k8s Clusters
[OpenInfra Days Korea 2018] Day 2 - E4 - λ”₯λ‹€μ΄λΈŒ: immutable Kubernetes architecture
Kubernetes Node Deep Dive

What's hot (20)

PDF
OpenShift v3 Internal networking details
PDF
[OpenInfra Days Korea 2018] Day 2 - E6 - OpenInfra monitoring with Prometheus
PDF
Cloning Running Servers with Docker and CRIU by Ross Boucher
PPTX
Monitoring, Logging and Tracing on Kubernetes
PPTX
Tectonic Summit 2016: Kubernetes 1.5 and Beyond
Β 
PPTX
Docker 1.9 Feature Overview
PPTX
Orchestration tool roundup kubernetes vs. docker vs. heat vs. terra form vs...
PDF
Kube-AWS
Β 
PDF
Continuous Integration: SaaS vs Jenkins in Cloud
Β 
PPTX
Deploying Symfony2 app with Ansible
PDF
Artem Zhurbila - docker clusters (solit 2015)
PDF
Docker at Shopify: From This-Looks-Fun to Production by Simon Eskildsen (Shop...
PDF
Kubernetes Hands-On Guide
PPTX
Reusable, composable, battle-tested Terraform modules
PPTX
Docker Networking Tip - Load balancing options
PDF
ContainerDayVietnam2016: Docker for JS Developer
PPTX
Docker Support
PPTX
Docker Meetup Paris: enterprise Docker
PPTX
Docker for PHP Developers - ZendCon 2016
PPTX
K8s security best practices
OpenShift v3 Internal networking details
[OpenInfra Days Korea 2018] Day 2 - E6 - OpenInfra monitoring with Prometheus
Cloning Running Servers with Docker and CRIU by Ross Boucher
Monitoring, Logging and Tracing on Kubernetes
Tectonic Summit 2016: Kubernetes 1.5 and Beyond
Β 
Docker 1.9 Feature Overview
Orchestration tool roundup kubernetes vs. docker vs. heat vs. terra form vs...
Kube-AWS
Β 
Continuous Integration: SaaS vs Jenkins in Cloud
Β 
Deploying Symfony2 app with Ansible
Artem Zhurbila - docker clusters (solit 2015)
Docker at Shopify: From This-Looks-Fun to Production by Simon Eskildsen (Shop...
Kubernetes Hands-On Guide
Reusable, composable, battle-tested Terraform modules
Docker Networking Tip - Load balancing options
ContainerDayVietnam2016: Docker for JS Developer
Docker Support
Docker Meetup Paris: enterprise Docker
Docker for PHP Developers - ZendCon 2016
K8s security best practices
Ad

Similar to Exploring the Future of Helm (20)

PDF
Automating Container Deployments on Virtualization with Ansible: OpenShift on...
PDF
Bare Metal to OpenStack with Razor and Chef
DOCX
Component pack 6006 install guide
PDF
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
PDF
Drone CI/CD θ‡ͺε‹•εŒ–ζΈ¬θ©¦εŠιƒ¨η½²
PPTX
How Honestbee Does CI/CD on Kubernetes - Vincent DeSmet
PDF
kubernetes practice
PDF
Istio Playground
PDF
Preparation study of_docker - (MOSG)
PPTX
Kubered -Recipes for C2 Operations on Kubernetes
PPTX
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
PDF
Scaling docker with kubernetes
PDF
Control Plane: Continuous Kubernetes Security (DevSecOps - London Gathering, ...
PDF
Digital Forensics and Incident Response in The Cloud Part 3
PDF
Postgres the hardway
PPTX
Docker container management
PDF
MuleSoft Meetup Roma - Runtime Fabric Series (From Zero to Hero) - Sessione 2
PPTX
Monitoring_with_Prometheus_Grafana_Tutorial
PDF
Linux sever building
PDF
Installing Component Pack 6.0.0.6
Automating Container Deployments on Virtualization with Ansible: OpenShift on...
Bare Metal to OpenStack with Razor and Chef
Component pack 6006 install guide
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
Drone CI/CD θ‡ͺε‹•εŒ–ζΈ¬θ©¦εŠιƒ¨η½²
How Honestbee Does CI/CD on Kubernetes - Vincent DeSmet
kubernetes practice
Istio Playground
Preparation study of_docker - (MOSG)
Kubered -Recipes for C2 Operations on Kubernetes
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
Scaling docker with kubernetes
Control Plane: Continuous Kubernetes Security (DevSecOps - London Gathering, ...
Digital Forensics and Incident Response in The Cloud Part 3
Postgres the hardway
Docker container management
MuleSoft Meetup Roma - Runtime Fabric Series (From Zero to Hero) - Sessione 2
Monitoring_with_Prometheus_Grafana_Tutorial
Linux sever building
Installing Component Pack 6.0.0.6
Ad

More from Matthew Farina (16)

PPTX
Helm project update at cncf 2019
PDF
Measuring How Helm Is Used
PDF
Testing Lessons Learned From The Community Charts
PDF
Kubecon SIG Apps December 2017 Update
PDF
Dipping Your Toes Into Cloud Native Application Development
PPTX
A Dive Into Containers and Docker
PPTX
HP Helion OpenStack and Professional Services
PPTX
Why OpenStack matters and how you can get involved
PDF
Faster front end performance
PDF
Secure your site
PDF
Faster mobile sites
PDF
Front end performance improvements
KEY
Building Faster Websites
PPT
Drupal Calendaring, A Technological Solution
KEY
Make Drupal Better
KEY
Intro To jQuery In Drupal
Helm project update at cncf 2019
Measuring How Helm Is Used
Testing Lessons Learned From The Community Charts
Kubecon SIG Apps December 2017 Update
Dipping Your Toes Into Cloud Native Application Development
A Dive Into Containers and Docker
HP Helion OpenStack and Professional Services
Why OpenStack matters and how you can get involved
Faster front end performance
Secure your site
Faster mobile sites
Front end performance improvements
Building Faster Websites
Drupal Calendaring, A Technological Solution
Make Drupal Better
Intro To jQuery In Drupal

Recently uploaded (20)

PDF
Best Practices for Testing and Debugging Shopify Third-Party API Integrations...
PPTX
PptxGenJS_Demo_Chart_20250317130215833.pptx
PDF
Tenda Login Guide: Access Your Router in 5 Easy Steps
PDF
Slides PDF The World Game (s) Eco Economic Epochs.pdf
PPTX
522797556-Unit-2-Temperature-measurement-1-1.pptx
PPTX
SAP Ariba Sourcing PPT for learning material
PDF
SASE Traffic Flow - ZTNA Connector-1.pdf
PDF
An introduction to the IFRS (ISSB) Stndards.pdf
PDF
Sims 4 Historia para lo sims 4 para jugar
PPTX
Introduction to Information and Communication Technology
PPT
Design_with_Watersergyerge45hrbgre4top (1).ppt
PPTX
QR Codes Qr codecodecodecodecocodedecodecode
PPTX
Introduction about ICD -10 and ICD11 on 5.8.25.pptx
PDF
πŸ’° π”πŠπ“πˆ πŠπ„πŒπ„ππ€ππ†π€π πŠπˆππ„π‘πŸ’πƒ π‡π€π‘πˆ 𝐈𝐍𝐈 πŸπŸŽπŸπŸ“ πŸ’°
Β 
PDF
Cloud-Scale Log Monitoring _ Datadog.pdf
PPTX
Internet___Basics___Styled_ presentation
PPT
tcp ip networks nd ip layering assotred slides
PPTX
Job_Card_System_Styled_lorem_ipsum_.pptx
PDF
Automated vs Manual WooCommerce to Shopify Migration_ Pros & Cons.pdf
PPTX
innovation process that make everything different.pptx
Best Practices for Testing and Debugging Shopify Third-Party API Integrations...
PptxGenJS_Demo_Chart_20250317130215833.pptx
Tenda Login Guide: Access Your Router in 5 Easy Steps
Slides PDF The World Game (s) Eco Economic Epochs.pdf
522797556-Unit-2-Temperature-measurement-1-1.pptx
SAP Ariba Sourcing PPT for learning material
SASE Traffic Flow - ZTNA Connector-1.pdf
An introduction to the IFRS (ISSB) Stndards.pdf
Sims 4 Historia para lo sims 4 para jugar
Introduction to Information and Communication Technology
Design_with_Watersergyerge45hrbgre4top (1).ppt
QR Codes Qr codecodecodecodecocodedecodecode
Introduction about ICD -10 and ICD11 on 5.8.25.pptx
πŸ’° π”πŠπ“πˆ πŠπ„πŒπ„ππ€ππ†π€π πŠπˆππ„π‘πŸ’πƒ π‡π€π‘πˆ 𝐈𝐍𝐈 πŸπŸŽπŸπŸ“ πŸ’°
Β 
Cloud-Scale Log Monitoring _ Datadog.pdf
Internet___Basics___Styled_ presentation
tcp ip networks nd ip layering assotred slides
Job_Card_System_Styled_lorem_ipsum_.pptx
Automated vs Manual WooCommerce to Shopify Migration_ Pros & Cons.pdf
innovation process that make everything different.pptx

Exploring the Future of Helm

  • 1. Copyright Β© 2018 Samsung SDS America, Inc. All rights reserved October, 2018 Signing Helm Charts and Helm v3 Matt Farina
  • 4. $ helm create mychart $ helm package --sign --key 'key' --keyring path/to/keyring.secret mychart $ helm verify mychart-0.1.0.tgz $ helm install --verify mychart-0.1.0.tgz
  • 5. -----BEGIN PGP SIGNED MESSAGE----- name: nginx description: The nginx web server as a replication controller and service pair. version: 0.5.1 keywords: - https - http - web server - proxy source: - https://github.com/foo/bar home: http://nginx.com ... files: nginx-0.5.1.tgz: β€œsha256:9f5270f50fc842cfcb717f817e95178f” -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEARECAAYFAkjilUEACgQkB01zfu119ZnHuQCdGCcg2YxF3XFscJLS4lzHlvte WkQAmQGHuuoLEJuKhRNo+Wy7mhE7u1YG =eifq -----END PGP SIGNATURE-----
  • 6. $ helm verify topchart-0.1.0.tgz Error: sha256 sum does not match for topchart-0.1.0.tgz: "sha256:1939fbf7c10 23d2f6b865d137bbb600e0c42061c3235528b1e8c82f4450c12a7" != "sha256:5a391a90de 56778dd3274e47d789a2c84e0e106e1a37ef8cfa51fd60ac9e623a"
  • 9. $ gpg --export-secret-keys >~/.gnupg/secring.gpg $ helm package --sign --key 'key' --keyring ~/.gnupg/secring.gpg mychart $ gpg --export >~/.gnupg/pubring.pgp $ helm verify mychart-0.1.0.tgz --keyring ~/.gnupg/pubring.pgp
  • 10. $ gpg --export-secret-keys >~/.gnupg/secring.gpg $ helm package --sign --key 'key' --keyring ~/.gnupg/secring.gpg mychart Successfully packaged chart and saved it to: /path/to/mychart-0.1.0.tgz Error: openpgp: unsupported feature: hash for S2K function: 0
  • 12. Sorry, no windows as it requires shell
  • 13. $ helm create mychart $ helm package mychart $ helm gpg sign mychart-0.1.0.tgz $ helm gpg verify mychart-0.1.0.tgz $ helm install --verify mychart-0.1.0.tgz CI NOT using smart card for key can still use previous methods
  • 14. -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 apiVersion: v1 appVersion: "1.0" description: A Helm chart for Kubernetes name: mychart version: 0.1.0 ... files: mychart-0.1.0.tgz: sha256:352c6fa9f974983a5c1455059c82913c4da2b8de7e7c9211e3bd38330cf8fb0f -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEcR8o1RDh4Ly9X2v+lDboC/ukaQkFAlvOGJ4ACgkQlDboC/uk aQmcDA/+InIc/ybA472MxhY7pOU5AILyjFJnTC6Ky7YKMdWP9Ig+GFk/THKd5VJo bCwpUgtrXs1+nnNuiRN/53wd/ocYXQry/mAN7yZJDaKhqTX2Y2nRz7JHJKwDIwt3 i/herOby+l0h54kYaUyyCGpZidCJhTe79YvvFP9nLbfa5UGhL+rbAMSCV0D3fIwG FU01VPUsoOaiHvdE7snFLX2gdyvkgsFXhj4I6fT66EBaxL4zGS/1IidyfGZZ1N2Z 5MfXWBWfdJ2xcamR/6f32HckXq9yRGZHvT7VYobiwVptRvpkS3CTMMr9cwXAbj53 1L6INbQ+xlh121elzEBC1f91pf8BCgTnWXarfuMek0U/T0L1GBSUUL9aau1B7Cic 9Ql10EGZEm9erT/w4vRcVSGWdIqj1ks66mOv4Nz1CvC+AaMPUNxFlfwYT5B1iiB2 +8rzq0h3ZIER7/GNevG/G1r9O9DBBcEkx5MMFL4asutUk+VWsOKkPOT8d5QaoGiW MnV+1l3nOW2k8BOi4SkMQYBKLnznrC+WqKqLIruzSulM132GW7UbjKnP/2LiOVMh FMCUbo7DGVis39xHicm4PUT0As9m/zO2UezDbEKm9Vw7kw6pPBl2hfokMPyXWjGO 6glgCAIoEarVH8jqsjALAWKVyybjslVctVH172/m4LoTMrw4yJk= =+L4T -----END PGP SIGNATURE-----
  • 15. If you’re into that…
  • 18. 2.11.0 Semantic Versioning Example: Increment for new features Increment for bug fixesIncrement when API changes
  • 20. Local Computer Kubernetes Tiller Helm v2 Tiller still stores data in cluster
  • 22. Kubernetes Helm v2 Kubernetes Helm v3 State stored in ConfigMaps. Optionally setup to use Secrets. State stored in Secrets and Custom Resources.
  • 23. Access to data including: - Chart data - Values - Capabilities - Files - Templates - Dependencies Many Events These depend on the command being run and include: pre-create, post-create, pre-delete, pre-dependency-build, post-dependency-build, pre-render, post-render, pre-install, pre-lint, pre-rollback, post-template… … and many others
  • 24. function init(events) { -- Initialize subcharts subchart.init(events) -- Do other stuff events.on("pre-load", function () { print("pre-load event") }) } A simple made up example: The Lua API is still under development
  • 25. Permission Scheme The ext/permissions.yaml file: lua: - network - io The Helm CLI will ask for permission to use these libraries. Only permissible libs will be imported. Easy To Embed Requirements: - Interpreter embedded in Helm (Do not rely extra system software) - Cross platform Helm binaries (Windows, macOS, Linux) Lua is a lightweight language designed primarily for embedded use in applications. Lua was designed for this!
  • 26. requirements: - name: apache version: 1.2.3 repository: http://example.com/charts - name: mysql version: 3.2.1 repository: http://another.example.com/charts libraries: - name: common version: "^2.1.0" repository: http://another.example.com/charts Library charts are noted in the library: directive in the requirements.yaml:
  • 27. title: Values type: object properties: name: description: Service name type: string protocol: type: string port: description: Port type: integer minimum: 0 image: description: Container Image type: object properties: repo: type: string tag: type: string required: - protocol - port Example schema stored in a values.schema.yaml file
  • 28. apiVersion: v1 kind: Secret metadata: name: {{ template "tensorflow-notebook.fullname" . }} labels: app: {{ template "tensorflow-notebook.name" . }} chart: {{ template "tensorflow-notebook.chart" . }} release: {{ .Release.Name }} heritage: {{ .Release.Service }} annotations: "helm.sh/hook": pre-install,pre-upgrade type: Opaque data: password: {{ .Values.jupyter.password | b64enc | quote }} The pre-install and pre-upgrade hook are set
  • 29. Computer outside Kubernetes Kubernetes Helm v3 Normal Helm CLI model is a push Helm Controller Model (idea still in development) Kubernetes Helm v3 Controller Helm Repository
  • 30. name: "last" version: "0.1.0" usage: "get the last release name" description: "get the last release name" command: "$HELM_BIN --host $TILLER_HOST list --short --max 1 --date -r" # New part: platformCommand: - os: linux arch: i386 command: "$HELM_BIN list --short --max 1 --date -r" - os: windows arch: amd64 command: "$HELM_BIN list --short --max 1 --date -r"
  • 32. plugins: - name: helm-template url: https://github.com/technosophos/helm-template - name: helm-value-store url: https://github.com/skuid/helm-value-store - name: helm-diff url: https://github.com/databus23/helm-diff helm init --plugins <file.yaml> An Example Plugins file:
  • 33. $ helm serve Regenerating index. This may take a moment. Now serving you on 127.0.0.1:8879 Run a local Helm repository
  • 34. $ helm login https://repo.example.com $ helm push mychart-0.1.0.tgz https://repo.example.com The exact commands are still being worked out
  • 35. { "apiVersion": "v2", "entries": { "artifactory": { "ref": "https://kubernetes-charts-incubator.storage.googleapis.com/artifactory.json", "stable": { "created": "2017-07-06T01:33:50.952Z", "description": "Universal Repository Manager supporting all major packaging formats,nbuild tools and CI servers.", "digest": "249e27501dbfe1bd93d4039b04440f0ff19c707ba720540f391b5aefa3571455", "home": "https://www.jfrog.com/artifactory/", "icon": "https://raw.githubusercontent.com/JFrogDev/artifactory-dcos/master/images/jfrog_med.png", "keywords": [ "artifactory", "jfrog" ], "maintainers": [ { "email": "[redacted]", "name": "[redacted]" } ], "name": "artifactory", "sources": [ "https://bintray.com/jfrog/product/JFrog-Artifactory-Pro/view", "https://github.com/JFrogDev" ], "urls": [ "https://kubernetes-charts-incubator.storage.googleapis.com/artifactory-5.2.0.tgz" ], "version": "5.2.0" } } } } An example index.json file
  • 36. ο‚§ No More Tiller ο‚§ State Storage ο‚§ Event Driven Architecture ο‚§ Charts: β€’ Extensions β€’ Library Charts β€’ Schemas for values files ο‚§ Hook Annotations ο‚§ Helm controller model Changes from v2: ο‚§ Plugins: β€’ Handling Cross Platforms (like Windows) β€’ Plugins in Lua β€’ Easier installation ο‚§ Repositories: β€’ No more helm serve β€’ Push to repositories β€’ Performance improvements