Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo

1

Helm 3

2

Helm Is The Package Manager For
Kubernetes
Helm은 Kubernetes의 패키지 관리자입니다
≈ Apt

3

Dev QA Prod
Kubernetes

4

You Can Download And Run Helm For These
Systems
다양한 OS별 실행파일을 지원

5

Helm 3

6

A Similar Command Line Experience
예전과 유사한 커맨드 라인
$ helm repo add stable https://kubernetes-charts.storage.googleapis.com/
$ helm search repo mariadb
NAME CHART VERSION APP VERSION DESCRIPTION
stable/mariadb 7.1.0 10.3.20 Fast, reliable, scalable, and easy to use open-...
stable/phpmyadmin 4.2.4 4.9.2 phpMyAdmin is an mysql administration frontend
$ helm install mymaria stable/mariadb
$ helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
mymaria default 1 2019-11-27 14:10:55.216169 -0500 EST deployed mariadb-7.1.0 10.3.20
$ helm uninstall mymaria

7

Namespaces!
네임 스페이스!
$ helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
mymaria default 1 2019-11-27 14:10:55.216169 -0500 EST deployed mariadb-7.1.0 10.3.20
$ helm ls --all-namespaces
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
mymaria default 1 2019-12-01 18:05:53.568566 -0500 EST deployed mariadb-7.1.0 10.3.20
mymaria2 foo 1 2019-12-01 18:06:12.520784 -0500 EST deployed mariadb-7.1.0 10.3.20
$ helm ls –-namespace foo
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
mymaria2 foo 1 2019-12-01 18:06:12.520784 -0500 EST deployed mariadb-7.1.0 10.3.20
$ helm install –n foo myNewMaria stable/mariadb

8

Helm Client
Tiller
Kubernetes API
Helm v2 Architecture
Helm v2 아키텍처

9

Helm Client Kubernetes API
Helm v3 Architecture
Helm v3 아키텍처

10

Helm Client Kubernetes API
Helm v3 Architecture
Helm v3 아키텍처
Uses normal user credentials
일반 사용자 인증 사용

11

Helm Client Kubernetes API
Helm v3 Architecture
Helm v3 아키텍처
Release information stored as Secret
in the namespace with the app by default
앱이 설치된 네임스페이스에 릴리즈 정보가
Secret 으로 저장 (기본 설정)

12

Helm 3

13

Helm 3

14

3-way Strategic Merge Patches
3 방향 전략적 병합 패치
Patch
패치
Live State
라이브 상태
New Manifest
신규 매니페스트
Old Manifest
이전 매니페스트

15

3-way Strategic Merge Patches
3 방향 전략적 병합 패치
containers:
- name: server
image: nginx:2.0.0
containers:
- name: server
image: nginx:2.0.0
- name: my-injected-sidecar
image: my-cool-mesh:1.0.0

16

Additions To Charts
차트내 신규 기능 추가
$ tree newChart
newChart
├── Chart.yaml
├── charts
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── ingress.yaml
│ ├── service.yaml
│ ├── serviceaccount.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "newChart.fullname" . }}
labels:
{{- include "newChart.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
...

17

apiVersion v2 For Helm 3
Helm 3 용 apiVersion v2
apiVersion: v2
name: mychart
description: A Helm chart for Kubernetes
Chart.yaml

18

Dependencies Now In Chart.yaml
현재: Chart.yaml의 종속성
apiVersion: v2
name: mychart
description: A Helm chart for Kubernetes
dependencies:
- name: mariadb
version: 5.x.x
repository: https://kubernetes-charts.storage.googleapis.com/
condition: mariadb.enabled
tags:
- database
Chart.yaml

19

Library Charts
apiVersion: v2
name: mychart
description: A Helm chart for Kubernetes
type: library
Chart.yaml

20

JSON Schema Validation
JSON 스키마 유효성 검사
{
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"addresses": {
"description": "List of addresses",
"items": {
"properties": {
"city": {
"type": "string"
},
...
values.schema.json

21

Helm 3

22

Custom Resource Definitions (CRD)
$ tree -L 1 ambassador
ambassador
├── CHANGELOG.md
├── Chart.yaml
├── OWNERS
├── README.md
├── ci
├── crds
├── templates
└── values.yaml
$ tree ambassador/crds
ambassador/crds
├── authservice.yaml
├── consulresolver.yaml
├── filter.yaml
├── filterpolicy.yaml
├── kubernetesendpointresolver.yaml
├── kubernetesserviceresolver.yaml
├── mapping.yaml
├── module.yaml
├── ratelimit.yaml
├── ratelimitservice.yaml
├── tcpmapping.yaml
├── tlscontext.yaml
└── tracingservice.yaml

23

CRDs across Helm v2 and v3
Helm v2 및 v3의 CRD
$ tree ambassador/crds
ambassador/crds
├── authservice.yaml
├── consulresolver.yaml
├── filter.yaml
├── filterpolicy.yaml
├── kubernetesendpointresolver.yaml
├── kubernetesserviceresolver.yaml
├── mapping.yaml
├── module.yaml
├── ratelimit.yaml
├── ratelimitservice.yaml
├── tcpmapping.yaml
├── tlscontext.yaml
└── tracingservice.yaml
For Helm v3 Use The crds Directory
Helm v3의 경우 crds 디렉토리를
사용하십시오.
For Helm v2 Use A Template With crd-install Hook
Helm v2의 경우 crd 설치 후크가있는 템플릿 사용
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: authservices.getambassador.io
labels:
app.kubernetes.io/name: ambassador
annotations:
"helm.sh/hook": crd-install
...

24

Helm Experiments (베타 기능)
$ export HELM_EXPERIMENTAL_OCI=1
$ docker run -dp 5000:5000 --restart=always --name registry registry
$ helm chart save mychart localhost:5000/myrepo/mychart:1.2.3
ref: localhost:5000/myrepo/mychart:1.2.3
digest: 896935a875c8fe8f8b9b81e5862413de316f8da3d6d9a7e0f6f1e90f6204f551
size: 2.7 KiB
name: mychart
version: 0.1.0
1.2.3: saved
$ helm chart list
REF NAME VERSION DIGEST SIZE CREATED
localhost:5000/myrepo/mychart:1.2.3 mychart 0.1.0 896935a 2.7 KiB About a minute
> OCI Registries (OCI 레지스트리)

25

What about upgrading to Helm 3?
Helm 3으로 업그레이드는 어떻게 할 수 있나요?
After all, the storage format changed
$ helm plugin install https://github.com/helm/helm-2to3
$ helm 2to3 move config
$ helm 2to3 convert RELEASE
$ helm 2to3 cleanup
* Read the docs to learn about flags like --dry-run
--dry-run과 같은 플래그는 docs를 확인해주세요

26

Learn more: https://helm.sh
Read Docs: https://helm.sh/docs
Source: https://github.com/helm/helm
Mailing list: cncf-helm@lists.cncf.io
https://lists.cncf.io/g/cncf-helm

More Related Content

Helm 3

  • 2. Helm Is The Package Manager For Kubernetes Helm은 Kubernetes의 패키지 관리자입니다 ≈ Apt
  • 4. You Can Download And Run Helm For These Systems 다양한 OS별 실행파일을 지원
  • 6. A Similar Command Line Experience 예전과 유사한 커맨드 라인 $ helm repo add stable https://kubernetes-charts.storage.googleapis.com/ $ helm search repo mariadb NAME CHART VERSION APP VERSION DESCRIPTION stable/mariadb 7.1.0 10.3.20 Fast, reliable, scalable, and easy to use open-... stable/phpmyadmin 4.2.4 4.9.2 phpMyAdmin is an mysql administration frontend $ helm install mymaria stable/mariadb $ helm list NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION mymaria default 1 2019-11-27 14:10:55.216169 -0500 EST deployed mariadb-7.1.0 10.3.20 $ helm uninstall mymaria
  • 7. Namespaces! 네임 스페이스! $ helm list NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION mymaria default 1 2019-11-27 14:10:55.216169 -0500 EST deployed mariadb-7.1.0 10.3.20 $ helm ls --all-namespaces NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION mymaria default 1 2019-12-01 18:05:53.568566 -0500 EST deployed mariadb-7.1.0 10.3.20 mymaria2 foo 1 2019-12-01 18:06:12.520784 -0500 EST deployed mariadb-7.1.0 10.3.20 $ helm ls –-namespace foo NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION mymaria2 foo 1 2019-12-01 18:06:12.520784 -0500 EST deployed mariadb-7.1.0 10.3.20 $ helm install –n foo myNewMaria stable/mariadb
  • 8. Helm Client Tiller Kubernetes API Helm v2 Architecture Helm v2 아키텍처
  • 9. Helm Client Kubernetes API Helm v3 Architecture Helm v3 아키텍처
  • 10. Helm Client Kubernetes API Helm v3 Architecture Helm v3 아키텍처 Uses normal user credentials 일반 사용자 인증 사용
  • 11. Helm Client Kubernetes API Helm v3 Architecture Helm v3 아키텍처 Release information stored as Secret in the namespace with the app by default 앱이 설치된 네임스페이스에 릴리즈 정보가 Secret 으로 저장 (기본 설정)
  • 14. 3-way Strategic Merge Patches 3 방향 전략적 병합 패치 Patch 패치 Live State 라이브 상태 New Manifest 신규 매니페스트 Old Manifest 이전 매니페스트
  • 15. 3-way Strategic Merge Patches 3 방향 전략적 병합 패치 containers: - name: server image: nginx:2.0.0 containers: - name: server image: nginx:2.0.0 - name: my-injected-sidecar image: my-cool-mesh:1.0.0
  • 16. Additions To Charts 차트내 신규 기능 추가 $ tree newChart newChart ├── Chart.yaml ├── charts ├── templates │ ├── NOTES.txt │ ├── _helpers.tpl │ ├── deployment.yaml │ ├── ingress.yaml │ ├── service.yaml │ ├── serviceaccount.yaml │ └── tests │ └── test-connection.yaml └── values.yaml apiVersion: apps/v1 kind: Deployment metadata: name: {{ include "newChart.fullname" . }} labels: {{- include "newChart.labels" . | nindent 4 }} spec: replicas: {{ .Values.replicaCount }} ...
  • 17. apiVersion v2 For Helm 3 Helm 3 용 apiVersion v2 apiVersion: v2 name: mychart description: A Helm chart for Kubernetes Chart.yaml
  • 18. Dependencies Now In Chart.yaml 현재: Chart.yaml의 종속성 apiVersion: v2 name: mychart description: A Helm chart for Kubernetes dependencies: - name: mariadb version: 5.x.x repository: https://kubernetes-charts.storage.googleapis.com/ condition: mariadb.enabled tags: - database Chart.yaml
  • 19. Library Charts apiVersion: v2 name: mychart description: A Helm chart for Kubernetes type: library Chart.yaml
  • 20. JSON Schema Validation JSON 스키마 유효성 검사 { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "addresses": { "description": "List of addresses", "items": { "properties": { "city": { "type": "string" }, ... values.schema.json
  • 22. Custom Resource Definitions (CRD) $ tree -L 1 ambassador ambassador ├── CHANGELOG.md ├── Chart.yaml ├── OWNERS ├── README.md ├── ci ├── crds ├── templates └── values.yaml $ tree ambassador/crds ambassador/crds ├── authservice.yaml ├── consulresolver.yaml ├── filter.yaml ├── filterpolicy.yaml ├── kubernetesendpointresolver.yaml ├── kubernetesserviceresolver.yaml ├── mapping.yaml ├── module.yaml ├── ratelimit.yaml ├── ratelimitservice.yaml ├── tcpmapping.yaml ├── tlscontext.yaml └── tracingservice.yaml
  • 23. CRDs across Helm v2 and v3 Helm v2 및 v3의 CRD $ tree ambassador/crds ambassador/crds ├── authservice.yaml ├── consulresolver.yaml ├── filter.yaml ├── filterpolicy.yaml ├── kubernetesendpointresolver.yaml ├── kubernetesserviceresolver.yaml ├── mapping.yaml ├── module.yaml ├── ratelimit.yaml ├── ratelimitservice.yaml ├── tcpmapping.yaml ├── tlscontext.yaml └── tracingservice.yaml For Helm v3 Use The crds Directory Helm v3의 경우 crds 디렉토리를 사용하십시오. For Helm v2 Use A Template With crd-install Hook Helm v2의 경우 crd 설치 후크가있는 템플릿 사용 apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: authservices.getambassador.io labels: app.kubernetes.io/name: ambassador annotations: "helm.sh/hook": crd-install ...
  • 24. Helm Experiments (베타 기능) $ export HELM_EXPERIMENTAL_OCI=1 $ docker run -dp 5000:5000 --restart=always --name registry registry $ helm chart save mychart localhost:5000/myrepo/mychart:1.2.3 ref: localhost:5000/myrepo/mychart:1.2.3 digest: 896935a875c8fe8f8b9b81e5862413de316f8da3d6d9a7e0f6f1e90f6204f551 size: 2.7 KiB name: mychart version: 0.1.0 1.2.3: saved $ helm chart list REF NAME VERSION DIGEST SIZE CREATED localhost:5000/myrepo/mychart:1.2.3 mychart 0.1.0 896935a 2.7 KiB About a minute > OCI Registries (OCI 레지스트리)
  • 25. What about upgrading to Helm 3? Helm 3으로 업그레이드는 어떻게 할 수 있나요? After all, the storage format changed $ helm plugin install https://github.com/helm/helm-2to3 $ helm 2to3 move config $ helm 2to3 convert RELEASE $ helm 2to3 cleanup * Read the docs to learn about flags like --dry-run --dry-run과 같은 플래그는 docs를 확인해주세요
  • 26. Learn more: https://helm.sh Read Docs: https://helm.sh/docs Source: https://github.com/helm/helm Mailing list: cncf-helm@lists.cncf.io https://lists.cncf.io/g/cncf-helm