【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)

文章目录

  • 一、Helm简介
  • 二、安装和配置Helm
  • 三、Helm使用
    • 3.1 三大概念
    • 3.2 常用命令
  • 四、部署nginx
    • 4.1 准备工作
    • 4.2 部署
    • 4.3 更新并回滚
  • 五、构建一个 Helm Chart
    • 5.1 创建Chart
    • 5.2 安装push插件并上传Chart
    • 5.3 部署chart应用到集群
    • 5.4 创建新版本Chart并管理


一、Helm简介


【Helm官网:https://helm.sh/docs/intro/】

Helm是Kubernetes 应用的包管理工具,主要用来管理 Charts,类似Linux系统的
yum。

Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。

对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。

对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序。

【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第1张图片【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第2张图片

二、安装和配置Helm


1)创建归类目录

[root@server2 ~]# mkdir helm
[root@server2 ~]# cd helm/

2)安装

安装包下载位置:https://github.com/helm/helm/releases

1.解压
tar zxf helm-v3.4.1-linux-amd64.tar.gz

2.移动到可执行目录
cd linux-amd64/
mv helm /usr/local/bin/

3)设置helm命令补齐,设置后重新打开终端即可使用

echo "source <(helm completion bash)" >> ~/.bashrc 
source ~/.bashrc

三、Helm使用


Helm 安装 charts 到 Kubernetes 集群中,每次安装都会创建一个新的 release。你可以在 Helm 的 chart repositories 中寻找新的 chart。

3.1 三大概念

Chart 代表着 Helm 包。它包含在 Kubernetes 集群内部运行应用程序,工具或服务所需的所有资源定义。你可以把它看作是 Homebrew formula,Apt dpkg,或 Yum RPM 在Kubernetes 中的等价物。

Repository(仓库) 是用来存放和共享 charts 的地方。它就像 Perl 的 CPAN 档案库网络 或是 Fedora 的 软件包仓库,只不过它是供 Kubernetes 包所使用的。

Release 是运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release。以 MySQL chart为例,如果你想在你的集群中运行两个数据库,你可以安装该chart两次。每一个数据库都会拥有它自己的 release 和 release name。

3.2 常用命令


helm search:查找 Charts

  • helm search hub:从 Artifact Hub 中查找并列出 helm charts。 Artifact Hub中存放了大量不同的仓库。
  • helm search repo:从你所添加的仓库中查找chart的名字。该命令基于本地数据进行搜索,无需连接互联网

从官方search:nginx
【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第3张图片

helm install:安装一个 helm 包

helm status:追踪 release 的状态,或是重新读取配置信息

helm upgrade:升级版本。只会更新自上次发布以来发生了更改的内容。

helm rollback:回滚

helm uninstall:卸载

helm get values:看配置值是否真的生效

helm repo:使用仓库

  • helm repo list:查看配置的仓库
  • helm repo add:添加第三方 Chart 库
  • helm repo remove:命令来移除仓库

helm create:创建Charts

helm package:将chart 打包

四、部署nginx


4.1 准备工作


1)helm添加第三方chart

添加:
helm repo add stable http://mirror.azure.cn/kubernetes/charts/
helm repo add bitnami https://charts.bitnami.com/bitnami

删除:
helm repo remove stable

【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第4张图片

2)第三方repo搜索

helm search repo nginx

3)准备镜像

1.在Harbor仓库中新建公开项目:bitnami

2.拉取镜像
docker pull bitnami/nginx:1.19.7-debian-10-r1

3.上传镜像到Harbor仓库
docker push zy.westos.org/bitnami/nginx:1.19.7-debian-10-r1

4.2 部署


1)下载nginx的Chart包

helm pull bitnami/nginx --version 8.7.0

2)解压

tar zxf nginx-8.7.0.tgz 
cd nginx

3)修改配置文件vim values.yaml

# 指定Harbor仓库
global:
  imageRegistry: zy.westos.org
# 镜像标签
  tag: 1.19.7-debian-10-r1
#服务类型
  #type: LoadBalancer
  type: ClusterIP

【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第5张图片
【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第6张图片
【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第7张图片

4)安装

helm install webserver .

【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第8张图片

5)查看详细信息

【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第9张图片【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第10张图片

6)测试

【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第11张图片

4.3 更新并回滚


1)修改副本数vim values.yaml

replicaCount: 2

2)更新

helm upgrade webserver .

【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第12张图片【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第13张图片

3)查看历史版本

helm history webserver 

在这里插入图片描述

4)回滚

helm rollback webserver 版本号

【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第14张图片

5)卸载

helm uninstall webserver

在这里插入图片描述

五、构建一个 Helm Chart


5.1 创建Chart


1)创建

cd helm/
helm create mychart

2)创建后会在目录创建一个mychart目录

目录结构如下:
cd mychart/
[root@server2 mychart]# tree .
.
├── 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

3)编写部署信息 vim values.yaml

  repository: myapp
  tag: "v1"

【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第15张图片

4)检查依赖和模板配置是否正确

helm lint .

【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第16张图片

5)打包

helm package mychart/

在这里插入图片描述

6)添加Harbor仓库(提前在Harbor仓库新建项目charts)

1.复制证书
cp /etc/docker/certs.d/zy.westos.org/ca.crt /etc/pki/ca-trust/source/anchors/
2.更新证书信任
update-ca-trust 
# 没有部署TLS,直接添加仓库即可
3.添加仓库
helm repo add mychart https://zy.westos.org/chartrepo/charts

【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第17张图片

5.2 安装push插件并上传Chart


//在线安装
helm plugin install https://github.com/chartmuseum/helm-push

1)离线安装

1.获取插件目录
helm env

2.创建插件目录
mkdir -p /root/.local/share/helm/plugins/push

3.解压tar包到插件目录下
tar zxf helm-push_0.9.0_linux_amd64.tar.gz -C /root/.local/share/helm/plugins/push/

【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第18张图片

2)上传

helm push mychart-0.1.0.tgz mychart -u admin -p westos --insecure

在这里插入图片描述

3)更新repo,发现可以search到刚上传的chart

helm repo update

【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第19张图片

4)在Harbor仓库web界面中也可以看到Chart
【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第20张图片

5.3 部署chart应用到集群


helm install webserver mychart/mychart 

【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第21张图片

5.4 创建新版本Chart并管理


1)修改vim mychart/Chart.yaml

appVersion: v2
version: 0.2.0

2)修改vim mychart/values.yaml

  tag: "v2"

3)打包

helm package mychart

4)上传

helm push mychart-0.2.0.tgz mychart -u admin -p westos --insecure

5)更新repo

helm repo update

【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第22张图片

6)搜索全部版本

helm search repo mychart -l

在这里插入图片描述

7)更新部署的Chart版本

helm upgrade webserver mychart/mychart 

【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第23张图片

8)回滚

helm rollback webserver 1

【Linux39-20】k8s包管理工具Helm(部署nginx、构建并管理上传 Charts)_第24张图片

9)卸载

helm uninstall webserver 

在这里插入图片描述

你可能感兴趣的:(Kubernetes,kubernetes,helm,chart,运维)