一、自定义应用 Chart 的开发流程¶
1.1 安装 Helm¶
以下是基于Helm开发一个常规应用的步骤及YAML文件:
下载地址:https://github.com/helm/helm/releases
说明:我用的Kubernetes版本为1.26.9,考虑到后期会升级Kubernetes版本,所以helm版本为3.11
[root@master01 ~]# k get no
NAME STATUS ROLES AGE VERSION
master01 Ready control-plane 11d v1.26.9
master02 Ready control-plane 11d v1.26.9
master03 Ready control-plane 11d v1.26.9
node01 Ready <none> 11d v1.26.9
node02 Ready <none> 11d v1.26.9
下载二进制包
[root@master01 3]# wget https://get.helm.sh/helm-v3.11.3-linux-amd64.tar.gz
解压,改名并做软链接
[root@master01 3]# tar zxf helm-v3.11.3-linux-amd64.tar.gz -C /opt/
[root@master01 3]# mv /opt/linux-amd64/ /opt/helm
[root@master01 3]# ln -s /opt/helm/helm /bin/
验证软链接
[root@master01 3]# ll /bin/helm
lrwxrwxrwx 1 root root 14 Oct 5 22:00 /bin/helm -> /opt/helm/helm
测试,查看helm版本
[root@master01 3]# helm version
version.BuildInfo{Version:"v3.11.3", GitCommit:"323249351482b3bbfc9f5004f65d400aa70f9ae7", GitTreeState:"clean", GoVersion:"go1.20.3"}
1.2 创建 Helm Chart¶
执行以下命令创建一个新的Helm chart:
[root@master01 ~]# cd /root/3
[root@master01 3]# helm create nginx
其中, myapp 是chart的名称,可以根据需要进行修改
1.3 编辑 values.yaml¶
进入chart目录,编辑 values.yaml 文件,修改其中的配置项,例如应用名称、端口号、镜像名称等。
1.4 编辑 deployment.yaml¶
1、编辑 templates/deployment.yaml 文件,定义应用的Deployment。
以下是一个示例:
[root@master01 myapp]# vim /root/3/nginx/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Values.appName }}-deployment
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: {{ .Values.appName }}
template:
metadata:
labels:
app: {{ .Values.appName }}
spec:
containers:
- name: {{ .Values.appName }}
image: {{ .Values.image.repository }}:{{ .Values.image.tag
}}
ports:
- containerPort: {{ .Values.containerPort }}
env:
- name: DB_HOST
value: {{ .Values.db.host }}
- name: DB_PORT
value: {{ .Values.db.port }}
- name: DB_USER
value: {{ .Values.db.user }}
- name: DB_PASSWORD
value: {{ .Values.db.password }}
在这个示例中,我们定义了一个Deployment,使用了 values.yaml文件中定义的配置项。其中, replicas 表示副本数, selector 表示选择器,template 表示Pod的模板, containers 表示容器列表, env 表示环境变量。
1.5 编辑 service.yaml¶
编辑 templates/service.yaml文件,定义应用的Service。
[root@master01 myapp]# vim /root/3/nginx/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.appName }}-service
spec:
selector:
app: {{ .Values.appName }}
ports:
- name: http
port: {{ .Values.servicePort }}
targetPort: {{ .Values.containerPort }}
type: LoadBalancer
在这个示例中,我们定义了一个Service,使用了 values.yaml 文件中定义的配置项。
其中, selector 表示选择器, ports 表示端口映射, type 表示Service类型。
1.6 打包 Helm Chart¶
执行以下命令将Helm chart打包
[root@master01 ~]# cd /root/3/
[root@master01 3]# helm package nginx/
Successfully packaged chart and saved it to: /root/3/nginx-0.1.0.tgz
1.7 部署 Helm Chart¶
执行以下命令部署Helm chart:
$ helm install my-app /root/3/nginx-0.1.0.tgz
其中, my-app 是部署的名称,可以根据需要进行修改。
以上就是基于Helm开发一个常规应用的步骤及所用到的YAML文件。需要注意的是,这只是一个示例,实际开发中可能需要根据具体需求进行修改。