Slide 1

Slide 1 text

Ұى؝ Helm 3 John Lin (@johnlinvc)

Slide 2

Slide 2 text

᮫ԙզ • John Lin • Twitter: @johnlinvc • Senior Solution Architect, DevOps
 @ West Pharmaceutical

Slide 3

Slide 3 text

ࣾ܈׆ಈ • iplayground.io 2020 Keynote ߨऀ • Coscup, RubyConf TW, RubyKaigi, PyCon TW ߨऀ • ओ㭎 Swift Taipei Meetup

Slide 4

Slide 4 text

ॄኄੋ Helm ? • > Helm is the best way to find, share, and use software built for Kubernetes. • > Helm helps you manage Kubernetes applications — Helm Charts help you define, install, and upgrade even the most complex Kubernetes application.

Slide 5

Slide 5 text

Helm ೳ၏ॄኄʁ • ҆᧋ Chart • ઃఆ Chart • Rollback Chart • ؐ༗ߋଟ

Slide 6

Slide 6 text

• ؆ᄸိ㘸बੋऔ୅ • kubectl create -f • kubectl edit Helm ೳ၏ॄኄʁ

Slide 7

Slide 7 text

҆᧋ • HomeBrew: brew install helm • Linuxɿcurl https://raw.githubusercontent.com/helm/helm/master/scripts/ get-helm-3 | bash • APT: ༗ᴍຑ൥ɼՄҎ؃׭໢ɻ

Slide 8

Slide 8 text

Helm ໊ࢺղᬶ • Chart • Repo • Config • Release

Slide 9

Slide 9 text

Chart • Helm త౟݅ᄸҐ • 㚎ؚ k8s resource template, default values • ՄҎ༗ dependency • ૾ੋ rpm, deb తײ᧷

Slide 10

Slide 10 text

Repo • ଘ์ Chart త server • ओཁ༗ၷݸޭೳɿྻग़ Charts ࿨Լࡌ Chart • ౳ಉԙ apt/yum repo

Slide 11

Slide 11 text

Config • ์ਐ k8s resource template ཫతᆴɻ • Chart ။༗༬ઃᆴɻ • ՄҎࡏ㑌ݸ release ཫڅෆಉతᆴɻ

Slide 12

Slide 12 text

Release • Ұݸӡߦதత Chartɼ૾ੋ Process తײ᧷ɻ • धཁڅଞҰݸ໊ࣈɻ • ՄҎ༗኷ଟݸಉ࣌ӡߦʢ Chart ሜಘ޷త࿩ʣ

Slide 13

Slide 13 text

࢖༻ Helmɼ Ҏ Prometheus ҝྫ • Prometheus ੋҰ౟؂߇ܥ౷ɻk8s ཫେྔ࢖༻ɻ • https://github.com/prometheus-community/helm-charts/tree/main/charts/ prometheus •

Slide 14

Slide 14 text

Ճೖ Repo • ೺ repo Ճೖ local helm ɻṜᒬ࠽ೳፙ౸ chartɻ • helm repo add prometheus-community https://prometheus- community.github.io/helm-charts • helm repo add stable https://charts.helm.sh/stable

Slide 15

Slide 15 text

҆᧋ Chart • ༻ prometheus chart ҆᧋Ұݸ release ໊ҝ demo-promɻ • helm install demo-prom prometheus-community/prometheus

Slide 16

Slide 16 text

NOTES.txt • 䋯׬ install/upgrade ޙ။ग़ݱత㘸໌ɻ • ҰᒬՄҎ༻ templateɻॴҎ௨ৗՄҎ௚઀ෳ੡ష্ɻཫ໘త namespace ྨ తҰൠိ㘸౎။ੋሣతɻ • export POD_NAME=$(kubectl get pods --namespace default -l "app=prometheus,component=server" -o jsonpath="{.items[0].metadata.name}") • kubectl --namespace default port-forward $POD_NAME 9090

Slide 17

Slide 17 text

Side Topic:HSTS • HTTP Strict Transport Security • Ұୠ༻ https ࿈աత໢Ҭɼब࠶໵ෆೳ༻ http ྃ... • localhost ༗࣌ީҰෆখ৺बෆೳ༻ http ྃ • ՄҎ༻ *.vcap.me ႔ཧɻ *.vcap.me Ӭԕ౎။ࢦ޲ 127.0.0.1

Slide 18

Slide 18 text

List release • ྻग़ݱࡏ context Լతॴ༗ release • Helm list

Slide 19

Slide 19 text

ઃఆ Chart • ༗ၷछํࣜ • --set key1=val1 (ෆਪનɼ๨ه೭લଧաॄኄबࢮఆྃʣ • --values values.yaml ( ՄҎ commit ਐ git )

Slide 20

Slide 20 text

ઃఆ Chart • values.yaml server: statefulSet: enabled: true •

Slide 21

Slide 21 text

ߋ৽ Chart • helm upgrade demo-prom prometheus-community/prometheus -f values.yaml

Slide 22

Slide 22 text

List Release History • ྻग़ release త㑖࢙ل㑚ɻ • helm history demo-prom

Slide 23

Slide 23 text

Rollback Release • Rollback release ౸೭લత൛ຊɼแؚ config, chart ൛ຊɻ • helm rollback demo-prom 1 • helm history demo-prom

Slide 24

Slide 24 text

႟আ release • helm uninstall demo-prom

Slide 25

Slide 25 text

ৗݟత޵ • ߋ৽ޙࣗಈੜ੒తີᛰᏓྃɿՄҎࡏ release secret ཫፙ౸ᢜతᆴɼઃఆਐ ჩᏐཫ೭ޙबෆ။Ꮣྃɻ • ৽తઃఆᔒ༗ੜᏈɿChart ᔒ༗ਖ਼֬ઃఆ Deployment/Statefulset/ DaemonSet తߋ৽ᑍ݅ɻधཁखಈࣥߦ kubectl rollout restartɻ

Slide 26

Slide 26 text

Helm 2 vs Helm 3 • ᔒ༗ Tiller ɼෆधཁࡏ K8S Cluster ཫ᧋౦੢ྃɻ • औফ౷Ұ Repoɼվҝ෼ࢄࣜɻՄҎ༻ https://artifacthub.io ፙ Chartɻ • ࢦྩ໊᜝᜗ඍվᏓɻ fetch -> pullɻ౳౳ɻ • ࢧԉ࢖༻ OCI registry ိଘ์ Chart

Slide 27

Slide 27 text

Helm 2 end of support • Tiller image Մೳᬋ࣌။׵஍ํଘ์ɻ • Helm 2 client Մೳ໵။׵஍ํɼෆա get.helm.sh ။ಈɻ • Stable chart repo https://github.com/helm/charts 
 ࡏ Nov 13, 2020 ਖ਼ࣜऴࢭࢧԉྃɻ

Slide 28

Slide 28 text

Helm vs Others • Kustomize • Operator

Slide 29

Slide 29 text

Helm vs Kustomize • Template vs Overlay(Patching) • Rollback • Helm ՄҎࡏ post rendering hook ཫ໘ݺڣ Kustomize • https://github.com/thomastaylor312/advanced-helm-demos/tree/master/ post-render

Slide 30

Slide 30 text

Helm vs Operator • Day 1 (Helm) vs Day 2(Operator) • ޓิɼhelm ෛ੹҆᧋ ɼ Operator ෛ੹ӡ࡞ɻ • ՄҎ༻ helm chart ိ෦ॺ Operator • https://sdk.operatorframework.io/docs/building-operators/helm/ quickstart/

Slide 31

Slide 31 text

መ຿ • ෆཁ௚઀༻ chart ɼఆٛࣗݾత chart ɼ࠶೺֎෦త chart ఆٛҝ dependencyɻᙛ࢖༻ configmap/secret ိ၏ઃఆ࣌࠽ํศɻ • ࢖༻ helmfile + helm secrets plugin ိ၏ GitOpsɼ೺Ұ੾౎ଘ์ࡏ Git ཫɻ • ળ༻ helm త plugin ܥ౷ɼՄҎఏڙڐଟֹ֎తޭೳɻ

Slide 32

Slide 32 text

ະ׬଴᠃ • ։ᚙࣗݾత Helm Chart • ࢖༻ helmfile • ։ᚙࣗݾత Helm Plugin

Slide 33

Slide 33 text

Q&A • Twitter: @johnlinvc • ౤Өยࡏ 
 https://bit.ly/39pcPiM • We're hiring DevOps @ West Pharma, 
 Deploying to hybrid cloud with K8Sɻ