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%\h elm | %APPDATA%\h elm | %APPDATA%\h elm |
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
© 2024 IoTHub - 物联网开源技术社区