harbor集成helm charts
主机名/功能 | ip地址/访问方式 | 操作系统 | 版本 | 备注 |
---|---|---|---|---|
master | 192.168.140.210 | CentOS Linux release 7.4.1708 | v1.20.2 | 物理机 |
node1 | 192.168.140.211 | CentOS Linux release 7.4.1708 | v1.20.2 | 物理机 |
node2 | 192.168.140.212 | CentOS Linux release 7.4.1708 | v1.20.2 | 物理机 |
node3 | 192.168.140.213 | CentOS Linux release 7.4.1708 | v1.20.2 | 物理机 |
harbor | http://192.168.140.212 | v2.0 | 容器 |
harbor集成helm charts官网地址https://goharbor.io/docs/1.10/working-with-projects/working-with-images/managing-helm-charts/
背景
已完成k8s环境和harbor的搭建与部署,在harbor环境中部署helm charts功能,完善k8s环境部署应用功能
helm charts优势
1.方便快捷
不需要寻找yaml资源,尤其有的pod包括service资源、serviceaccount、rbac、volume等等需要多个yaml文件
2.版本管理
可以升级和降级到指定版本
3.变量修改方便
根据用户不同需求更改参数变量,完成自定义安装
helm目录结构
myapp
-charts/
-Chart.yaml
-templates/
-NOTES.txt
-*.yaml
-values.yaml
若想查看每个文件的作用及参数的解释可参考官网文档https://helm.sh/docs/topics/charts/
harbor集成helm charts操作流程
1.使用之前实验环境进行操作,对harbor进行charts插件安装,harbor部署参考之前的bloggitlab+jenkins+harbor持续集成(harbor篇)
# docker-compose down
# ./install.sh --with-chartmuseum
2.登陆harbor平台,为helm repo创建一个项目项目名为helm-repo,并设置为可公开访问
两种方式上传charts包到helm charts库中
1)直接网页upload上传tar包
2)helm push命令上传 最新安装包下载地址https://github.com/helm/helm/releases 为了方便之后使用chart在k8s上部署容器,我选择第二种方式进行charts包的上传 客户端下载helm并安装
# wget https://get.helm.sh/helm-v3.5.3-linux-amd64.tar.gz
# tar xvf helm-v3.5.3-linux-amd64.tar.gz
# cd helm && mv helm /usr/local/bin/
# helm plugin install https://github.com/chartmuseum/helm-push
3.添加harbor的repo库到客户端
[root@master ~]# helm repo add --username=admin --password=Harbor12345 harbor_repo http://192.168.140.210/chartrepo/helm-repo
"harbor_repo" has been added to your repositories
4.创建一个charts
# helm create myapp && cd myapp
# vim values.yaml
修改的内容如下
service:
# type: ClusterIP
type: NodePort
# port: 80
port: 80
targetPort: 80
nodePort: 30080
为了访问时使用节点的固定端口访问,修改templates/service.yaml,添加一行nodePort
nodePort:
5.修改后使用helm lint检查语法是否有错误
[root@master myapp]# helm lint --strict
==> Linting .
[INFO] Chart.yaml: icon is recommended
1 chart(s) linted, 0 chart(s) failed
6.进行本地测试debug查看各个参数数值
helm install . --dry-run --debug ./myapp
7.对charts进行打包
# helm package .
8.对发布的charts包进行上传,上传到之前创建的harbor_repo库中
# helm push myapp-0.1.0.tgz harbor_repo
9.进行部署前对repo库进行更新
# helm repo update
10.列出安装包信息
[root@master myapp]# helm search repo
NAME CHART VERSION APP VERSION DESCRIPTION
harbor_repo/myapp 0.1.0 1.16.0 A Helm chart for Kubernetes
11.接下来开始安装这个charts,首先创建一个独立的namespace
# kubectl create namespace nginx-test
12.helm命令安装charts
# helm install nginx-zhai harbor_repo/myapp --namespace nginx-test
13.访问节点的30080端口查看通过安装chart的方式部署的nginx程序是否成功
helm chart的升级和回滚
1.将nodePort从30080变为30090
service:
type: NodePort
port: 80
targetPort: 80
nodePort: 30090
2.将Chart.yaml中的版本信息修改一下
version: 0.2.0
appVersion: "1.17.0"
3.重新打包并上传
# helm package .
# helm push myapp-0.2.0.tgz harbor_repo
4.对repo库进行更新
# helm repo update
5.查看所有版本
[root@master myapp]# helm search repo -l
NAME CHART VERSION APP VERSION DESCRIPTION
harbor_repo/myapp 0.2.0 1.17.0 A Helm chart for Kubernetes
harbor_repo/myapp 0.1.0 1.16.0 A Helm chart for Kubernetes
6.对nginx应用进行版本升级
# helm upgrade nginx-zhai harbor_repo/myapp -n nginx-test
7.查看版本历史
[root@master myapp]# helm history nginx-zhai -n nginx-test
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Tue Apr 6 15:25:14 2021 superseded myapp-0.1.0 1.16.0 Install complete
2 Tue Apr 6 16:22:07 2021 deployed myapp-0.2.0 1.17.0 Upgrade complete
8.访问网页看端口是否更改成功
9.对应用进行版本回滚
# helm rollback nginx-zhai 1 -n nginx-test
10.再次查看版本历史
[root@master myapp]# helm history nginx-zhai -n nginx-test
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Tue Apr 6 15:25:14 2021 superseded myapp-0.1.0 1.16.0 Install complete
2 Tue Apr 6 16:22:07 2021 superseded myapp-0.2.0 1.17.0 Upgrade complete
3 Tue Apr 6 16:25:53 2021 deployed myapp-0.1.0 1.16.0 Rollback to 1
11.查看端口是否更改回原来的30080
应用回滚成功
声明:本博客的原创文章,都是本人平时学习所做的笔记,转载请标注出处,谢谢合作。