helm就是k8s的包管理工具 ,前提是先安装好k8s
使用kubeode快速部署k8s_我是一只代码狗的博客-CSDN博客
然后我们安装helm
yum install -y wget
mkdir -p /usr/local/helm
cd /usr/local/helm
wget https://get.helm.sh/helm-v3.10.0-linux-amd64.tar.gz
tar zxvf helm-v3.10.0-linux-amd64.tar.gz
mv -f linux-amd64/helm /usr/bin
然后我们访问
他是helm的镜像仓库站,比如说我们要部署nginx
我们输入nginx,然后点击进去详情
点击install 可以看到具体的命令
添加仓库 nginx-test 自己定义
helm repo add nginx-test http://175.24.198.168:8080
安装图表 my-nginx你可以随便起名 版本号 可以选择右侧的历史版本
helm install my-nginx nginx-test/nginx --version 13.2.12
nginx-test/nginx前面的nginx-test,要和上面仓库的nginx-test一样的名字
如果已经安装了,想要卸载可以使用
helm uninstall my-nginx
接下来我们看下pod
kubectl get pods
可以看到已经在pods中存在了,通过一句话就搞定了
我们在看下服务和部署的信息
kubectl get deployment
kubectl get service
可以看到都有了,我们访问下nginx
可以看到,是不是很方便一行命令就搞定了所有
接下来我们查看下helm都部署了那些东西
helm list
我们要看到详细信息可以使用
helm status my-nginx
my-nginx就是helm list查询出来的name
我们要是对pod进行扩容 可以使用
helm upgrade my-nginx nginx-test/nginx --version 13.2.12 --set replicaCount=3
就是把install换成了upgrade 后面加set 修改 副本数量=多少个
再次查看就变成了3个
kubectl get deploy
我们也可以缩容,就是把3变成1 然后再看下,就变成了1个
deployment和deploy是一样的,deploy就是简写
所以可以使用kubectl get deploy
接下来我们构建helm私有仓库发布自定义charts
在jenkins这台服务器上面启动chartmuseum
docker run -p 18080:8080 --name chartmuseum --restart=always -d bitnami/chartmuseum:0.15.0
浏览器输入http://192.168.184.136:18080/
可以看到启动成功了
接下来,我们在回到k8s的服务器,因为k8s服务器安装了helm
mkdir -p /usr/local/charts
cd /usr/local/charts
helm create my-charts
cd /usr/local/charts/my-charts
我们可以看到,helm已经给我们创建好了这些文件
charts 基本信息
Chart.yaml 核心配置项
templates 模板
values.yaml 模板所需要传入的数据
我们可以看下Chart.yaml
cat Chart.yaml
看着有2个版本 是不是很绕 我们对文件进行修改
vi Chart.yaml
把 appVersion:变成stable稳定版本
再次查看,是不是就区分出了
version 是图表版本,生成压缩包的时候会自动带上
appVersion 是正在部署的应用程序的版本号
然后进入模板目录下 把所有文件删除掉
cd templates
rm -rf deployment.yaml
rm -rf _helpers.tpl
rm -rf hpa.yaml
rm -rf ingress.yaml
rm -rf NOTES.txt
rm -rf serviceaccount.yaml
rm -rf service.yaml
rm -rf tests
然后把我们的部署和服务脚本拿过来
cat > deployment.yaml <<-'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 2
selector:
matchLabels:
app: my-pod
template:
metadata:
labels:
app: my-pod
spec:
containers:
- name: demo3
image: 192.168.184.136:80/public/mydemo3:webhook-0.6
ports:
- containerPort: 9003
EOF
cat > service.yaml <<- 'EOF'
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: NodePort
ports:
- port: 9003
name: service-port
nodePort: 31000
selector:
app: my-pod
EOF
ll
注意这里的名字 不要随便改动,deploymen.yaml和service.yaml是固定的名字
然后我们回到私有仓库的根目录
cd /usr/local/charts/my-charts
对当前目录构建压缩包,别忘了后面还有个点
helm package .
接下来我们把压缩包上传到chartmuseum私有仓库,也就是在jenkins那台服务器安装好的
curl --data-binary "@my-charts-0.1.0.tgz" http://192.168.184.136:18080/api/charts
注意@符号不要丢
18080就是chartmuseum的端口
我们在浏览器输入
http://192.168.184.136:18080/api/charts
可以看到数据已经上传成功了
接下来我们回到k8s的服务器
我们先把之前的容器和服务删除掉
kubectl delete deployment my-deployment
kubectl delete service my-service
安装helm私有仓库
helm repo add my-repo http://192.168.184.136:18080/
更新仓库
helm repo update
安装图表,my-repo要和安装的私有仓库一致,my-charts就是我们之前创建的目录
helm install xm my-repo/my-charts
我们要搜索仓库可以使用
helm search repo my-repo
我们来看下安装后的信息
helm list
然后我们看一下服务和容器信息
kubectl get service
kubectl get pods
我们访问下微服务的接口
http://192.168.184.128:31000/aa
可以看到发布成功了
如果想要卸载图表可以使用
helm uninstall xm
如果想要删除仓库,可以使用
helm repo remove my-repo
之前我们做的是写死的标签,接下来我们动态的传值
接下来我们进入my-charts目录
cd /usr/local/charts/my-charts
修改values.yaml
vi values.yaml
里面的数据全部清空
放入副本数,标签,节点端口
replicas: 3
tag: webhook-0.6
nodePort: 31000
然后进入模板目录
cd /usr/local/charts/my-charts/templates
修改部署脚本
vi deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: {{.Values.replicas}}
selector:
matchLabels:
app: my-pod
template:
metadata:
labels:
app: my-pod
spec:
containers:
- name: demo3
image: 192.168.184.136:80/public/mydemo3:{{.Values.tag}}
ports:
- containerPort: 9003
我们这里使用{{.Values.xxx}}的形式传数据
Values就是values.yaml文件
其他的都是文件的内容,这里是V是大写开头要注意
我们在修改下service
vi service.yaml
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: NodePort
ports:
- port: 9003
name: service-port
nodePort: {{.Values.nodePort}}
selector:
app: my-pod
我们要把之前发布的删除掉
curl -X DELETE http://192.168.184.136:18080/api/charts/my-charts/0.1.0
回到图表目录
cd /usr/local/charts/my-charts
重新打压缩包
helm package .
上传压缩包到chartmuseum
curl --data-binary "@my-charts-0.1.0.tgz" http://192.168.184.136:18080/api/charts
我们先卸载掉之前安装好的xm
helm uninstall xm
更新仓库才能看到最新的压缩包
helm repo update
然后我们安装xm,在set 动态设置副本数 和标签
helm install xm my-repo/my-charts --set replicas=3 --set tag=dev-0.3
我们可以看到,副本数已经发生了变化
我们访问
http://192.168.184.128:31000/aa
我们可以对其进行改动
helm upgrade xm my-repo/my-charts --set replicas=1 --set tag=webhook-0.6
可以看到已经发生了变化
在看下标签对应的微服务
成功更新了