背景说明
values.yaml文件定义了全局变量,可以通过相关语法进行引用
{{ .Values.varname}} {{ .Release.Name}}
解决方案
命令参数
初始文件
[root@cka-master helm]# tree chart-demo/
chart-demo/
├── Chart.yaml
├── templates
│ ├── Deployment.yaml
│ └── Service.yaml
└── values.yaml
1 directory, 4 files
[root@cka-master helm]#
Chart.yaml
apiVersion: v1
name: chart-demo
version: 1.0.0
Deployment.yaml
apiVersion: v1
kind: Pod
metadata:
name: {{ .Release.Name}}-demo
labels:
name: {{ .Release.Name}}-demo
app: {{ .Release.Name}}-demo
spec:
containers:
- name: {{ .Release.Name}}-demo
image: {{ .Values.image}}
Service.yaml
apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name}}-svc
spec:
selector:
app: {{ .Release.Name}}-demo
type: ClusterIP
ports:
- protocol: TCP
port: 8000
targetPort: 80
安装应用
[root@cka-master chart-demo]# helm instll web-nginx --set image=nginx .
Error: unknown command "instll" for "helm"
Did you mean this?
install
Run 'helm --help' for usage.
[root@cka-master chart-demo]# helm install web-nginx --set image=nginx .
NAME: web-nginx
LAST DEPLOYED: Tue Mar 15 19:08:34 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
[root@cka-master chart-demo]# helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
web-nginx default 1 2022-03-15 19:08:34.774024913 +0800 CST deployed chart-demo-1.0.0
[root@cka-master chart-demo]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 43h
web-nginx-svc ClusterIP 10.104.38.113 <none> 8000/TCP 21s
[root@cka-master chart-demo]#
模板文件
初始文件
[root@cka-master helm]# tree chart-demo/
chart-demo/
├── Chart.yaml
├── templates
│ ├── Deployment.yaml
│ └── Service.yaml
└── values.yaml
1 directory, 4 files
[root@cka-master helm]#
Chart.yaml
apiVersion: v1
name: chart-demo
version: 1.0.0
Deployment.yaml
apiVersion: v1
kind: Pod
metadata:
name: {{ .Release.Name}}-demo
labels:
name: {{ .Release.Name}}-demo
app: {{ .Release.Name}}-demo
spec:
containers:
- name: {{ .Release.Name}}-demo
image: {{ .Values.image}}
Service.yaml
apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name}}-svc
spec:
selector:
app: {{ .Release.Name}}-demo
type: ClusterIP
ports:
- protocol: TCP
port: 8000
targetPort: 80
values.yaml
image: nginx
校验应用
[root@cka-master chart-demo]# helm lint .
==> Linting .
[INFO] Chart.yaml: icon is recommended
1 chart(s) linted, 0 chart(s) failed
[root@cka-master chart-demo]#
[root@cka-master chart-demo]# helm install web-nginx --dry-run --generate-name=false .
NAME: web-nginx
LAST DEPLOYED: Tue Mar 15 18:59:04 2022
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: chart-demo/templates/Service.yaml
apiVersion: v1
kind: Service
metadata:
name: web-nginx-svc
spec:
selector:
app: web-nginx-demo
type: ClusterIP
ports:
- protocol: TCP
port: 8000
targetPort: 80
---
# Source: chart-demo/templates/Deployment.yaml
apiVersion: v1
kind: Pod
metadata:
name: web-nginx-demo
labels:
name: web-nginx-demo
app: web-nginx-demo
spec:
containers:
- name: web-nginx-demo
image: nginx
[root@cka-master chart-demo]#
安装应用
[root@cka-master chart-demo]# helm install web-nginx ./
NAME: web-nginx
LAST DEPLOYED: Tue Mar 15 18:47:20 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
[root@cka-master chart-demo]#
这里的web-nginx即为{{ .Release.Name}}
查看应用
[root@cka-master chart-demo]# helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
web-nginx default 1 2022-03-15 18:47:20.573872396 +0800 CST deployed chart-demo-1.0.0
[root@cka-master chart-demo]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 43h
web-nginx-svc ClusterIP 10.100.27.27 <none> 8000/TCP 66s
[root@cka-master chart-demo]# kubectl get pod
NAME READY STATUS RESTARTS AGE
web-nginx-demo 1/1 Running 0 76s
[root@cka-master chart-demo]# curl 10.100.27.27:8000
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@cka-master chart-demo]#
[root@cka-master chart-demo]# helm status web-nginx
NAME: web-nginx
LAST DEPLOYED: Tue Mar 15 18:47:20 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
[root@cka-master chart-demo]#
helm status查看Release的状态
分发应用
[root@cka-master chart-demo]# helm package .
Successfully packaged chart and saved it to: /root/helm/chart-demo/chart-demo-1.0.0.tgz
[root@cka-master chart-demo]# ls
chart-demo-1.0.0.tgz Chart.yaml templates values.yaml
[root@cka-master chart-demo]#