k8s云原生专题k8s集群

Kubernetes Helm(详解及使用)

2021-07-04  本文已影响0人  Chris0Yang

一、Helm

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

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

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

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

二、Helm安装

安装包的下载地址:https://github.com/helm/helm/releases,最新版本3.6.2

下载软件包:helm-v3.6.2-linux-amd64.tar.gz

解压:

[root@master ~]# tar zxf helm-v3.6.2-linux-amd64.tar.gz 
[root@master ~]# cd linux-amd64/
[root@master linux-amd64]# ls
helm  LICENSE  README.md
[root@master linux-amd64]# cp helm /usr/local/bin/

使命令自动补齐:

[root@master linux-amd64]# echo "source <(helm completion bash)" >> ~/.bashrc
[root@master linux-amd64]# source ~/.bashrc

helm部署完成

[root@master linux-amd64]# helm version
version.BuildInfo{Version:"v3.6.2", GitCommit:"ee407bdf364942bcb8e8c665f82e15aa28009b71", GitTreeState:"clean", GoVersion:"go1.16.5"}

三、Helm仓库的使用

搜索官方helm hub chart库

[root@master linux-amd64]# helm search hub redis
image.png

Helm 添加第三方 Chart 库

1、微软的chart仓库,基本上官网有的chart这里都有。 
http://mirror.azure.cn/kubernetes/charts/

2、阿里的chart仓库
https://apphub.aliyuncs.com/

3、Kubeapps Hub 官方chart仓库,国内有点不好使
https://hub.kubeapps.com/charts/incubator

将仓库添加到helm

[root@master  helm]# helm repo add mychart https://apphub.aliyuncs.com/
Error: looks like "https://reg.westos.org/chartrepo/charts" is not a valid chart repository or cannot be reached: Get https://reg.westos.org/chartrepo/charts/index.yaml: x509: certificate signed by unknown authority

报错原因是缺少证书,可以将证书复制到 redhat 的全局证书地址

[root@master  helm]# cd /etc/docker/certs.d/harbor.com/
[root@master  harbor.com]# ls
ca.crt
[root@master  harbor.com]# cp ca.crt /etc/pki/ca-trust/source/anchors/
[root@master  harbor.com]# update-ca-trust      #更新证书

创建helm chart

[root@master  helm]# helm create mychart
Creating mychart

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

[root@master  helm]# ls
mychart  redis-ha
[root@master  helm]# tree mychart/      #查看结构
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

其中mychart目录下的templates目录中保存有部署的模板文件,values.yaml中定义了部署的变量,Chart.yaml文件包含有version(chart版本)和appVersion(包含应用的版本)

查看并且更改变量文件values.yaml

[root@master  mychart]# vim values.yaml 

选择镜像及标签和副本数(这里设置1个)


image.png

依赖和模板配置是否正确

[root@master mychart]# helm lint .
==> Linting .
[INFO] Chart.yaml: icon is recommended

1 chart(s) linted, no failures

将应用打包

[root@master helm]# ll
total 4
drwxr-xr-x 4 root root 4096 Jul  5 10:45 mychart
[root@master  helm]# helm package mychart/
Successfully packaged chart and saved it to: /data/helm/mychart-0.1.0.tgz

# 打包后会在当前目录下生成一个名为mychart-0.1.0.tgz压缩包
[root@master  helm]# ls
mychart  mychart-0.1.0.tgz

其中0.1.0为在Chart.yaml文件中定义的version(chart版本)信息

再次添加

[root@server1 reg.westos.org]# helm repo add mychart https://harbor域名:端口号/chartrepo/charts
"mychart" has been added to your repositories

添加成功,查看仓库

[root@server1 reg.westos.org]# helm repo list
NAME        URL                                      
mychart     http://mirror.azure.cn/kubernetes/charts/

添加第三库之后就可以使用以下方式查询

[root@master  linux-amd64]# helm search repo redis -l

注意:加 -l 选项可以查看历史版本


image.png

删除第三方库

[root@master ~]# helm repo remove testdata
"testdata" has been removed from your repositories
上一篇 下一篇

猜你喜欢

热点阅读