Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Container Camp: Highway to Helm

Container Camp: Highway to Helm

Container Camp Sydney 2017.
This is an introduction to Helm and how to get involved with the Kubernetes & Helm communities.

Michelle Noorali

May 23, 2017
Tweet

More Decks by Michelle Noorali

Other Decks in Technology

Transcript

  1. Charts • Are application definitions • Consist of ◦ Metadata

    ◦ Kubernetes resource definitions ◦ Configuration ◦ Documentation • Live in chart repositories
  2. Helm: 3 Core Concepts • Chart - expert built recipe

    for installing an application • Values - user supplied configuration • Release - instance of Chart + Values that get deployed in Kubernetes
  3. Prerequisites • Download Helm & put it in your path

    • Grab a running Kubernetes cluster
  4. Tiller, it’s a thriller • Server-side component • Lives his

    life inside k8s cluster as a pod • Creates & manages releases in your cluster ◦ Release = installation of a Chart Kubernetes Tiller Helm Client gRPC
  5. Recap • Helm is the client • Tiller is the

    server • Kubernetes is the target platform & data storage • Chart + Values = Release
  6. Demos: • Init in Action • Install a chart •

    Upgrade a release • Delete a release
  7. Where can I get a Helm like that? • Homebrew

    brew install kubernetes-helm • Github github.com/kubernetes/helm/releases
  8. Templates myapp ├── Chart.yaml ├── README.md ├── charts ├── templates

    │ ├── deployment.yaml │ └── svc.yaml └── values.yaml
  9. Configuration myapp ├── Chart.yaml ├── README.md ├── charts ├── templates

    └── values.yaml └── requirements.yaml values.yaml image: mycompany/myapp:1.0.0 imagePullPolicy: IfNotPresent service: port: 80 apiVersion: extensions/v1beta1 kind: Deployment spec: template: spec: containers: - name: {{ .Chart.Name }} image: "{{ .Values.image }}" imagePullPolicy: {{ .Values.imagePullPolicy }} ports: - containerPort: {{ .Values.service.port }} templates/deployment.yaml
  10. Configuration values.yaml image: mycompany/myapp:1.0.0 imagePullPolicy: IfNotPresent service: port: 80 Configure

    values on command line with the --set flag $ helm install --set service.port=8080 myapp/ Or pass in a new values file on command line with the -f flag $ helm install -f myvalues.yaml myapp
  11. Dependencies myapp ├── Chart.yaml ├── README.md ├── charts ├── templates

    └── values.yaml └── requirements.yaml dependencies: - name: mariadb version: 0.5.2 repository: http://storage.googleapis.com/kubernetes-charts requirements.yaml
  12. Official Kubernetes Charts Repository • Lives at github.com/kubernetes/charts • Stable

    & Incubator repositories • Over 70 stable charts • ~ 9 incubator charts • Lots of PRs
  13. Kubernetes Community • Special Interest Groups ◦ Meetings are recorded

    and on youtube • github.com/kubernetes/community • Slack.k8s.io • Helm is under the SIG-Apps umbrella
  14. Helm Community • 149 contributors • Kubernetes slack channels: #helm-users,

    #helm-dev • Weekly updates and demos at SIG Apps (recorded & available on youtube) • Documentation coming soon on http://helm.sh