用 Helm 來簡化 K8S 應用管理

參考文檔 :

https://helm.sh/docs/

https://github.com/helm/helm

一、什麼是 Helm

二、Helm 帶來的便捷

三、 Helm 工作原理及架構演變

3.1、工作原理

Chart Install 過程

Chart Update 過程

Chart Rollback 過程

3.2、架構演變

五、Helm 組件及相關術語

六、Helm 常用命令

m5xQVA

七、推薦倉庫

添加微軟倉庫爲 stable
$ helm repo add stable http://mirror.azure.cn/kubernetes/charts
"stable" has been added to your repositories
 
添加阿里雲倉庫爲 aliyun
$ helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts 
"aliyun" has been added to your repositories

查看本地已添加的倉庫
$ helm repo list 
NAME    URL                                                   
stable  http://mirror.azure.cn/kubernetes/charts              
aliyun  https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

查看倉庫所有的包
$ helm search repo stable

移除倉庫
$ helm repo remove stable

列出倉庫中相關的包
$ helm search repo mysql

八、Charts

8.1、目錄結構

demochart/
├── charts                          # 目錄用於存放所依賴的子chart
├── Chart.yaml                      # 描述這個 Chart 的相關信息、包括名字、描述信息、版本等
├── templates                       # 模板目錄,通常會使用values.yaml配置內容進行填充,板引擎渲染此目錄的文件後Tiller將渲染得到的結果 提交給Kubernetes創建響應的對象
│   ├── deployment.yaml             # deployment 控制器的 Go 模板文件
│   ├── _helpers.tpl                # 模板助手文件,定義的值可在模板中使用
│   ├── ingress.yaml                # ingress 的模板文件 
│   ├── NOTES.txt                   # Chart 部署到集羣后的一些信息,例如:如何使用、列出缺省值,可以理解爲幫助文檔
│   ├── serviceaccount.yaml
│   ├── service.yaml                # service 的 Go 模板文件
└── values.yaml                     # 模板的值文件,這些值會在安裝時應用到 GO 模板生成部署文件

8.2、構建一個無狀態應用模版 charts

部分常用語法說明 :http://masterminds.github.io/sprig/strings.html

$ tree demochart/
demochart/
├── charts
├── Chart.yaml
├── templates                   
│   ├── deployment.yaml  
└── values.yaml
apiVersion: v2
name: demochart
description: A Helm chart for Kubernetes, The author is Daizhe
type: application
version: 0.1.0
appVersion: 1.16.0
$ vim templates/deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: deployment
  name: {{ .Values.Name }}
spec:
  replicas: {{ .Values.replicas }}
  selector:
    matchLabels:
      app: deployment
  template:
    metadata:
      labels:
        app: deployment
    spec:
      containers:
      - image: {{ .Values.image }}
        name: nginx
Name: demo-deploy-nginx
replicas: 1
image: nginx:latest
$ helm install nginx-dep demochart/ --dry-run
$ helm install nginx-dep demochart/
$ helm list
$ helm upgrade -f values.yaml nginx-dep demochart
$ helm history nginx-dep
$ helm rollback nginx-dep 1
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/2bYH-pDoLxmnYktRnGt4gg