Kubernetes
开源文化 ThingsBoard 开源中间件 Kubernetes DevOps KubeEdge EdgeX Foundry Node-RED
Documentation > 技术进阶 > Helm实践

On this page

Helm实践

一、Helm

1.安装Helm

安装过程

1
2
3
4
5
6
7
wget https://get.helm.sh/helm-v3.7.0-linux-amd64.tar.gz

tar zxvf helm-v3.7.0-linux-amd64.tar.gz

cp linux-amd64/helm /usr/local/bin/

helm help
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 下载安装文件
[root@k8s-master install]# wget https://get.helm.sh/helm-v3.7.0-linux-amd64.tar.gz


# 解压
[root@k8s-master install]# tar zxvf helm-v3.7.0-linux-amd64.tar.gz
linux-amd64/
linux-amd64/helm
linux-amd64/LICENSE
linux-amd64/README.md

[root@k8s-master install]# tree
.
├── helm-v3.7.0-linux-amd64.tar.gz
└── linux-amd64
    ├── helm
    ├── LICENSE
    └── README.md


[root@k8s-master install]# cd linux-amd64/
[root@k8s-master linux-amd64]# ls
helm  LICENSE  README.md


# 复制
[root@k8s-master linux-arm64]# cp helm /usr/local/bin/

# 命令补全
# 添加环境变量
[root@k8s-master linux-amd64]# echo "source <(helm completion bash)" >> ~/.bashrc
[root@k8s-master linux-amd64]# source ~/.bashrc


# 查看版本
[root@k8s-master linux-amd64]# helm version
version.BuildInfo{Version:"v3.7.0", GitCommit:"eeac83883cb4014fe60267ec6373570374ce770b", GitTreeState:"clean", GoVersion:"go1.16.8"}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
[root@k8s-master linux-amd64]# helm

[root@k8s-master linux-amd64]# helm help
The Kubernetes package manager

Common actions for Helm:

- helm search:    search for charts
- helm pull:      download a chart to your local directory to view
- helm install:   upload the chart to Kubernetes
- helm list:      list releases of charts

Environment variables:

| Name                               | Description                                                                       |
|------------------------------------|-----------------------------------------------------------------------------------|
| $HELM_CACHE_HOME                   | set an alternative location for storing cached files.                             |
| $HELM_CONFIG_HOME                  | set an alternative location for storing Helm configuration.                       |
| $HELM_DATA_HOME                    | set an alternative location for storing Helm data.                                |
| $HELM_DEBUG                        | indicate whether or not Helm is running in Debug mode                             |
| $HELM_DRIVER                       | set the backend storage driver. Values are: configmap, secret, memory, sql.       |
| $HELM_DRIVER_SQL_CONNECTION_STRING | set the connection string the SQL storage driver should use.                      |
| $HELM_MAX_HISTORY                  | set the maximum number of helm release history.                                   |
| $HELM_NAMESPACE                    | set the namespace used for the helm operations.                                   |
| $HELM_NO_PLUGINS                   | disable plugins. Set HELM_NO_PLUGINS=1 to disable plugins.                        |
| $HELM_PLUGINS                      | set the path to the plugins directory                                             |
| $HELM_REGISTRY_CONFIG              | set the path to the registry config file.                                         |
| $HELM_REPOSITORY_CACHE             | set the path to the repository cache directory                                    |
| $HELM_REPOSITORY_CONFIG            | set the path to the repositories file.                                            |
| $KUBECONFIG                        | set an alternative Kubernetes configuration file (default "~/.kube/config")       |
| $HELM_KUBEAPISERVER                | set the Kubernetes API Server Endpoint for authentication                         |
| $HELM_KUBECAFILE                   | set the Kubernetes certificate authority file.                                    |
| $HELM_KUBEASGROUPS                 | set the Groups to use for impersonation using a comma-separated list.             |
| $HELM_KUBEASUSER                   | set the Username to impersonate for the operation.                                |
| $HELM_KUBECONTEXT                  | set the name of the kubeconfig context.                                           |
| $HELM_KUBETOKEN                    | set the Bearer KubeToken used for authentication.                                 |

Helm stores cache, configuration, and data based on the following configuration order:

- If a HELM_*_HOME environment variable is set, it will be used
- Otherwise, on systems supporting the XDG base directory specification, the XDG variables will be used
- When no other location is set a default location will be used based on the operating system

By default, the default directories depend on the Operating System. The defaults are listed below:

| Operating System | Cache Path                | Configuration Path             | Data Path               |
|------------------|---------------------------|--------------------------------|-------------------------|
| Linux            | $HOME/.cache/helm         | $HOME/.config/helm             | $HOME/.local/share/helm |
| macOS            | $HOME/Library/Caches/helm | $HOME/Library/Preferences/helm | $HOME/Library/helm      |
| Windows          | %TEMP%\helm               | %APPDATA%\helm                 | %APPDATA%\helm          |

Usage:
  helm [command]

Available Commands:
  completion  generate autocompletion scripts for the specified shell
  create      create a new chart with the given name
  dependency  manage a chart's dependencies
  env         helm client environment information
  get         download extended information of a named release
  help        Help about any command
  history     fetch release history
  install     install a chart
  lint        examine a chart for possible issues
  list        list releases
  package     package a chart directory into a chart archive
  plugin      install, list, or uninstall Helm plugins
  pull        download a chart from a repository and (optionally) unpack it in local directory
  repo        add, list, remove, update, and index chart repositories
  rollback    roll back a release to a previous revision
  search      search for a keyword in charts
  show        show information of a chart
  status      display the status of the named release
  template    locally render templates
  test        run tests for a release
  uninstall   uninstall a release
  upgrade     upgrade a release
  verify      verify that a chart at the given path has been signed and is valid
  version     print the client version information

Flags:
      --debug                       enable verbose output
  -h, --help                        help for helm
      --kube-apiserver string       the address and the port for the Kubernetes API server
      --kube-as-group stringArray   group to impersonate for the operation, this flag can be repeated to specify multiple groups.
      --kube-as-user string         username to impersonate for the operation
      --kube-ca-file string         the certificate authority file for the Kubernetes API server connection
      --kube-context string         name of the kubeconfig context to use
      --kube-token string           bearer token used for authentication
      --kubeconfig string           path to the kubeconfig file
  -n, --namespace string            namespace scope for this request
      --registry-config string      path to the registry config file (default "/root/.config/helm/registry.json")
      --repository-cache string     path to the file containing cached repository indexes (default "/root/.cache/helm/repository")
      --repository-config string    path to the file containing repository names and URLs (default "/root/.config/helm/repositories.yaml")

Use "helm [command] --help" for more information about a command.

2.部署Nginx

2.1.创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 创建mynginx
[root@k8s-master test]# helm create mynginx -n dev
Creating mynginx

[root@k8s-master test]# ll
drwxr-xr-x 4 root root    93 Oct 11 11:25 mynginx

[root@k8s-master test]# tree mynginx
mynginx
├── charts
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── NOTES.txt
│   ├── serviceaccount.yaml
│   ├── service.yaml
│   └── tests
│       └── test-connection.yaml
└── values.yaml

3 directories, 10 files


--------------------------------------------
# 删除多余文件
# templates只保留deployment.yaml、service.yaml、NOTES.txt

[root@k8s-master test]# tree mynginx
mynginx
├── charts
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   ├── NOTES.txt
│   └── service.yaml
└── values.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#模板文件

# Chart.yaml
[root@k8s-master mynginx]# vim Chart.yaml

apiVersion: v2
name: mynginx
description: A Helm chart for Kubernetes
type: application
version: 0.1.0
appVersion: "1.15.0"


# values.yaml
[root@k8s-master mynginx]# vim values.yaml

replicas: 3
image: nginx
tag: 1.15
serviceport: 80
targetport: 80
label: nginx


# NOTES.txt
[root@k8s-master templates]# vim NOTES.txt

hello


# deployment.yaml
[root@k8s-master templates]# vim deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: 
  name: 
spec:
  replicas: 
  selector:
    matchLabels:
      app: 
  template:
    metadata:
      labels:
        app: 
    spec:
      containers:
      - image: :
        name: web


# service.yaml
[root@k8s-master templates]# vim service.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    app: 
  name: 
spec:
  ports:
  - port: 
    protocol: TCP
    targetPort: 
  selector:
    app: 
  type: NodePort

2.2.安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# 查看实际的模板被渲染过后的资源文件
# helm get manifest web
# helm install web nginx/

# 生成的最终的资源清单文件打印出来,而不会真正的去部署一个release实例
# helm install --name mychart --dry-run --debug -f global.yaml ./mychart/
# helm install --name mychart --dry-run --debug --set course="k8s" ./mychart/


# 调试
# Helm也提供了--dry-run --debug调试参数,帮助你验证模板正确性。在执行helm install时候带上这两个参数就可以把对应的values值和渲染的资源清单打印出来,而不会真正的去部署一个release。
[root@k8s-master test]# helm install web mynginx/ --dry-run --debug -n dev
install.go:178: [debug] Original chart version: ""
install.go:199: [debug] CHART PATH: /k8s/helm/test/mynginx

NAME: web
LAST DEPLOYED: Mon Oct 11 13:13:55 2021
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
USER-SUPPLIED VALUES:
{}

COMPUTED VALUES:
image: nginx
label: nginx
replicas: 3
serviceport: 80
tag: 1.15
targetport: 80

HOOKS:
MANIFEST:
---
# Source: mynginx/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx
  name: web
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: NodePort
---
# Source: mynginx/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: web
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.15
        name: web

NOTES:
hello


[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED	STATUS	CHART	APP VERSION


----------------------------------------------------------------------
# 安装
[root@k8s-master test]# helm install web mynginx/ -n dev
NAME: web
LAST DEPLOYED: Mon Oct 11 12:51:34 2021
NAMESPACE: dev
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
hello


[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                               	STATUS  	CHART        	APP VERSION
web 	dev      	1       	2021-10-11 13:16:37.74400198 +0800 CST	deployed	mynginx-0.1.0	1.15.0   


[root@k8s-master test]# helm status web -n dev
NAME: web
LAST DEPLOYED: Mon Oct 11 13:16:37 2021
NAMESPACE: dev
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
hello


# 检索已经发布的 release 的资源文件
[root@k8s-master test]# helm get manifest web -n dev
---
# Source: mynginx/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx
  name: web
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: NodePort
---
# Source: mynginx/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: web
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.15
        name: web


[root@k8s-master test]# helm history web -n dev
REVISION	UPDATED                 	STATUS  	CHART        	APP VERSION	DESCRIPTION     
1       	Mon Oct 11 13:16:37 2021	deployed	mynginx-0.1.0	1.15.0     	Install complete


[root@k8s-master test]# kubectl get all -n dev
NAME                       READY   STATUS    RESTARTS   AGE
pod/web-84b7cd6c7c-dhndc   1/1     Running   0          62s
pod/web-84b7cd6c7c-mnk4z   1/1     Running   0          62s
pod/web-84b7cd6c7c-pjbmg   1/1     Running   0          62s

NAME          TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/web   NodePort   10.103.41.189   <none>        80:31251/TCP   62s

NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/web   3/3     3            3           62s

NAME                             DESIRED   CURRENT   READY   AGE
replicaset.apps/web-84b7cd6c7c   3         3         3       62s


# 访问
http://172.51.216.81:31251/
curl 10.103.41.189


# 打包
# 修改Chart.yaml中的helm chart配置信息,然后使用下列命令将chart打包成一个压缩文件。
# 打包出mynginx-0.1.0.tgz文件。
[root@k8s-master test]# helm package mynginx
Successfully packaged chart and saved it to: /k8s/helm/test/mynginx-0.1.0.tgz
[root@k8s-master test]# ll
drwxr-xr-x 4 root root    93 Oct 11 13:12 mynginx
-rw-r--r-- 1 root root   869 Oct 11 13:43 mynginx-0.1.0.tgz

2.3.打包并发布到本地仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                               	STATUS  	CHART        	APP VERSION
web 	dev      	1       	2021-10-11 13:16:37.74400198 +0800 CST	deployed	mynginx-0.1.0	1.15.0    

#从上面 helm list 输出的结果中我们可以看到有一个 Revision(更改历史)字段,该字段用于表示某一个 Release 被更新的次数,我们可以用该特性对已部署的 Release 进行回滚。
#修改 Chart.yaml 文件
#将版本号从 0.1.0 修改为 0.2.0, 然后使用 helm package 命令打包并发布到本地仓库。

# Chart.yaml
[root@k8s-master mynginx]# vim Chart.yaml
apiVersion: v2
name: mynginx
description: A Helm chart for Kubernetes
type: application
version: 0.2.0
appVersion: "1.15.0"


[root@k8s-master test]# helm package mynginx
Successfully packaged chart and saved it to: /k8s/helm/test/mynginx-0.2.0.tgz
[root@k8s-master test]# ll
drwxr-xr-x 4 root root    93 Oct 11 13:51 mynginx
-rw-r--r-- 1 root root   869 Oct 11 13:43 mynginx-0.1.0.tgz
-rw-r--r-- 1 root root   870 Oct 11 13:53 mynginx-0.2.0.tgz


# 查询本地仓库中的 Chart 信息
# 未测试通过
root@k8s-master test]# helm search mynginx -l

2.4.升级

1
2
3
4
5
6
7
8
9
10
11
12
helm upgrade 命令将已部署的应用升级到新版本
发布新版本的chart时,或者当您要更改发布的配置时,可以使用该helm upgrade 命令。
# helm upgrade --set imageTag=1.17 web mynginx
# helm upgrade -f values.yaml web mynginx


values
Values对象是为Chart模板提供值,这个对象的值有4个来源:
chart 包中的 values.yaml 文件
父 chart 包的 values.yaml 文件
通过 helm install 或者 helm upgrade 的 -f或者 --values参数传入的自定义的 yaml 文件
通过 --set 参数传入的值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
[root@k8s-master test]# helm upgrade web --set replicas=5 mynginx -n dev
Release "web" has been upgraded. Happy Helming!
NAME: web
LAST DEPLOYED: Mon Oct 11 14:12:25 2021
NAMESPACE: dev
STATUS: deployed
REVISION: 2
TEST SUITE: None
NOTES:
hello

[root@k8s-master test]# kubectl get pod -n dev
NAME                   READY   STATUS              RESTARTS   AGE
web-84b7cd6c7c-dhndc   1/1     Running             0          56m
web-84b7cd6c7c-gzzqh   1/1     Running             0          30s
web-84b7cd6c7c-mnk4z   1/1     Running             0          56m
web-84b7cd6c7c-pjbmg   1/1     Running             0          56m
web-84b7cd6c7c-rlzpd   0/1     ContainerCreating   0          30s


[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                               	STATUS  	CHART        	APP VERSION
web 	dev      	2       	2021-10-11 14:12:25.81925385 +0800 CST	deployed	mynginx-0.2.0	1.15.0     

[root@k8s-master test]# helm history web -n dev
REVISION	UPDATED                 	STATUS    	CHART        	APP VERSION	DESCRIPTION     
1       	Mon Oct 11 13:16:37 2021	superseded	mynginx-0.1.0	1.15.0     	Install complete
2       	Mon Oct 11 14:12:25 2021	deployed  	mynginx-0.2.0	1.15.0     	Upgrade complete


[root@k8s-master test]# helm get manifest web -n dev
---
# Source: mynginx/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx
  name: web
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: NodePort
---
# Source: mynginx/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: web
spec:
  replicas: 5
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.15
        name: web

通过修改values.yaml升级

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# 升级前
[root@k8s-master mynginx]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                               	STATUS  	CHART        	APP VERSION
web 	dev      	2       	2021-10-11 14:12:25.81925385 +0800 CST	deployed	mynginx-0.2.0	1.15.0     
[root@k8s-master mynginx]# helm status web -n dev
NAME: web
LAST DEPLOYED: Mon Oct 11 14:12:25 2021
NAMESPACE: dev
STATUS: deployed
REVISION: 2
TEST SUITE: None
NOTES:
hello

[root@k8s-master mynginx]# helm history web -n dev
REVISION	UPDATED                 	STATUS    	CHART        	APP VERSION	DESCRIPTION     
1       	Mon Oct 11 13:16:37 2021	superseded	mynginx-0.1.0	1.15.0     	Install complete
2       	Mon Oct 11 14:12:25 2021	deployed  	mynginx-0.2.0	1.15.0     	Upgrade complete

[root@k8s-master test]# kubectl get pod -n dev
NAME                   READY   STATUS    RESTARTS   AGE
web-84b7cd6c7c-dhndc   1/1     Running   0          68m
web-84b7cd6c7c-gzzqh   1/1     Running   0          12m
web-84b7cd6c7c-mnk4z   1/1     Running   0          68m
web-84b7cd6c7c-pjbmg   1/1     Running   0          68m
web-84b7cd6c7c-rlzpd   1/1     Running   0          12m


# 修改文件
# 修改版本version: 0.3.0  tag: 1.16 

[root@k8s-master mynginx]# vim Chart.yaml
apiVersion: v2
name: mynginx
description: A Helm chart for Kubernetes
type: application
version: 0.3.0
appVersion: "1.16.0"


[root@k8s-master mynginx]# vim values.yaml
replicas: 3
image: nginx
tag: 1.16
serviceport: 80
targetport: 80
label: nginx


# 升级
[root@k8s-master test]# helm upgrade web mynginx/ -n dev
Release "web" has been upgraded. Happy Helming!
NAME: web
LAST DEPLOYED: Mon Oct 11 14:25:49 2021
NAMESPACE: dev
STATUS: deployed
REVISION: 3
TEST SUITE: None
NOTES:
hello


[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART        	APP VERSION
web 	dev      	3       	2021-10-11 14:25:49.657012895 +0800 CST	deployed	mynginx-0.3.0	1.16.0     
[root@k8s-master test]# helm history web -n dev
REVISION	UPDATED                 	STATUS    	CHART        	APP VERSION	DESCRIPTION     
1       	Mon Oct 11 13:16:37 2021	superseded	mynginx-0.1.0	1.15.0     	Install complete
2       	Mon Oct 11 14:12:25 2021	superseded	mynginx-0.2.0	1.15.0     	Upgrade complete
3       	Mon Oct 11 14:25:49 2021	deployed  	mynginx-0.3.0	1.16.0     	Upgrade complete

[root@k8s-master test]# kubectl get pod -n dev
NAME                   READY   STATUS    RESTARTS   AGE
web-6fbb9b87dd-8wznf   1/1     Running   0          81s
web-6fbb9b87dd-k58gv   1/1     Running   0          30s
web-6fbb9b87dd-mgslf   1/1     Running   0          29s
web-6fbb9b87dd-spxvh   1/1     Running   0          81s
web-6fbb9b87dd-tgf84   1/1     Running   0          81s
[root@k8s-master test]# helm get manifest web -n dev
---
# Source: mynginx/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx
  name: web
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: NodePort
---
# Source: mynginx/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: web
spec:
  replicas: 5
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.16
        name: web

2.5.回滚

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# 如果在发布后没有达到预期的效果,则可以使用helm rollback回滚到之前的版本。
# 例如将应用回滚到第一个版本:
helm rollback web 1


# 回滚前
[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART        	APP VERSION
web 	dev      	3       	2021-10-11 14:25:49.657012895 +0800 CST	deployed	mynginx-0.3.0	1.16.0     
[root@k8s-master test]# helm status web -n dev
NAME: web
LAST DEPLOYED: Mon Oct 11 14:25:49 2021
NAMESPACE: dev
STATUS: deployed
REVISION: 3
TEST SUITE: None
NOTES:
hello

[root@k8s-master test]# helm history web -n dev
REVISION	UPDATED                 	STATUS    	CHART        	APP VERSION	DESCRIPTION     
1       	Mon Oct 11 13:16:37 2021	superseded	mynginx-0.1.0	1.15.0     	Install complete
2       	Mon Oct 11 14:12:25 2021	superseded	mynginx-0.2.0	1.15.0     	Upgrade complete
3       	Mon Oct 11 14:25:49 2021	deployed  	mynginx-0.3.0	1.16.0     	Upgrade complete

[root@k8s-master test]# kubectl get pod -n dev
NAME                   READY   STATUS    RESTARTS   AGE
web-6fbb9b87dd-8wznf   1/1     Running   0          8m
web-6fbb9b87dd-k58gv   1/1     Running   0          7m9s
web-6fbb9b87dd-mgslf   1/1     Running   0          7m8s
web-6fbb9b87dd-spxvh   1/1     Running   0          8m
web-6fbb9b87dd-tgf84   1/1     Running   0          8m


# 回滚到版本1
[root@k8s-master test]# helm rollback web 1 -n dev
Rollback was a success! Happy Helming!


# 回滚后的状态
[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART        	APP VERSION
web 	dev      	4       	2021-10-11 14:35:43.553492797 +0800 CST	deployed	mynginx-0.1.0	1.15.0     
[root@k8s-master test]# helm status web -n dev
NAME: web
LAST DEPLOYED: Mon Oct 11 14:35:43 2021
NAMESPACE: dev
STATUS: deployed
REVISION: 4
TEST SUITE: None
NOTES:
hello

[root@k8s-master test]# helm history web -n dev
REVISION	UPDATED                 	STATUS    	CHART        	APP VERSION	DESCRIPTION     
1       	Mon Oct 11 13:16:37 2021	superseded	mynginx-0.1.0	1.15.0     	Install complete
2       	Mon Oct 11 14:12:25 2021	superseded	mynginx-0.2.0	1.15.0     	Upgrade complete
3       	Mon Oct 11 14:25:49 2021	superseded	mynginx-0.3.0	1.16.0     	Upgrade complete
4       	Mon Oct 11 14:35:43 2021	deployed  	mynginx-0.1.0	1.15.0     	Rollback to 1 

[root@k8s-master test]# kubectl get pod -n dev
NAME                   READY   STATUS    RESTARTS   AGE
web-84b7cd6c7c-5hfzp   1/1     Running   0          95s
web-84b7cd6c7c-9snhp   1/1     Running   0          91s
web-84b7cd6c7c-z2fkg   1/1     Running   0          93s

2.6.删除

1
2
3
4
5
6
7
8
9
10
卸载发行版,请使用以下helm uninstall命令:
# helm uninstall web -n dev
# helm delete web -n dev


[root@k8s-master test]# helm uninstall web -n dev
release "web" uninstalled

[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED	STATUS	CHART	APP VERSION

使用包安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# 使用 mynginx-0.2.0.tgz 安装

[root@k8s-master test]# ll
drwxr-xr-x 4 root root    93 Oct 11 14:28 mynginx
-rw-r--r-- 1 root root   869 Oct 11 13:43 mynginx-0.1.0.tgz
-rw-r--r-- 1 root root   870 Oct 11 13:53 mynginx-0.2.0.tgz


[root@k8s-master test]# helm install web mynginx-0.2.0.tgz -n dev
NAME: web
LAST DEPLOYED: Mon Oct 11 15:23:23 2021
NAMESPACE: dev
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
hello


[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART        	APP VERSION
web 	dev      	1       	2021-10-11 15:23:23.307351412 +0800 CST	deployed	mynginx-0.2.0	1.15.0     
[root@k8s-master test]# helm history web -n dev
REVISION	UPDATED                 	STATUS  	CHART        	APP VERSION	DESCRIPTION     
1       	Mon Oct 11 15:23:23 2021	deployed	mynginx-0.2.0	1.15.0     	Install complete

[root@k8s-master test]# helm get manifest web -n dev
---
# Source: mynginx/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx
  name: web
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: NodePort
---
# Source: mynginx/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: web
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.15
        name: web

[root@k8s-master test]# kubectl get all -n dev
NAME                       READY   STATUS    RESTARTS   AGE
pod/web-84b7cd6c7c-jfz8l   1/1     Running   0          4m4s
pod/web-84b7cd6c7c-tjtgx   1/1     Running   0          4m4s
pod/web-84b7cd6c7c-xr5hs   1/1     Running   0          4m4s

NAME          TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
service/web   NodePort   10.110.118.3   <none>        80:32692/TCP   4m4s

NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/web   3/3     3            3           4m4s

NAME                             DESIRED   CURRENT   READY   AGE
replicaset.apps/web-84b7cd6c7c   3         3         3       4m4s


# 删除
[root@k8s-master test]# helm delete web -n dev
release "web" uninstalled
[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED	STATUS	CHART	APP VERSION

二、微服务

1.微服务配置

1.注册中心

msa-eureka.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-eureka
  labels:
    app: msa-eureka
spec:
  type: NodePort
  ports:
    - port: 10001
      name: msa-eureka
      targetPort: 10001
      nodePort: 30001 #对外暴露30001端口
  selector:
    app: msa-eureka

---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  namespace: dev
  name: msa-eureka
spec:
  serviceName: msa-eureka
  replicas: 3
  selector:
    matchLabels:
      app: msa-eureka
  template:
    metadata:
      labels:
        app: msa-eureka
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-eureka
          image: 172.51.216.85:8888/springcloud/msa-eureka:2.0.0
          ports:
          - containerPort: 10001
          env:
            - name: MY_POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: EUREKA_INSTANCE_HOSTNAME
              value: ${MY_POD_NAME}.msa-eureka.dev
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
  podManagementPolicy: "Parallel"

2.网关

msa-gateway.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-gateway
  labels:
    app: msa-gateway
spec:
  type: NodePort
  ports:
    - port: 8888
      targetPort: 8888
      nodePort: 30008 #对外暴露30008端口
  selector:
    app: msa-gateway

---
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: dev
  name: msa-gateway
spec:
  replicas: 3
  selector:
    matchLabels:
      app: msa-gateway
  template:
    metadata:
      labels:
        app: msa-gateway
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-gateway
          image: 172.51.216.85:8888/springcloud/msa-gateway:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 8888
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"

3.生产者

msa-deploy-producer.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-deploy-producer
  labels:
    app: msa-deploy-producer
spec:
  type: ClusterIP
  ports:
    - port: 8911
      targetPort: 8911
  selector:
    app: msa-deploy-producer

---
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: dev
  name: msa-deploy-producer
spec:
  replicas: 3
  selector:
    matchLabels:
      app: msa-deploy-producer
  template:
    metadata:
      labels:
        app: msa-deploy-producer
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-deploy-producer
          image: 172.51.216.85:8888/springcloud/msa-deploy-producer:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 8911
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
            - name: DASHBOARD
              value: "sentinel-server.dev.svc.cluster.local:8858"

4.消费者

msa-deploy-consumer.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-deploy-consumer
  labels:
    app: msa-deploy-consumer
spec:
  type: ClusterIP
  ports:
    - port: 8912
      targetPort: 8912
  selector:
    app: msa-deploy-consumer

---
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: dev
  name: msa-deploy-consumer
spec:
  replicas: 3
  selector:
    matchLabels:
      app: msa-deploy-consumer
  template:
    metadata:
      labels:
        app: msa-deploy-consumer
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-deploy-consumer
          image: 172.51.216.85:8888/springcloud/msa-deploy-consumer:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 8912
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
            - name: DASHBOARD
              value: "sentinel-server.dev.svc.cluster.local:8858"

2.部署微服务

创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 创建 msa
[root@k8s-master test]# helm create cloud -n dev
Creating cloud


[root@k8s-master test]# ll
drwxr-xr-x 4 root root 93 Nov 11 13:50 cloud


[root@k8s-master test]# tree
.
└── cloud
    ├── charts
    ├── Chart.yaml
    ├── templates
    │   ├── deployment.yaml
    │   ├── _helpers.tpl
    │   ├── hpa.yaml
    │   ├── ingress.yaml
    │   ├── NOTES.txt
    │   ├── serviceaccount.yaml
    │   ├── service.yaml
    │   └── tests
    │       └── test-connection.yaml
    └── values.yaml

4 directories, 10 files


--------------------------------------------
# templates删除所有文件
# templates创建文件:NOTES.txt、msa-eureka.yaml、msa-gateway.yaml、msa-deploy-producer.yaml、msa-deploy-consumer.yaml

[root@k8s-master test]# tree
.
└── cloud
    ├── charts
    ├── Chart.yaml
    ├── templates
    │   ├── msa-deploy-consumer.yaml
    │   ├── msa-deploy-producer.yaml
    │   ├── msa-eureka.yaml
    │   ├── msa-gateway.yaml
    │   └── NOTES.txt
    └── values.yaml

3 directories, 7 files
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#模板文件

# Chart.yaml
[root@k8s-master cloud]# vim Chart.yaml

apiVersion: v2
name: cloud
description: A Helm chart for Kubernetes
type: application
version: 0.1.0
appVersion: "1.0.0"


# values.yaml 暂时不用
[root@k8s-master cloud]# vim values.yaml


# NOTES.txt
[root@k8s-master cloud]# vim NOTES.txt

Spring Cloud!!!

安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
# 查看实际的模板被渲染过后的资源文件
# helm get manifest web
# helm install web nginx/

# 生成的最终的资源清单文件打印出来,而不会真正的去部署一个release实例
# helm install --name mychart --dry-run --debug -f global.yaml ./mychart/
# helm install --name mychart --dry-run --debug --set course="k8s" ./mychart/


# 调试
# Helm也提供了--dry-run --debug调试参数,帮助你验证模板正确性。在执行helm install时候带上这两个参数就可以把对应的values值和渲染的资源清单打印出来,而不会真正的去部署一个release。

[root@k8s-master test]# helm install msa cloud --dry-run --debug -n dev
install.go:173: [debug] Original chart version: ""
install.go:190: [debug] CHART PATH: /k8s/springcloud-helm/test/cloud

NAME: msa
LAST DEPLOYED: Thu Nov 11 14:22:13 2021
NAMESPACE: dev
STATUS: pending-install
REVISION: 1
TEST SUITE: None
USER-SUPPLIED VALUES:
{}

COMPUTED VALUES:
affinity: {}
autoscaling:
  enabled: false
  maxReplicas: 100
  minReplicas: 1
  targetCPUUtilizationPercentage: 80
fullnameOverride: ""
image:
  pullPolicy: IfNotPresent
  repository: nginx
  tag: ""
imagePullSecrets: []
ingress:
  annotations: {}
  className: ""
  enabled: false
  hosts:
  - host: chart-example.local
    paths:
    - path: /
      pathType: ImplementationSpecific
  tls: []
nameOverride: ""
nodeSelector: {}
podAnnotations: {}
podSecurityContext: {}
replicaCount: 1
resources: {}
securityContext: {}
service:
  port: 80
  type: ClusterIP
serviceAccount:
  annotations: {}
  create: true
  name: ""
tolerations: []

HOOKS:
MANIFEST:
---
# Source: cloud/templates/msa-deploy-consumer.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-deploy-consumer
  labels:
    app: msa-deploy-consumer
spec:
  type: ClusterIP
  ports:
    - port: 8912
      targetPort: 8912
  selector:
    app: msa-deploy-consumer
---
# Source: cloud/templates/msa-deploy-producer.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-deploy-producer
  labels:
    app: msa-deploy-producer
spec:
  type: ClusterIP
  ports:
    - port: 8911
      targetPort: 8911
  selector:
    app: msa-deploy-producer
---
# Source: cloud/templates/msa-eureka.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-eureka
  labels:
    app: msa-eureka
spec:
  type: NodePort
  ports:
    - port: 10001
      name: msa-eureka
      targetPort: 10001
      nodePort: 30001 #对外暴露30001端口
  selector:
    app: msa-eureka
---
# Source: cloud/templates/msa-gateway.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-gateway
  labels:
    app: msa-gateway
spec:
  type: NodePort
  ports:
    - port: 8888
      targetPort: 8888
      nodePort: 30008 #对外暴露30008端口
  selector:
    app: msa-gateway
---
# Source: cloud/templates/msa-deploy-consumer.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: dev
  name: msa-deploy-consumer
spec:
  replicas: 3
  selector:
    matchLabels:
      app: msa-deploy-consumer
  template:
    metadata:
      labels:
        app: msa-deploy-consumer
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-deploy-consumer
          image: 172.51.216.85:8888/springcloud/msa-deploy-consumer:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 8912
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
            - name: DASHBOARD
              value: "sentinel-server.dev.svc.cluster.local:8858"
---
# Source: cloud/templates/msa-deploy-producer.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: dev
  name: msa-deploy-producer
spec:
  replicas: 3
  selector:
    matchLabels:
      app: msa-deploy-producer
  template:
    metadata:
      labels:
        app: msa-deploy-producer
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-deploy-producer
          image: 172.51.216.85:8888/springcloud/msa-deploy-producer:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 8911
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
            - name: DASHBOARD
              value: "sentinel-server.dev.svc.cluster.local:8858"
---
# Source: cloud/templates/msa-gateway.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: dev
  name: msa-gateway
spec:
  replicas: 3
  selector:
    matchLabels:
      app: msa-gateway
  template:
    metadata:
      labels:
        app: msa-gateway
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-gateway
          image: 172.51.216.85:8888/springcloud/msa-gateway:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 8888
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
---
# Source: cloud/templates/msa-eureka.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  namespace: dev
  name: msa-eureka
spec:
  serviceName: msa-eureka
  replicas: 3
  selector:
    matchLabels:
      app: msa-eureka
  template:
    metadata:
      labels:
        app: msa-eureka
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-eureka
          image: 172.51.216.85:8888/springcloud/msa-eureka:2.0.0
          ports:
          - containerPort: 10001
          env:
            - name: MY_POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: EUREKA_INSTANCE_HOSTNAME
              value: ${MY_POD_NAME}.msa-eureka.dev
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
  podManagementPolicy: "Parallel"

NOTES:
Spring Cloud!!!



[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED	STATUS	CHART	APP VERSION


----------------------------------------------------------------------
# 安装
[root@k8s-master test]# helm install msa cloud -n dev
NAME: msa
LAST DEPLOYED: Thu Nov 11 14:25:55 2021
NAMESPACE: dev
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Spring Cloud!!!



[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART      	APP VERSION
msa 	dev      	1       	2021-11-11 14:25:55.000327298 +0800 CST	deployed	cloud-0.1.0	1.0.0   


[root@k8s-master test]# helm status msa -n dev
NAME: msa
LAST DEPLOYED: Thu Nov 11 14:25:55 2021
NAMESPACE: dev
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Spring Cloud!!!


# 检索已经发布的 release 的资源文件
[root@k8s-master test]# helm get manifest msa -n dev
---
# Source: cloud/templates/msa-deploy-consumer.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-deploy-consumer
  labels:
    app: msa-deploy-consumer
spec:
  type: ClusterIP
  ports:
    - port: 8912
      targetPort: 8912
  selector:
    app: msa-deploy-consumer
---
# Source: cloud/templates/msa-deploy-producer.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-deploy-producer
  labels:
    app: msa-deploy-producer
spec:
  type: ClusterIP
  ports:
    - port: 8911
      targetPort: 8911
  selector:
    app: msa-deploy-producer
---
# Source: cloud/templates/msa-eureka.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-eureka
  labels:
    app: msa-eureka
spec:
  type: NodePort
  ports:
    - port: 10001
      name: msa-eureka
      targetPort: 10001
      nodePort: 30001 #对外暴露30001端口
  selector:
    app: msa-eureka
---
# Source: cloud/templates/msa-gateway.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-gateway
  labels:
    app: msa-gateway
spec:
  type: NodePort
  ports:
    - port: 8888
      targetPort: 8888
      nodePort: 30008 #对外暴露30008端口
  selector:
    app: msa-gateway
---
# Source: cloud/templates/msa-deploy-consumer.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: dev
  name: msa-deploy-consumer
spec:
  replicas: 3
  selector:
    matchLabels:
      app: msa-deploy-consumer
  template:
    metadata:
      labels:
        app: msa-deploy-consumer
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-deploy-consumer
          image: 172.51.216.85:8888/springcloud/msa-deploy-consumer:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 8912
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
            - name: DASHBOARD
              value: "sentinel-server.dev.svc.cluster.local:8858"
---
# Source: cloud/templates/msa-deploy-producer.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: dev
  name: msa-deploy-producer
spec:
  replicas: 3
  selector:
    matchLabels:
      app: msa-deploy-producer
  template:
    metadata:
      labels:
        app: msa-deploy-producer
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-deploy-producer
          image: 172.51.216.85:8888/springcloud/msa-deploy-producer:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 8911
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
            - name: DASHBOARD
              value: "sentinel-server.dev.svc.cluster.local:8858"
---
# Source: cloud/templates/msa-gateway.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: dev
  name: msa-gateway
spec:
  replicas: 3
  selector:
    matchLabels:
      app: msa-gateway
  template:
    metadata:
      labels:
        app: msa-gateway
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-gateway
          image: 172.51.216.85:8888/springcloud/msa-gateway:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 8888
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
---
# Source: cloud/templates/msa-eureka.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  namespace: dev
  name: msa-eureka
spec:
  serviceName: msa-eureka
  replicas: 3
  selector:
    matchLabels:
      app: msa-eureka
  template:
    metadata:
      labels:
        app: msa-eureka
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-eureka
          image: 172.51.216.85:8888/springcloud/msa-eureka:2.0.0
          ports:
          - containerPort: 10001
          env:
            - name: MY_POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: EUREKA_INSTANCE_HOSTNAME
              value: ${MY_POD_NAME}.msa-eureka.dev
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
  podManagementPolicy: "Parallel"


# 打包
# 修改Chart.yaml中的helm chart配置信息,然后使用下列命令将chart打包成一个压缩文件。
# 打包出cloud-0.1.0.tgz文件。
[root@k8s-master test]# helm package cloud
Successfully packaged chart and saved it to: /k8s/springcloud-helm/test/cloud-0.1.0.tgz
[root@k8s-master test]# ll
total 4
drwxr-xr-x 4 root root   93 Nov 11 14:19 cloud
-rw-r--r-- 1 root root 2361 Nov 11 14:30 cloud-0.1.0.tgz
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 查看
[root@k8s-master test]# kubectl get all -n dev
NAME                                       READY   STATUS    RESTARTS   AGE
pod/msa-deploy-consumer-6b75cf55d-qg5rh    1/1     Running   0          6m2s
pod/msa-deploy-consumer-6b75cf55d-zmd5x    1/1     Running   0          6m2s
pod/msa-deploy-consumer-6b75cf55d-zqfpp    1/1     Running   0          6m2s
pod/msa-deploy-producer-7965c98bbf-8gqh2   1/1     Running   0          6m2s
pod/msa-deploy-producer-7965c98bbf-hfhb6   1/1     Running   0          6m2s
pod/msa-deploy-producer-7965c98bbf-ngmp4   1/1     Running   0          6m2s
pod/msa-eureka-0                           1/1     Running   0          6m2s
pod/msa-eureka-1                           1/1     Running   0          6m2s
pod/msa-eureka-2                           1/1     Running   0          6m2s
pod/msa-gateway-597494c7f4-9rkxf           1/1     Running   0          6m2s
pod/msa-gateway-597494c7f4-wbjhl           1/1     Running   0          6m2s
pod/msa-gateway-597494c7f4-wl2bj           1/1     Running   0          6m2s

NAME                          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)           AGE
service/msa-deploy-consumer   ClusterIP   10.103.23.244    <none>        8912/TCP          6m2s
service/msa-deploy-producer   ClusterIP   10.109.200.26    <none>        8911/TCP          6m2s
service/msa-eureka            NodePort    10.109.68.183    <none>        10001:30001/TCP   6m2s
service/msa-gateway           NodePort    10.102.204.100   <none>        8888:30008/TCP    6m2s

NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/msa-deploy-consumer   3/3     3            3           6m2s
deployment.apps/msa-deploy-producer   3/3     3            3           6m2s
deployment.apps/msa-gateway           3/3     3            3           6m2s

NAME                                             DESIRED   CURRENT   READY   AGE
replicaset.apps/msa-deploy-consumer-6b75cf55d    3         3         3       6m2s
replicaset.apps/msa-deploy-producer-7965c98bbf   3         3         3       6m2s
replicaset.apps/msa-gateway-597494c7f4           3         3         3       6m2s

NAME                          READY   AGE
statefulset.apps/msa-eureka   3/3     6m2s


# 访问
# Eureka
http://172.51.216.81:30001/

# 网关访问地址
http://172.51.216.81:30008/dconsumer/hello

http://172.51.216.81:30008/dconsumer/say

http://172.51.216.81:30008/dproducer/hello

http://172.51.216.81:30008/dproducer/say

3.打包并发布到本地仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART      	APP VERSION
msa 	dev      	1       	2021-11-11 14:25:55.000327298 +0800 CST	deployed	cloud-0.1.0	1.0.0     


#从上面 helm list 输出的结果中我们可以看到有一个 Revision(更改历史)字段,该字段用于表示某一个 Release 被更新的次数,我们可以用该特性对已部署的 Release 进行回滚。
#修改 Chart.yaml 文件
#将版本号从 0.1.0 修改为 0.2.0, 然后使用 helm package 命令打包并发布到本地仓库。

# Chart.yaml
[root@k8s-master cloud]# vim Chart.yaml

apiVersion: v2
name: cloud
description: A Helm chart for Kubernetes
type: application
version: 0.2.0
appVersion: "1.0.0"


[root@k8s-master test]# helm package cloud
Successfully packaged chart and saved it to: /k8s/springcloud-helm/test/cloud-0.2.0.tgz
[root@k8s-master test]# ll
total 8
drwxr-xr-x 4 root root   93 Nov 11 14:44 cloud
-rw-r--r-- 1 root root 2361 Nov 11 14:30 cloud-0.1.0.tgz
-rw-r--r-- 1 root root 2361 Nov 11 14:45 cloud-0.2.0.tgz

4.升级

1
2
3
4
5
6
7
8
9
10
11
12
helm upgrade 命令将已部署的应用升级到新版本
发布新版本的chart时,或者当您要更改发布的配置时,可以使用该helm upgrade 命令。
# helm upgrade --set imageTag=1.17 web mynginx
# helm upgrade -f values.yaml web mynginx


values
Values对象是为Chart模板提供值,这个对象的值有4个来源:
chart 包中的 values.yaml 文件
父 chart 包的 values.yaml 文件
通过 helm install 或者 helm upgrade 的 -f或者 --values参数传入的自定义的 yaml 文件
通过 --set 参数传入的值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
[root@k8s-master test]# kubectl get all -n dev
NAME                                       READY   STATUS    RESTARTS   AGE
pod/msa-deploy-consumer-6b75cf55d-qg5rh    1/1     Running   0          26m
pod/msa-deploy-consumer-6b75cf55d-zmd5x    1/1     Running   0          26m
pod/msa-deploy-consumer-6b75cf55d-zqfpp    1/1     Running   0          26m
pod/msa-deploy-producer-7965c98bbf-8gqh2   1/1     Running   0          26m
pod/msa-deploy-producer-7965c98bbf-hfhb6   1/1     Running   0          26m
pod/msa-deploy-producer-7965c98bbf-ngmp4   1/1     Running   0          26m
pod/msa-eureka-0                           1/1     Running   0          26m
pod/msa-eureka-1                           1/1     Running   0          26m
pod/msa-eureka-2                           1/1     Running   0          26m
pod/msa-gateway-597494c7f4-9rkxf           1/1     Running   0          26m
pod/msa-gateway-597494c7f4-wbjhl           1/1     Running   0          26m
pod/msa-gateway-597494c7f4-wl2bj           1/1     Running   0          26m

NAME                          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)           AGE
service/msa-deploy-consumer   ClusterIP   10.103.23.244    <none>        8912/TCP          26m
service/msa-deploy-producer   ClusterIP   10.109.200.26    <none>        8911/TCP          26m
service/msa-eureka            NodePort    10.109.68.183    <none>        10001:30001/TCP   26m
service/msa-gateway           NodePort    10.102.204.100   <none>        8888:30008/TCP    26m

NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/msa-deploy-consumer   3/3     3            3           26m
deployment.apps/msa-deploy-producer   3/3     3            3           26m
deployment.apps/msa-gateway           3/3     3            3           26m

NAME                                             DESIRED   CURRENT   READY   AGE
replicaset.apps/msa-deploy-consumer-6b75cf55d    3         3         3       26m
replicaset.apps/msa-deploy-producer-7965c98bbf   3         3         3       26m
replicaset.apps/msa-gateway-597494c7f4           3         3         3       26m

NAME                          READY   AGE
statefulset.apps/msa-eureka   3/3     26m


# 此方法改变不了副本数
[root@k8s-master test]# helm upgrade msa --set replicas=5 cloud -n dev
Release "msa" has been upgraded. Happy Helming!
NAME: msa
LAST DEPLOYED: Thu Nov 11 14:54:21 2021
NAMESPACE: dev
STATUS: deployed
REVISION: 2
TEST SUITE: None
NOTES:
Spring Cloud!!!


# 没变化
[root@k8s-master test]# kubectl get all -n dev
NAME                                       READY   STATUS    RESTARTS   AGE
pod/msa-deploy-consumer-6b75cf55d-qg5rh    1/1     Running   0          30m
pod/msa-deploy-consumer-6b75cf55d-zmd5x    1/1     Running   0          30m
pod/msa-deploy-consumer-6b75cf55d-zqfpp    1/1     Running   0          30m
pod/msa-deploy-producer-7965c98bbf-8gqh2   1/1     Running   0          30m
pod/msa-deploy-producer-7965c98bbf-hfhb6   1/1     Running   0          30m
pod/msa-deploy-producer-7965c98bbf-ngmp4   1/1     Running   0          30m
pod/msa-eureka-0                           1/1     Running   0          30m
pod/msa-eureka-1                           1/1     Running   0          30m
pod/msa-eureka-2                           1/1     Running   0          30m
pod/msa-gateway-597494c7f4-9rkxf           1/1     Running   0          30m
pod/msa-gateway-597494c7f4-wbjhl           1/1     Running   0          30m
pod/msa-gateway-597494c7f4-wl2bj           1/1     Running   0          30m

NAME                          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)           AGE
service/msa-deploy-consumer   ClusterIP   10.103.23.244    <none>        8912/TCP          30m
service/msa-deploy-producer   ClusterIP   10.109.200.26    <none>        8911/TCP          30m
service/msa-eureka            NodePort    10.109.68.183    <none>        10001:30001/TCP   30m
service/msa-gateway           NodePort    10.102.204.100   <none>        8888:30008/TCP    30m

NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/msa-deploy-consumer   3/3     3            3           30m
deployment.apps/msa-deploy-producer   3/3     3            3           30m
deployment.apps/msa-gateway           3/3     3            3           30m

NAME                                             DESIRED   CURRENT   READY   AGE
replicaset.apps/msa-deploy-consumer-6b75cf55d    3         3         3       30m
replicaset.apps/msa-deploy-producer-7965c98bbf   3         3         3       30m
replicaset.apps/msa-gateway-597494c7f4           3         3         3       30m

NAME                          READY   AGE
statefulset.apps/msa-eureka   3/3     30m



[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART      	APP VERSION
msa 	dev      	2       	2021-11-11 14:54:21.874398457 +0800 CST	deployed	cloud-0.2.0	1.0.0      


[root@k8s-master test]# helm history msa -n dev
REVISION	UPDATED                 	STATUS    	CHART      	APP VERSION	DESCRIPTION     
1       	Thu Nov 11 14:25:55 2021	superseded	cloud-0.1.0	1.0.0      	Install complete
2       	Thu Nov 11 14:54:21 2021	deployed  	cloud-0.2.0	1.0.0      	Upgrade complete



# 没变化
[root@k8s-master test]# helm get manifest msa -n dev
---
# Source: cloud/templates/msa-deploy-consumer.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-deploy-consumer
  labels:
    app: msa-deploy-consumer
spec:
  type: ClusterIP
  ports:
    - port: 8912
      targetPort: 8912
  selector:
    app: msa-deploy-consumer
---
# Source: cloud/templates/msa-deploy-producer.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-deploy-producer
  labels:
    app: msa-deploy-producer
spec:
  type: ClusterIP
  ports:
    - port: 8911
      targetPort: 8911
  selector:
    app: msa-deploy-producer
---
# Source: cloud/templates/msa-eureka.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-eureka
  labels:
    app: msa-eureka
spec:
  type: NodePort
  ports:
    - port: 10001
      name: msa-eureka
      targetPort: 10001
      nodePort: 30001 #对外暴露30001端口
  selector:
    app: msa-eureka
---
# Source: cloud/templates/msa-gateway.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-gateway
  labels:
    app: msa-gateway
spec:
  type: NodePort
  ports:
    - port: 8888
      targetPort: 8888
      nodePort: 30008 #对外暴露30008端口
  selector:
    app: msa-gateway
---
# Source: cloud/templates/msa-deploy-consumer.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: dev
  name: msa-deploy-consumer
spec:
  replicas: 3
  selector:
    matchLabels:
      app: msa-deploy-consumer
  template:
    metadata:
      labels:
        app: msa-deploy-consumer
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-deploy-consumer
          image: 172.51.216.85:8888/springcloud/msa-deploy-consumer:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 8912
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
            - name: DASHBOARD
              value: "sentinel-server.dev.svc.cluster.local:8858"
---
# Source: cloud/templates/msa-deploy-producer.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: dev
  name: msa-deploy-producer
spec:
  replicas: 3
  selector:
    matchLabels:
      app: msa-deploy-producer
  template:
    metadata:
      labels:
        app: msa-deploy-producer
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-deploy-producer
          image: 172.51.216.85:8888/springcloud/msa-deploy-producer:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 8911
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
            - name: DASHBOARD
              value: "sentinel-server.dev.svc.cluster.local:8858"
---
# Source: cloud/templates/msa-gateway.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: dev
  name: msa-gateway
spec:
  replicas: 3
  selector:
    matchLabels:
      app: msa-gateway
  template:
    metadata:
      labels:
        app: msa-gateway
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-gateway
          image: 172.51.216.85:8888/springcloud/msa-gateway:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 8888
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
---
# Source: cloud/templates/msa-eureka.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  namespace: dev
  name: msa-eureka
spec:
  serviceName: msa-eureka
  replicas: 3
  selector:
    matchLabels:
      app: msa-eureka
  template:
    metadata:
      labels:
        app: msa-eureka
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-eureka
          image: 172.51.216.85:8888/springcloud/msa-eureka:2.0.0
          ports:
          - containerPort: 10001
          env:
            - name: MY_POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: EUREKA_INSTANCE_HOSTNAME
              value: ${MY_POD_NAME}.msa-eureka.dev
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
  podManagementPolicy: "Parallel"
  

# 又做了一次副本没变,版本变了
[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART      	APP VERSION
msa 	dev      	3       	2021-11-11 15:03:34.282943143 +0800 CST	deployed	cloud-0.2.0	1.0.0      
[root@k8s-master test]# 
[root@k8s-master test]# 
[root@k8s-master test]# helm history msa -n dev
REVISION	UPDATED                 	STATUS    	CHART      	APP VERSION	DESCRIPTION     
1       	Thu Nov 11 14:25:55 2021	superseded	cloud-0.1.0	1.0.0      	Install complete
2       	Thu Nov 11 14:54:21 2021	superseded	cloud-0.2.0	1.0.0      	Upgrade complete
3       	Thu Nov 11 15:03:34 2021	deployed  	cloud-0.2.0	1.0.0      	Upgrade complete

通过修改模板yaml升级

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# 升级前
[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART      	APP VERSION
msa 	dev      	3       	2021-11-11 15:03:34.282943143 +0800 CST	deployed	cloud-0.2.0	1.0.0     


[root@k8s-master test]# helm status msa -n dev
NAME: msa
LAST DEPLOYED: Thu Nov 11 15:03:34 2021
NAMESPACE: dev
STATUS: deployed
REVISION: 3
TEST SUITE: None
NOTES:
Spring Cloud!!!



[root@k8s-master test]# helm history msa -n dev
REVISION	UPDATED                 	STATUS    	CHART      	APP VERSION	DESCRIPTION     
1       	Thu Nov 11 14:25:55 2021	superseded	cloud-0.1.0	1.0.0      	Install complete
2       	Thu Nov 11 14:54:21 2021	superseded	cloud-0.2.0	1.0.0      	Upgrade complete
3       	Thu Nov 11 15:03:34 2021	deployed  	cloud-0.2.0	1.0.0      	Upgrade complete



[root@k8s-master test]# kubectl get all -n dev
NAME                                       READY   STATUS    RESTARTS   AGE
pod/msa-deploy-consumer-6b75cf55d-qg5rh    1/1     Running   0          46m
pod/msa-deploy-consumer-6b75cf55d-zmd5x    1/1     Running   0          46m
pod/msa-deploy-consumer-6b75cf55d-zqfpp    1/1     Running   0          46m
pod/msa-deploy-producer-7965c98bbf-8gqh2   1/1     Running   0          46m
pod/msa-deploy-producer-7965c98bbf-hfhb6   1/1     Running   0          46m
pod/msa-deploy-producer-7965c98bbf-ngmp4   1/1     Running   0          46m
pod/msa-eureka-0                           1/1     Running   0          46m
pod/msa-eureka-1                           1/1     Running   0          46m
pod/msa-eureka-2                           1/1     Running   0          46m
pod/msa-gateway-597494c7f4-9rkxf           1/1     Running   0          46m
pod/msa-gateway-597494c7f4-wbjhl           1/1     Running   0          46m
pod/msa-gateway-597494c7f4-wl2bj           1/1     Running   0          46m

NAME                          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)           AGE
service/msa-deploy-consumer   ClusterIP   10.103.23.244    <none>        8912/TCP          46m
service/msa-deploy-producer   ClusterIP   10.109.200.26    <none>        8911/TCP          46m
service/msa-eureka            NodePort    10.109.68.183    <none>        10001:30001/TCP   46m
service/msa-gateway           NodePort    10.102.204.100   <none>        8888:30008/TCP    46m

NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/msa-deploy-consumer   3/3     3            3           46m
deployment.apps/msa-deploy-producer   3/3     3            3           46m
deployment.apps/msa-gateway           3/3     3            3           46m

NAME                                             DESIRED   CURRENT   READY   AGE
replicaset.apps/msa-deploy-consumer-6b75cf55d    3         3         3       46m
replicaset.apps/msa-deploy-producer-7965c98bbf   3         3         3       46m
replicaset.apps/msa-gateway-597494c7f4           3         3         3       46m

NAME                          READY   AGE
statefulset.apps/msa-eureka   3/3     46m



# 修改文件
# 修改版本version: 0.3.0  tag: 1.16 
[root@k8s-master cloud]# vim Chart.yaml 

apiVersion: v2
name: cloud
description: A Helm chart for Kubernetes
type: application
version: 0.3.0
appVersion: "1.0.1"


# 生产者副本数从3改成6
[root@k8s-master cloud]# vim templates/msa-deploy-producer.yaml
spec:
  replicas: 6


# 升级
[root@k8s-master test]# helm upgrade msa cloud -n dev
Release "msa" has been upgraded. Happy Helming!
NAME: msa
LAST DEPLOYED: Thu Nov 11 15:19:27 2021
NAMESPACE: dev
STATUS: deployed
REVISION: 4
TEST SUITE: None
NOTES:
Spring Cloud!!!



[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART      	APP VERSION
msa 	dev      	4       	2021-11-11 15:19:27.147696331 +0800 CST	deployed	cloud-0.3.0	1.0.1  



[root@k8s-master test]# helm history msa -n dev
REVISION	UPDATED                 	STATUS    	CHART      	APP VERSION	DESCRIPTION     
1       	Thu Nov 11 14:25:55 2021	superseded	cloud-0.1.0	1.0.0      	Install complete
2       	Thu Nov 11 14:54:21 2021	superseded	cloud-0.2.0	1.0.0      	Upgrade complete
3       	Thu Nov 11 15:03:34 2021	superseded	cloud-0.2.0	1.0.0      	Upgrade complete
4       	Thu Nov 11 15:19:27 2021	deployed  	cloud-0.3.0	1.0.1      	Upgrade complete



[root@k8s-master test]# kubectl get all -n dev
NAME                                       READY   STATUS    RESTARTS   AGE
pod/msa-deploy-consumer-6b75cf55d-qg5rh    1/1     Running   0          55m
pod/msa-deploy-consumer-6b75cf55d-zmd5x    1/1     Running   0          55m
pod/msa-deploy-consumer-6b75cf55d-zqfpp    1/1     Running   0          55m
pod/msa-deploy-producer-7965c98bbf-4cdvz   1/1     Running   0          2m13s
pod/msa-deploy-producer-7965c98bbf-8gqh2   1/1     Running   0          55m
pod/msa-deploy-producer-7965c98bbf-hfhb6   1/1     Running   0          55m
pod/msa-deploy-producer-7965c98bbf-k5ppd   1/1     Running   0          2m13s
pod/msa-deploy-producer-7965c98bbf-ngmp4   1/1     Running   0          55m
pod/msa-deploy-producer-7965c98bbf-s7mfs   1/1     Running   0          2m13s
pod/msa-eureka-0                           1/1     Running   0          55m
pod/msa-eureka-1                           1/1     Running   0          55m
pod/msa-eureka-2                           1/1     Running   0          55m
pod/msa-gateway-597494c7f4-9rkxf           1/1     Running   0          55m
pod/msa-gateway-597494c7f4-wbjhl           1/1     Running   0          55m
pod/msa-gateway-597494c7f4-wl2bj           1/1     Running   0          55m

NAME                          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)           AGE
service/msa-deploy-consumer   ClusterIP   10.103.23.244    <none>        8912/TCP          55m
service/msa-deploy-producer   ClusterIP   10.109.200.26    <none>        8911/TCP          55m
service/msa-eureka            NodePort    10.109.68.183    <none>        10001:30001/TCP   55m
service/msa-gateway           NodePort    10.102.204.100   <none>        8888:30008/TCP    55m

NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/msa-deploy-consumer   3/3     3            3           55m
deployment.apps/msa-deploy-producer   6/6     6            6           55m
deployment.apps/msa-gateway           3/3     3            3           55m

NAME                                             DESIRED   CURRENT   READY   AGE
replicaset.apps/msa-deploy-consumer-6b75cf55d    3         3         3       55m
replicaset.apps/msa-deploy-producer-7965c98bbf   6         6         6       55m
replicaset.apps/msa-gateway-597494c7f4           3         3         3       55m

NAME                          READY   AGE
statefulset.apps/msa-eureka   3/3     55m


[root@k8s-master test]# helm get manifest msa -n dev
---
# Source: cloud/templates/msa-deploy-consumer.yaml
.....

---
# Source: cloud/templates/msa-deploy-producer.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: dev
  name: msa-deploy-producer
spec:
  replicas: 6
  selector:
    matchLabels:
      app: msa-deploy-producer
  template:
    metadata:
      labels:
        app: msa-deploy-producer
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-deploy-producer
          image: 172.51.216.85:8888/springcloud/msa-deploy-producer:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 8911
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
            - name: DASHBOARD
              value: "sentinel-server.dev.svc.cluster.local:8858"
---
......

5.回滚

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# 如果在发布后没有达到预期的效果,则可以使用helm rollback回滚到之前的版本。
# 例如将应用回滚到第一个版本:
helm rollback web 1


# 回滚前
[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                               	STATUS  	CHART      	APP VERSION
msa 	dev      	5       	2021-11-11 15:28:30.73309279 +0800 CST	deployed	cloud-0.3.0	1.0.1   



[root@k8s-master test]# helm status msa -n dev
NAME: msa
LAST DEPLOYED: Thu Nov 11 15:28:30 2021
NAMESPACE: dev
STATUS: deployed
REVISION: 5
TEST SUITE: None
NOTES:
Spring Cloud!!!


[root@k8s-master test]# helm history msa -n dev
REVISION	UPDATED                 	STATUS    	CHART      	APP VERSION	DESCRIPTION     
1       	Thu Nov 11 14:25:55 2021	superseded	cloud-0.1.0	1.0.0      	Install complete
2       	Thu Nov 11 14:54:21 2021	superseded	cloud-0.2.0	1.0.0      	Upgrade complete
3       	Thu Nov 11 15:03:34 2021	superseded	cloud-0.2.0	1.0.0      	Upgrade complete
4       	Thu Nov 11 15:19:27 2021	superseded	cloud-0.3.0	1.0.1      	Upgrade complete
5       	Thu Nov 11 15:28:30 2021	deployed  	cloud-0.3.0	1.0.1      	Upgrade complete


[root@k8s-master test]# kubectl get pod -n dev
NAME                                   READY   STATUS    RESTARTS   AGE
msa-deploy-consumer-6b75cf55d-qg5rh    1/1     Running   0          65m
msa-deploy-consumer-6b75cf55d-zmd5x    1/1     Running   0          65m
msa-deploy-consumer-6b75cf55d-zqfpp    1/1     Running   0          65m
msa-deploy-producer-7965c98bbf-4cdvz   1/1     Running   0          11m
msa-deploy-producer-7965c98bbf-8gqh2   1/1     Running   0          65m
msa-deploy-producer-7965c98bbf-hfhb6   1/1     Running   0          65m
msa-deploy-producer-7965c98bbf-k5ppd   1/1     Running   0          11m
msa-deploy-producer-7965c98bbf-ngmp4   1/1     Running   0          65m
msa-deploy-producer-7965c98bbf-s7mfs   1/1     Running   0          11m
msa-eureka-0                           1/1     Running   0          65m
msa-eureka-1                           1/1     Running   0          65m
msa-eureka-2                           1/1     Running   0          65m
msa-gateway-597494c7f4-9rkxf           1/1     Running   0          65m
msa-gateway-597494c7f4-wbjhl           1/1     Running   0          65m
msa-gateway-597494c7f4-wl2bj           1/1     Running   0          65m


# 回滚到版本1
[root@k8s-master test]# helm rollback msa 1 -n dev
Rollback was a success! Happy Helming!


# 回滚后的状态
[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART      	APP VERSION
msa 	dev      	6       	2021-11-11 15:32:24.965626915 +0800 CST	deployed	cloud-0.1.0	1.0.0  


[root@k8s-master test]# helm status msa -n dev
NAME: msa
LAST DEPLOYED: Thu Nov 11 15:32:24 2021
NAMESPACE: dev
STATUS: deployed
REVISION: 6
TEST SUITE: None
NOTES:
Spring Cloud!!!


[root@k8s-master test]# helm history msa -n dev
REVISION	UPDATED                 	STATUS    	CHART      	APP VERSION	DESCRIPTION     
1       	Thu Nov 11 14:25:55 2021	superseded	cloud-0.1.0	1.0.0      	Install complete
2       	Thu Nov 11 14:54:21 2021	superseded	cloud-0.2.0	1.0.0      	Upgrade complete
3       	Thu Nov 11 15:03:34 2021	superseded	cloud-0.2.0	1.0.0      	Upgrade complete
4       	Thu Nov 11 15:19:27 2021	superseded	cloud-0.3.0	1.0.1      	Upgrade complete
5       	Thu Nov 11 15:28:30 2021	superseded	cloud-0.3.0	1.0.1      	Upgrade complete
6       	Thu Nov 11 15:32:24 2021	deployed  	cloud-0.1.0	1.0.0      	Rollback to 1  


[root@k8s-master test]# kubectl get pod -n dev
NAME                                   READY   STATUS    RESTARTS   AGE
msa-deploy-consumer-6b75cf55d-qg5rh    1/1     Running   0          68m
msa-deploy-consumer-6b75cf55d-zmd5x    1/1     Running   0          68m
msa-deploy-consumer-6b75cf55d-zqfpp    1/1     Running   0          68m
msa-deploy-producer-7965c98bbf-8gqh2   1/1     Running   0          68m
msa-deploy-producer-7965c98bbf-hfhb6   1/1     Running   0          68m
msa-deploy-producer-7965c98bbf-ngmp4   1/1     Running   0          68m
msa-eureka-0                           1/1     Running   0          68m
msa-eureka-1                           1/1     Running   0          68m
msa-eureka-2                           1/1     Running   0          68m
msa-gateway-597494c7f4-9rkxf           1/1     Running   0          68m
msa-gateway-597494c7f4-wbjhl           1/1     Running   0          68m
msa-gateway-597494c7f4-wl2bj           1/1     Running   0          68m

6.删除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
卸载发行版,请使用以下helm uninstall命令:
# helm uninstall web -n dev
# helm delete web -n dev


[root@k8s-master test]# helm uninstall msa -n dev
release "msa" uninstalled



[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED	STATUS	CHART	APP VERSION



[root@k8s-master test]# helm history msa -n dev
Error: release: not found

7.使用包安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
# 使用 cloud-0.2.0.tgz 安装

[root@k8s-master test]# ll
total 8
drwxr-xr-x 4 root root   93 Nov 11 15:16 cloud
-rw-r--r-- 1 root root 2361 Nov 11 14:30 cloud-0.1.0.tgz
-rw-r--r-- 1 root root 2361 Nov 11 14:45 cloud-0.2.0.tgz


[root@k8s-master test]# helm install msa cloud-0.2.0.tgz -n dev
NAME: msa
LAST DEPLOYED: Thu Nov 11 15:38:30 2021
NAMESPACE: dev
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Spring Cloud!!!


[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART      	APP VERSION
msa 	dev      	1       	2021-11-11 15:38:30.699684217 +0800 CST	deployed	cloud-0.2.0	1.0.0   


[root@k8s-master test]#  helm get manifest msa -n dev
---
# Source: cloud/templates/msa-deploy-consumer.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-deploy-consumer
  labels:
    app: msa-deploy-consumer
spec:
  type: ClusterIP
  ports:
    - port: 8912
      targetPort: 8912
  selector:
    app: msa-deploy-consumer
---
# Source: cloud/templates/msa-deploy-producer.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-deploy-producer
  labels:
    app: msa-deploy-producer
spec:
  type: ClusterIP
  ports:
    - port: 8911
      targetPort: 8911
  selector:
    app: msa-deploy-producer
---
# Source: cloud/templates/msa-eureka.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-eureka
  labels:
    app: msa-eureka
spec:
  type: NodePort
  ports:
    - port: 10001
      name: msa-eureka
      targetPort: 10001
      nodePort: 30001 #对外暴露30001端口
  selector:
    app: msa-eureka
---
# Source: cloud/templates/msa-gateway.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-gateway
  labels:
    app: msa-gateway
spec:
  type: NodePort
  ports:
    - port: 8888
      targetPort: 8888
      nodePort: 30008 #对外暴露30008端口
  selector:
    app: msa-gateway
---
# Source: cloud/templates/msa-deploy-consumer.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: dev
  name: msa-deploy-consumer
spec:
  replicas: 3
  selector:
    matchLabels:
      app: msa-deploy-consumer
  template:
    metadata:
      labels:
        app: msa-deploy-consumer
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-deploy-consumer
          image: 172.51.216.85:8888/springcloud/msa-deploy-consumer:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 8912
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
            - name: DASHBOARD
              value: "sentinel-server.dev.svc.cluster.local:8858"
---
# Source: cloud/templates/msa-deploy-producer.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: dev
  name: msa-deploy-producer
spec:
  replicas: 3
  selector:
    matchLabels:
      app: msa-deploy-producer
  template:
    metadata:
      labels:
        app: msa-deploy-producer
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-deploy-producer
          image: 172.51.216.85:8888/springcloud/msa-deploy-producer:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 8911
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
            - name: DASHBOARD
              value: "sentinel-server.dev.svc.cluster.local:8858"
---
# Source: cloud/templates/msa-gateway.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: dev
  name: msa-gateway
spec:
  replicas: 3
  selector:
    matchLabels:
      app: msa-gateway
  template:
    metadata:
      labels:
        app: msa-gateway
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-gateway
          image: 172.51.216.85:8888/springcloud/msa-gateway:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 8888
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
---
# Source: cloud/templates/msa-eureka.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  namespace: dev
  name: msa-eureka
spec:
  serviceName: msa-eureka
  replicas: 3
  selector:
    matchLabels:
      app: msa-eureka
  template:
    metadata:
      labels:
        app: msa-eureka
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-eureka
          image: 172.51.216.85:8888/springcloud/msa-eureka:2.0.0
          ports:
          - containerPort: 10001
          env:
            - name: MY_POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: EUREKA_INSTANCE_HOSTNAME
              value: ${MY_POD_NAME}.msa-eureka.dev
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
  podManagementPolicy: "Parallel"


[root@k8s-master test]# kubectl get all -n dev
NAME                                       READY   STATUS    RESTARTS   AGE
pod/msa-deploy-consumer-6b75cf55d-bssl8    1/1     Running   0          101s
pod/msa-deploy-consumer-6b75cf55d-bxxp2    1/1     Running   0          101s
pod/msa-deploy-consumer-6b75cf55d-w658j    1/1     Running   0          101s
pod/msa-deploy-producer-7965c98bbf-7r4tb   1/1     Running   0          101s
pod/msa-deploy-producer-7965c98bbf-8wnbc   1/1     Running   0          101s
pod/msa-deploy-producer-7965c98bbf-rxw99   1/1     Running   0          101s
pod/msa-eureka-0                           1/1     Running   0          100s
pod/msa-eureka-1                           1/1     Running   0          100s
pod/msa-eureka-2                           1/1     Running   0          100s
pod/msa-gateway-597494c7f4-48zm2           1/1     Running   0          101s
pod/msa-gateway-597494c7f4-94r9m           1/1     Running   0          101s
pod/msa-gateway-597494c7f4-mn8mc           1/1     Running   0          101s

NAME                          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)           AGE
service/msa-deploy-consumer   ClusterIP   10.110.49.38     <none>        8912/TCP          101s
service/msa-deploy-producer   ClusterIP   10.98.244.64     <none>        8911/TCP          101s
service/msa-eureka            NodePort    10.100.79.138    <none>        10001:30001/TCP   101s
service/msa-gateway           NodePort    10.109.116.147   <none>        8888:30008/TCP    101s

NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/msa-deploy-consumer   3/3     3            3           101s
deployment.apps/msa-deploy-producer   3/3     3            3           101s
deployment.apps/msa-gateway           3/3     3            3           101s

NAME                                             DESIRED   CURRENT   READY   AGE
replicaset.apps/msa-deploy-consumer-6b75cf55d    3         3         3       101s
replicaset.apps/msa-deploy-producer-7965c98bbf   3         3         3       101s
replicaset.apps/msa-gateway-597494c7f4           3         3         3       101s

NAME                          READY   AGE
statefulset.apps/msa-eureka   3/3     101s


# 删除
[root@k8s-master test]# helm delete msa -n dev
release "msa" uninstalled

[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED	STATUS	CHART	APP VERSION

8.配置values

8.1.修改配置信息

values.yaml

1
2
3
4
5
6
7
8
9
global:
  namespace: "dev"

producer:
  name: "msa-deploy-producer"
  serviceType: "ClusterIP"
  port: 8911
  targetPort: 8911
  replicas: 4

生产者

msa-deploy-producer.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
apiVersion: v1
kind: Service
metadata:
  namespace: 
  name: 
  labels:
    app: 
spec:
  type: 
  ports:
    - port: 
      targetPort: 
  selector:
    app: 

---
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: 
  name: 
spec:
  replicas: 
  selector:
    matchLabels:
      app: 
  template:
    metadata:
      labels:
        app: 
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: 
          image: 172.51.216.85:8888/springcloud/:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
            - name: DASHBOARD
              value: "sentinel-server.dev.svc.cluster.local:8858"

原配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-deploy-producer
  labels:
    app: msa-deploy-producer
spec:
  type: ClusterIP
  ports:
    - port: 8911
      targetPort: 8911
  selector:
    app: msa-deploy-producer

---
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: dev
  name: msa-deploy-producer
spec:
  replicas: 3
  selector:
    matchLabels:
      app: msa-deploy-producer
  template:
    metadata:
      labels:
        app: msa-deploy-producer
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-deploy-producer
          image: 172.51.216.85:8888/springcloud/msa-deploy-producer:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 8911
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
            - name: DASHBOARD
              value: "sentinel-server.dev.svc.cluster.local:8858"

8.2.部署服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
[root@k8s-master test]# helm install msa cloud --dry-run --debug -n dev
install.go:173: [debug] Original chart version: ""
install.go:190: [debug] CHART PATH: /k8s/springcloud-helm/test/cloud

NAME: msa
LAST DEPLOYED: Thu Nov 11 16:31:39 2021
NAMESPACE: dev
STATUS: pending-install
REVISION: 1
TEST SUITE: None
USER-SUPPLIED VALUES:
{}

COMPUTED VALUES:
global:
  namespace: dev
producer:
  name: msa-deploy-producer
  port: 8911
  replicas: 4
  serviceType: ClusterIP
  targetPort: 8911


---

# Source: cloud/templates/msa-deploy-producer.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-deploy-producer
  labels:
    app: msa-deploy-producer
spec:
  type: ClusterIP
  ports:
    - port: 8911
      targetPort: 8911
  selector:
    app: msa-deploy-producer

---
# Source: cloud/templates/msa-deploy-producer.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: dev
  name: msa-deploy-producer
spec:
  replicas: 4
  selector:
    matchLabels:
      app: msa-deploy-producer
  template:
    metadata:
      labels:
        app: msa-deploy-producer
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-deploy-producer
          image: 172.51.216.85:8888/springcloud/msa-deploy-producer:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 8911
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
            - name: DASHBOARD
              value: "sentinel-server.dev.svc.cluster.local:8858"
---


----------------------------------------------------------------------
# 安装
[root@k8s-master test]# helm install msa cloud -n dev
NAME: msa
LAST DEPLOYED: Thu Nov 11 16:35:10 2021
NAMESPACE: dev
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Spring Cloud!!!




[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                               	STATUS  	CHART      	APP VERSION
msa 	dev      	1       	2021-11-11 16:35:10.13704314 +0800 CST	deployed	cloud-0.3.0	1.0.1



# 检索已经发布的 release 的资源文件
[root@k8s-master test]# helm get manifest msa -n dev
---

# Source: cloud/templates/msa-deploy-producer.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: dev
  name: msa-deploy-producer
  labels:
    app: msa-deploy-producer
spec:
  type: ClusterIP
  ports:
    - port: 8911
      targetPort: 8911
  selector:
    app: msa-deploy-producer

---
# Source: cloud/templates/msa-deploy-producer.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: dev
  name: msa-deploy-producer
spec:
  replicas: 4
  selector:
    matchLabels:
      app: msa-deploy-producer
  template:
    metadata:
      labels:
        app: msa-deploy-producer
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: msa-deploy-producer
          image: 172.51.216.85:8888/springcloud/msa-deploy-producer:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 8911
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
            - name: DASHBOARD
              value: "sentinel-server.dev.svc.cluster.local:8858"

---


[root@k8s-master test]# kubectl get all -n dev
NAME                                       READY   STATUS    RESTARTS   AGE
pod/msa-deploy-consumer-6b75cf55d-kxsvz    1/1     Running   0          4m23s
pod/msa-deploy-consumer-6b75cf55d-qg84f    1/1     Running   0          4m23s
pod/msa-deploy-consumer-6b75cf55d-tqktz    1/1     Running   0          4m23s
pod/msa-deploy-producer-7965c98bbf-6d976   1/1     Running   0          4m23s
pod/msa-deploy-producer-7965c98bbf-6npwt   1/1     Running   0          4m23s
pod/msa-deploy-producer-7965c98bbf-fhmgw   1/1     Running   0          4m23s
pod/msa-deploy-producer-7965c98bbf-nwx8k   1/1     Running   0          4m23s
pod/msa-eureka-0                           1/1     Running   0          4m23s
pod/msa-eureka-1                           1/1     Running   0          4m23s
pod/msa-eureka-2                           1/1     Running   0          4m23s
pod/msa-gateway-597494c7f4-2lcvs           1/1     Running   0          4m23s
pod/msa-gateway-597494c7f4-5vh8r           1/1     Running   0          4m23s
pod/msa-gateway-597494c7f4-7jt6x           1/1     Running   0          4m23s

NAME                          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)           AGE
service/msa-deploy-consumer   ClusterIP   10.103.121.58    <none>        8912/TCP          4m23s
service/msa-deploy-producer   ClusterIP   10.108.38.255    <none>        8911/TCP          4m23s
service/msa-eureka            NodePort    10.111.194.177   <none>        10001:30001/TCP   4m23s
service/msa-gateway           NodePort    10.103.34.236    <none>        8888:30008/TCP    4m23s

NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/msa-deploy-consumer   3/3     3            3           4m23s
deployment.apps/msa-deploy-producer   4/4     4            4           4m23s
deployment.apps/msa-gateway           3/3     3            3           4m23s

NAME                                             DESIRED   CURRENT   READY   AGE
replicaset.apps/msa-deploy-consumer-6b75cf55d    3         3         3       4m23s
replicaset.apps/msa-deploy-producer-7965c98bbf   4         4         4       4m23s
replicaset.apps/msa-gateway-597494c7f4           3         3         3       4m23s

NAME                          READY   AGE
statefulset.apps/msa-eureka   3/3     4m23s

8.3.升级

通过修改values.yaml升级

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# 升级前
[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                               	STATUS  	CHART      	APP VERSION
msa 	dev      	1       	2021-11-11 16:35:10.13704314 +0800 CST	deployed	cloud-0.3.0	1.0.1  


[root@k8s-master test]# helm status msa -n dev
NAME: msa
LAST DEPLOYED: Thu Nov 11 16:35:10 2021
NAMESPACE: dev
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Spring Cloud!!!


[root@k8s-master test]# helm history msa -n dev
REVISION	UPDATED                 	STATUS  	CHART      	APP VERSION	DESCRIPTION     
1       	Thu Nov 11 16:35:10 2021	deployed	cloud-0.3.0	1.0.1      	Install complete


[root@k8s-master test]# kubectl get pod -n dev
NAME                                   READY   STATUS    RESTARTS   AGE
msa-deploy-consumer-6b75cf55d-kxsvz    1/1     Running   0          8m59s
msa-deploy-consumer-6b75cf55d-qg84f    1/1     Running   0          8m59s
msa-deploy-consumer-6b75cf55d-tqktz    1/1     Running   0          8m59s
msa-deploy-producer-7965c98bbf-6d976   1/1     Running   0          8m59s
msa-deploy-producer-7965c98bbf-6npwt   1/1     Running   0          8m59s
msa-deploy-producer-7965c98bbf-fhmgw   1/1     Running   0          8m59s
msa-deploy-producer-7965c98bbf-nwx8k   1/1     Running   0          8m59s
msa-eureka-0                           1/1     Running   0          8m59s
msa-eureka-1                           1/1     Running   0          8m59s
msa-eureka-2                           1/1     Running   0          8m59s
msa-gateway-597494c7f4-2lcvs           1/1     Running   0          8m59s
msa-gateway-597494c7f4-5vh8r           1/1     Running   0          8m59s
msa-gateway-597494c7f4-7jt6x           1/1     Running   0          8m59s


# 修改文件
# 修改版本version: 0.3.0  tag: 1.16 
[root@k8s-master cloud]# vim Chart.yaml 

apiVersion: v2
name: cloud
description: A Helm chart for Kubernetes
type: application
version: 0.4.0
appVersion: "1.0.4"

# 修改成8副本
[root@k8s-master cloud]# vim values.yaml
global:
  namespace: "dev"

producer:
  name: "msa-deploy-producer"
  serviceType: "ClusterIP"
  port: 8911
  targetPort: 8911
  replicas: 8


# 升级
[root@k8s-master test]# helm upgrade msa cloud -n dev
Release "msa" has been upgraded. Happy Helming!
NAME: msa
LAST DEPLOYED: Thu Nov 11 16:47:03 2021
NAMESPACE: dev
STATUS: deployed
REVISION: 2
TEST SUITE: None
NOTES:
Spring Cloud!!!


[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART      	APP VERSION
msa 	dev      	2       	2021-11-11 16:47:03.064552385 +0800 CST	deployed	cloud-0.4.0	1.0.4  



[root@k8s-master test]# helm history msa -n dev
REVISION	UPDATED                 	STATUS    	CHART      	APP VERSION	DESCRIPTION     
1       	Thu Nov 11 16:35:10 2021	superseded	cloud-0.3.0	1.0.1      	Install complete
2       	Thu Nov 11 16:47:03 2021	deployed  	cloud-0.4.0	1.0.4      	Upgrade complete


[root@k8s-master test]# kubectl get pod -n dev
NAME                                   READY   STATUS    RESTARTS   AGE
msa-deploy-consumer-6b75cf55d-kxsvz    1/1     Running   0          13m
msa-deploy-consumer-6b75cf55d-qg84f    1/1     Running   0          13m
msa-deploy-consumer-6b75cf55d-tqktz    1/1     Running   0          13m
msa-deploy-producer-7965c98bbf-4kgnh   1/1     Running   0          80s
msa-deploy-producer-7965c98bbf-6d976   1/1     Running   0          13m
msa-deploy-producer-7965c98bbf-6npwt   1/1     Running   0          13m
msa-deploy-producer-7965c98bbf-clnwr   1/1     Running   0          80s
msa-deploy-producer-7965c98bbf-fhmgw   1/1     Running   0          13m
msa-deploy-producer-7965c98bbf-jvwrl   1/1     Running   0          80s
msa-deploy-producer-7965c98bbf-nwx8k   1/1     Running   0          13m
msa-deploy-producer-7965c98bbf-p2hk4   1/1     Running   0          80s
msa-eureka-0                           1/1     Running   0          13m
msa-eureka-1                           1/1     Running   0          13m
msa-eureka-2                           1/1     Running   0          13m
msa-gateway-597494c7f4-2lcvs           1/1     Running   0          13m
msa-gateway-597494c7f4-5vh8r           1/1     Running   0          13m
msa-gateway-597494c7f4-7jt6x           1/1     Running   0          13m


[root@k8s-master test]# helm get manifest msa -n dev

9.Chart Hooks

9.1.Hook配置

Hooks在资源清单中的metadata部分用annotations注解的方式进行声明:

1
2
3
4
5
6
7
8
apiVersion: batch/v1
kind: Job
metadata:
  annotations:
    "helm.sh/hook": post-install,post-upgrade
    "helm.sh/hook-weight": "-5"
    "helm.sh/hook-delete-policy": hook-succeeded
......

9.2.生产者加Hook注解

msa-deploy-producer.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
apiVersion: v1
kind: Service
metadata:
  namespace: 
  name: 
  labels:
    app: 
  annotations:
    "helm.sh/hook": post-install,post-upgrade
    "helm.sh/hook-weight": "-5"
spec:
  type: 
  ports:
    - port: 
      targetPort: 
  selector:
    app: 

---
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: 
  name: 
  annotations:
    "helm.sh/hook": post-install,post-upgrade
    "helm.sh/hook-weight": "-5"
spec:
  replicas: 
  selector:
    matchLabels:
      app: 
  template:
    metadata:
      labels:
        app: 
    spec:
      imagePullSecrets:
        - name: harborsecret   #对应创建私有镜像密钥Secret
      containers:
        - name: 
          image: 172.51.216.85:8888/springcloud/:2.0.0
          imagePullPolicy: Always #如果省略imagePullPolicy,策略为IfNotPresent
          ports:
          - containerPort: 
          env:
            - name: EUREKA_SERVER
              value:  "http://msa-eureka-0.msa-eureka.dev:10001/eureka/,http://msa-eureka-1.msa-eureka.dev:10001/eureka/,http://msa-eureka-2.msa-eureka.dev:10001/eureka/"
            - name: ACTIVE
              value: "-Dspring.profiles.active=k8s"
            - name: DASHBOARD
              value: "sentinel-server.dev.svc.cluster.local:8858"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
[root@k8s-master test]# helm install msa cloud --dry-run --debug -n dev


# 安装
[root@k8s-master test]# helm install msa cloud -n dev
NAME: msa
LAST DEPLOYED: Fri Nov 12 11:36:58 2021
NAMESPACE: dev
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Spring Cloud!!!


[root@k8s-master test]# helm list -n dev
NAME	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART      	APP VERSION
msa 	dev      	1       	2021-11-12 11:36:58.339808934 +0800 CST	deployed	cloud-0.5.0	1.0.5 


# 检索已经发布的 release 的资源文件
[root@k8s-master test]# helm get manifest msa -n dev


[root@k8s-master test]# kubectl get all -n dev
NAME                                       READY   STATUS             RESTARTS   AGE
pod/msa-deploy-consumer-6b75cf55d-8mvcj    1/1     Running            0          4m19s
pod/msa-deploy-consumer-6b75cf55d-nbs2x    1/1     Running            0          4m19s
pod/msa-deploy-consumer-6b75cf55d-q9b98    1/1     Running            0          4m19s
pod/msa-deploy-producer-786f6dff44-4tn6h   0/1     ImagePullBackOff   0          4m18s
pod/msa-deploy-producer-786f6dff44-7wcbw   0/1     ImagePullBackOff   0          4m18s
pod/msa-deploy-producer-786f6dff44-b56r8   0/1     ImagePullBackOff   0          4m18s
pod/msa-eureka-0                           1/1     Running            0          4m19s
pod/msa-eureka-1                           1/1     Running            0          4m19s
pod/msa-eureka-2                           1/1     Running            0          4m19s
pod/msa-gateway-597494c7f4-lkqnx           1/1     Running            0          4m19s
pod/msa-gateway-597494c7f4-ltfpp           1/1     Running            0          4m19s
pod/msa-gateway-597494c7f4-mnn7g           1/1     Running            0          4m19s

NAME                          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)           AGE
service/msa-deploy-consumer   ClusterIP   10.105.146.252   <none>        8912/TCP          4m19s
service/msa-deploy-producer   ClusterIP   10.101.112.240   <none>        8911/TCP          4m18s
service/msa-eureka            NodePort    10.103.75.142    <none>        10001:30001/TCP   4m19s
service/msa-gateway           NodePort    10.103.81.61     <none>        8888:30008/TCP    4m19s

NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/msa-deploy-consumer   3/3     3            3           4m19s
deployment.apps/msa-deploy-producer   0/3     3            0           4m18s
deployment.apps/msa-gateway           3/3     3            3           4m19s

NAME                                             DESIRED   CURRENT   READY   AGE
replicaset.apps/msa-deploy-consumer-6b75cf55d    3         3         3       4m19s
replicaset.apps/msa-deploy-producer-786f6dff44   3         3         0       4m18s
replicaset.apps/msa-gateway-597494c7f4           3         3         3       4m19s

NAME                          READY   AGE
statefulset.apps/msa-eureka   3/3     4m19s


# 卸载
[root@k8s-master test]# helm uninstall msa -n dev
release "msa" uninstalled

# Hook资源需要自己删除
[root@k8s-master test]# kubectl get all -n dev
NAME                                       READY   STATUS             RESTARTS   AGE
pod/msa-deploy-producer-786f6dff44-4tn6h   0/1     ImagePullBackOff   0          5m24s
pod/msa-deploy-producer-786f6dff44-7wcbw   0/1     ImagePullBackOff   0          5m24s
pod/msa-deploy-producer-786f6dff44-b56r8   0/1     ImagePullBackOff   0          5m24s

NAME                          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
service/msa-deploy-producer   ClusterIP   10.101.112.240   <none>        8911/TCP   5m24s

NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/msa-deploy-producer   0/3     3            0           5m24s

NAME                                             DESIRED   CURRENT   READY   AGE
replicaset.apps/msa-deploy-producer-786f6dff44   3         3         0       5m24s