K8s--Helm(配置、使用、部署及Helm Chart的构建)

文章目录

  • 一、Helm介绍
  • 二、Helm安装与初始配置
    • 1.安装
    • 2.添加第三方Chart库
  • 三、Helm 部署nginx应用
    • 1.harbor仓库相关配置
    • 2.拉取nginx Chart包并做相关配置
    • 3.安装webserver(为了测试nginx部署效果)
    • 4.升级与回滚
  • 四、构建Helm Chart
    • 1.创建一个Helm Chart
    • 2.上传打包好的chart包到harbor仓库中
  • 五、部署mychart应用到k8s集群
    • 1.部署
    • 2.创建新版本Chart包并上传
    • 3.更新、回滚与卸载

一、Helm介绍

Helm是Kubernetes 应用的包管理工具,主要用来管理 Charts,类似Linux系统的yum。
Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。
对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。
对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序。

二、Helm安装与初始配置

1.安装

下载软件包:helm-v3.1.1-linux-amd64.tar.gz
mkdir helm        %创建单独目录
cd helm
tar zxf helm-v3.1.1-linux-amd64.tar.gz   %解压
cd linux-amd64/     %切换到该目录下
cp helm /usr/local/bin/   %复制到相关目录下
echo "source <(helm completion bash)" >> ~/.bashrc   %设置命令补齐
source ~/.bashrc    %使之生效
设置补齐命令后重新进入终端即可

做完上述设置后即可使用helm search搜索官方helm hub chart库:
K8s--Helm(配置、使用、部署及Helm Chart的构建)_第1张图片

2.添加第三方Chart库

helm repo add stable http://mirror.azure.cn/kubernetes/charts/    
helm repo add aliyun  https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts 

可以使用helm search repo从你所添加的仓库中查找chart的名字:
K8s--Helm(配置、使用、部署及Helm Chart的构建)_第2张图片
K8s--Helm(配置、使用、部署及Helm Chart的构建)_第3张图片

三、Helm 部署nginx应用

1.harbor仓库相关配置

1.在harbor仓库中新建项目(公开):bitnami

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

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

2.拉取nginx Chart包并做相关配置

helm pull bitnami/nginx --version 8.7.0   %下载nginx的Chart包
tar zxf nginx-8.7.0.tgz    %解压
cd nginx   %切到nginx目录

在这里插入图片描述
K8s--Helm(配置、使用、部署及Helm Chart的构建)_第4张图片

vim values.yaml   %更改配置文件

K8s--Helm(配置、使用、部署及Helm Chart的构建)_第5张图片
K8s--Helm(配置、使用、部署及Helm Chart的构建)_第6张图片

3.安装webserver(为了测试nginx部署效果)

helm install webserver .
helm status webserver   %查看详细信息

K8s--Helm(配置、使用、部署及Helm Chart的构建)_第7张图片

kubectl get all   %查看service/webserver-nginx分配到的IP
curl 查看到的ip   %测试是否可以看到Nginx的测试页面,如果可以看到则说明部署成功

K8s--Helm(配置、使用、部署及Helm Chart的构建)_第8张图片

4.升级与回滚

vim values.yaml:
修改副本数
replicaCount: 3
helm upgrade webserver .  %升级

在这里插入图片描述
K8s--Helm(配置、使用、部署及Helm Chart的构建)_第9张图片

helm history webserver     %查看历史版本号

K8s--Helm(配置、使用、部署及Helm Chart的构建)_第10张图片

helm rollback webserver 版本号   %回滚

K8s--Helm(配置、使用、部署及Helm Chart的构建)_第11张图片

helm uninstall webserver    %卸载

K8s--Helm(配置、使用、部署及Helm Chart的构建)_第12张图片

四、构建Helm Chart

1.创建一个Helm Chart

cd helm/
helm create mychart   %创建Chart
cd mychart   
tree .  %查看mychart目录结构
.
├── 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

vim values.yaml:
repository: myapp    %指定镜像
tag: "v1"       %指定tag(镜像版本)

K8s--Helm(配置、使用、部署及Helm Chart的构建)_第13张图片

helm lint .    %检查依赖和模板配置是否正确

K8s--Helm(配置、使用、部署及Helm Chart的构建)_第14张图片

helm package mychart/      %打包(需要切出mychart目录)

在这里插入图片描述

helm repo add mychart https://reg.westos.org/chartrepo/charts   %添加第三方仓库(这个charts项目需要提前在harbor仓库中创建

cp /etc/docker/certs.d/reg.westos.org/ca.crt /etc/pki/ca-trust/source/anchors/  %复制证书
update-ca-trust  %更新证书信任

K8s--Helm(配置、使用、部署及Helm Chart的构建)_第15张图片

2.上传打包好的chart包到harbor仓库中

helm plugin install https://github.com/chartmuseum/helm-push    %安装push插件(离线安装,速度太慢,不推荐)

离线安装:
helm env	  %获取插件目录
mkdir ~/.local/share/helm/plugins/push
tar zxf helm-push_0.8.1_linux_amd64.tar.gz -C ~/.local/share/helm/plugins/push
helm push --help

K8s--Helm(配置、使用、部署及Helm Chart的构建)_第16张图片
K8s--Helm(配置、使用、部署及Helm Chart的构建)_第17张图片

helm push mychart-0.1.0.tgz mychart -u admin -p westos --insecure     %上传到harbor仓库
helm repo update     %更新完之后可以在harbor仓库中看到刚才上传的chart包

K8s--Helm(配置、使用、部署及Helm Chart的构建)_第18张图片

五、部署mychart应用到k8s集群

1.部署

helm install webserver mychart/mychart   %部署mychart应用到集群

K8s--Helm(配置、使用、部署及Helm Chart的构建)_第19张图片
K8s--Helm(配置、使用、部署及Helm Chart的构建)_第20张图片

2.创建新版本Chart包并上传

vim mychart/Chart.yaml:
appVersion: v2    %更换版本
version: 0.2.0

vim mychart/values.yaml:
 tag: "v2"

K8s--Helm(配置、使用、部署及Helm Chart的构建)_第21张图片

helm package mychart   %重新打包
helm push mychart-0.2.0.tgz mychart -u admin -p westos --insecure     %上传
helm repo update     %更新仓库

K8s--Helm(配置、使用、部署及Helm Chart的构建)_第22张图片
K8s--Helm(配置、使用、部署及Helm Chart的构建)_第23张图片

3.更新、回滚与卸载

helm upgrade webserver mychart/mychart      %更新版本

K8s--Helm(配置、使用、部署及Helm Chart的构建)_第24张图片
K8s--Helm(配置、使用、部署及Helm Chart的构建)_第25张图片

helm rollback webserver 1      %回滚

K8s--Helm(配置、使用、部署及Helm Chart的构建)_第26张图片
K8s--Helm(配置、使用、部署及Helm Chart的构建)_第27张图片

helm uninstall webserver       %卸载

在这里插入图片描述

你可能感兴趣的:(Linux企业实战篇)