Slide 1

Slide 1 text

Enjoying k8s cluster with Minikube and Helm 2019/04/08 # node-1 @loftkun

Slide 2

Slide 2 text

@loftkun • • *(,! $ • /'. • %% ==( 10" )==> WEBSRE • )0+-k8s#&

Slide 3

Slide 3 text

• " • • !

Slide 4

Slide 4 text

Check out my Qiita ! minikube, helm [PR]

Slide 5

Slide 5 text

Agenda • My k8s environment and tools • kubectl • Minikube • Helm • Already tried Charts • Create Original Chart

Slide 6

Slide 6 text

My k8s cluster environments

Slide 7

Slide 7 text

kubectl

Slide 8

Slide 8 text

kubectl • + ('"() • ))&( )* %# !*'$)( !*'$)( '"(( • &) "* $ $ (# ( '*) $ )% )" • GIB@J.()"7632L • $ $%, *( ( (%')*) %' ""$#(&( • ""$#(&( AGCHJ= 5/;:-7632L • 0<6849>6?DGEKF1:-L

Slide 9

Slide 9 text

$ kubectl –h Advanced Commands: diff Diff live version against would-be applied version apply Apply a configuration to a resource by filename or stdin patch Update field(s) of a resource using strategic merge patch replace Replace a resource by filename or stdin wait Experimental: Wait for a specific condition on one or many resources. convert Convert config files between different API versions kustomize Build a kustomization target from a directory or a remote url.

Slide 10

Slide 10 text

Minikube

Slide 11

Slide 11 text

New features • v1.0.0 is released at 3/27 ! • • supports Kubernetes 1.14 by default • https://kubernetes.io/blog/2019/03/28/running-kubernetes-locally-on-linux-with- minikube-now-with-kubernetes-1.14-support/

Slide 12

Slide 12 text

single-node ? • Minikube single-node Kubernetes cluster • V1.0.0README.md • https://github.com/kubernetes/minikube/commit/ec5ac30

Slide 13

Slide 13 text

Become multi-node support !? • Roadmap (2019) • https://github.com/kubernetes/minikube/blob/master/docs/contributors/roadmap.md • #4 Support all Kubernetes features • Add multi-node support • minikube multi-node cluster

Slide 14

Slide 14 text

Setup is Simple ! (on ubuntu 17.10) # download curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube sudo cp minikube /usr/local/bin && rm minikube

Slide 15

Slide 15 text

Setup is Simple ! (on ubuntu 17.10) # download curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube sudo cp minikube /usr/local/bin && rm minikube # config as you like minikube config set cpus 12 minikube config set memory 40960

Slide 16

Slide 16 text

Setup is Simple ! (on ubuntu 17.10) # download curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube sudo cp minikube /usr/local/bin && rm minikube # config as you like minikube config set cpus 12 minikube config set memory 40960 # start cluster minikube start

Slide 17

Slide 17 text

$ kubectl get no NAME STATUS ROLES AGE VERSION minikube Ready master 10m v1.14.0

Slide 18

Slide 18 text

$ kubectl get no NAME STATUS ROLES AGE VERSION minikube Ready master 10m v1.14.0 $ kubectl get svc -A NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE default kubernetes ClusterIP 10.96.0.1 443/TCP 10m kube-system kube-dns ClusterIP 10.96.0.10 53/UDP,53/TCP,9153/TCP 10m kube-system monitoring-grafana NodePort 10.107.133.92 80:30002/TCP 10m kube-system monitoring-influxdb ClusterIP 10.109.201.109 8083/TCP,8086/TCP 10m

Slide 19

Slide 19 text

Be careful ! • Minikube (VM)(&<3?2) "'0;24 % • Default • CPU21-9:<2GB5.2020GB) " • Spinnaker ( 9:<10GB ) ,57=/*%'9:< • 9:<) ") " • minikube config set 18>6#) ", • !+*&'0;24 !@ • minikube delete $minikube start

Slide 20

Slide 20 text

Tips of Minikube • minikubeCPU default2 • https://qiita.com/loftkun/items/41ecde082778254de79a • minikube default2GB • https://qiita.com/loftkun/items/7400d5ae0e7b1fb7d26e • Spinnaker + Kayenta • https://qiita.com/loftkun/items/2fd1d598d04084495e2c

Slide 21

Slide 21 text

Helm

Slide 22

Slide 22 text

Overview • v2.13.0 is released at 2/27 ! • https://github.com/helm/helm/releases • ! # • "! • 10.2/+!*%&)'-(%,$3 • !!

Slide 23

Slide 23 text

Helm Hub https://hub.helm.sh/

Slide 24

Slide 24 text

Setup is Simple ! (on ubuntu 17.10) # download & install cli $ curl https://raw.githubusercontent.com/helm/helm/master/scripts/get | bash

Slide 25

Slide 25 text

Setup is Simple ! (on ubuntu 17.10) # download & install cli $ curl https://raw.githubusercontent.com/helm/helm/master/scripts/get | bash # deploy tiller $ helm init

Slide 26

Slide 26 text

Deploy a Chart (e.g. MongoDB) $ helm install stable/mongodb ¥ --name my-mongo ¥ --namespace my-mongo ¥ --set mongodbRootPassword=pass,mongodbUsername=user1,mongodbPassword=pass1,mongodbDatabase=testdb

Slide 27

Slide 27 text

Deploy a Chart (e.g. MongoDB) $ helm install stable/mongodb ¥ --name my-mongo ¥ --namespace my-mongo ¥ --set mongodbRootPassword=pass,mongodbUsername=user1,mongodbPassword=pass1,mongodbDatabase=testdb $ kubectl get svc -n my-mongo NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-mongo-mongodb ClusterIP 10.97.82.12 27017/TCP 37s

Slide 28

Slide 28 text

Deploy a Chart (e.g. MongoDB) $ helm install stable/mongodb ¥ --name my-mongo ¥ --namespace my-mongo ¥ --set mongodbRootPassword=pass,mongodbUsername=user1,mongodbPassword=pass1,mongodbDatabase=testdb $ kubectl get svc -n my-mongo NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-mongo-mongodb ClusterIP 10.97.82.12 27017/TCP 37s $ kubectl get po -n my-mongo NAME READY STATUS RESTARTS AGE my-mongo-mongodb-5ccffd7cb4-tkrd8 1/1 Running 0 40s $

Slide 29

Slide 29 text

Already tried Charts

Slide 30

Slide 30 text

• Grafana • Gitlab-ce • Minio • MongoDB • MySQL • Prometheus • includes alertmanager, pushgateway • Spinnaker Already tried Charts • Istio • Kafka • GitLab • Cloud native images • https://docs.gitlab.com/ee/inst all/docker.html#cloud-native- images • loftkun ( ) • abematv-comment-receiver charts/incubator charts/stable 3rd party repo

Slide 31

Slide 31 text

• Grafana • Gitlab-ce • Minio • MongoDB • MySQL • Prometheus • includes alertmanager, pushgateway • Spinnaker Already tried Charts • Istio • Kafka • GitLab • Cloud native images • https://docs.gitlab.com/ee/inst all/docker.html#cloud-native- images • loftkun ( my original chart ) • abematv-comment-receiver charts/incubator charts/stable 3rd party repo Today's Pickup

Slide 32

Slide 32 text

charts/incubator/istio ( Don't use now )

Slide 33

Slide 33 text

Be Careful ! • #$ "% !(* • Istio.io ')& •

Slide 34

Slide 34 text

• • $ helm fetch stable/spinnaker • $ helm template spinnaker-1.1.7.tgz > spinnaker-1.1.7.yaml

Slide 35

Slide 35 text

• !$ • $ helm fetch stable/spinnaker • $ helm template spinnaker-1.1.7.tgz > spinnaker-1.1.7.yaml • $ # " !$ • $ istioctl kube-inject -f ./spinnaker.yaml > ./spinnaker-injected.yaml

Slide 36

Slide 36 text

• $%! ) • $ helm fetch stable/spinnaker • $ helm template spinnaker-1.1.7.tgz > spinnaker-1.1.7.yaml • ) '$&$% ) • $ istioctl kube-inject -f ./spinnaker.yaml > ./spinnaker-injected.yaml • "#(% )+,-* • $ kubectl apply -f ./spinnaker-injected.yaml

Slide 37

Slide 37 text

Consepts

Slide 38

Slide 38 text

Consepts • Proxy ( Envoy ) • Pod • Automatic Manual

Slide 39

Slide 39 text

Consepts • Pilot • SideCar • ! yaml • Route • blue/green deploy • canary release • • • • •

Slide 40

Slide 40 text

charts/stable/prometheus

Slide 41

Slide 41 text

charts/stable/prometheus • 1Chart #% • Prometheus / Alertmanager / PushGateway • &" !$ • Prometheus ------> Alertmanager • Prometheus ------> scrape targets • PushGateway • Node, Service, Pod,

Slide 42

Slide 42 text

GitLab ( Cloud native images )

Slide 43

Slide 43 text

Cloud native images • % $&# • $$!# #$ #$ "$ % $& # • *0'1 %##*0+).-1, • /(, • "$##$$ • % $&#

Slide 44

Slide 44 text

Create Original Chart

Slide 45

Slide 45 text

Create New Chart $ helm create abematv-comment-receiver $ tree abematv-comment-receiver/ abematv-comment-receiver/ ├── charts ├── Chart.yaml ├── templates │ ├── deployment.yaml │ ├── _helpers.tpl │ ├── ingress.yaml │ ├── NOTES.txt │ ├── service.yaml │ └── tests │ └── test-connection.yaml └── values.yaml

Slide 46

Slide 46 text

Fix Chart Info ( e.g. image repo, tag ) $ vim abematv-comment-receiver/values.yaml $ cat abematv-comment-receiver/values.yaml image: repository: loftkun/abematv-comment-receiver tag: latest $ helm lint abematv-comment-receiver/ ==> Linting abematv-comment-receiver/ 1 chart(s) linted, no failures $

Slide 47

Slide 47 text

Deploy ! $ helm install ./abematv-comment-receiver ¥ --name abmtest ¥ --namespace abmtest $ kubectl get po -n abmtest NAME READY STATUS RESTARTS AGE abmtest-abematv-comment-receiver 1/1 Running 0 43s $ kubectl logs –f ${podname} -n abmtest {"id":"wnBd8uUPeey6BwP8PkkWWS","message":"10" !#$ ","createdAtMs":1554630315263}

Slide 48

Slide 48 text

loftkun/abematv-comment-receiver • ")16- %$&03%,05' $ • #)6+. "5(!$ • )16- : *26/4( https://abema.tv/now-on-air/shogi ) $ kubectl logs abmtest-abematv-comment-receiver-7775747d65-h8zs2 -n abmtest {"id":"XEfQoBeq3LU5Tq4kXTJZ5R","message":"360;?75","createdAtMs":1554630249431} {"id":"hn3gbIw0245r908JfrgOcN","message":"'/)<9!'"4- ,( 81%.","createdAtMs":1554630274691} {"id":"hn3gbIw0245r908JfrgOmx","message":"> 2by","createdAtMs":1554630307015} {"id":"wnBd8uUPeey6BwP8PkkWWS","message":"10*+:! # $=&","createdAtMs":1554630315263}

Slide 49

Slide 49 text

loftkun/abematv-comment-receiver • , • &%+"%.231#*)% • MongoDB%!-#.23104/,#*)% • 'Kustomize# *$"(

Slide 50

Slide 50 text

Tips of Helm • Helm • https://qiita.com/loftkun/items/853bbaabd4bf0fa96e9c • Pushgateway->Prometheus->Alertmanager->Webhook • https://qiita.com/loftkun/items/28cdf77ea9269e255a53 • GitLab • https://qiita.com/loftkun/items/c3945a2595e4f9c7ba09

Slide 51

Slide 51 text

Appendix : other trying environments

Slide 52

Slide 52 text

Appendix : other trying environments • &+"- )-$** • "+=4C;0B?>D1?/A • '#)')*#+'( • 0:2@ '#)83 8< 5;07 • #* $,*+) < #,+$ ?9;0B6E • !++(*...'#)'%()',+*'#)*#+'( • '#) E'%('*'& ,)&+*=E • !++(* "+!,'%'#)'%('*'&#,)&+*

Slide 53

Slide 53 text