Helm安装部署/添加chart公共仓库/本地仓库搭建

举报
Pterosaur 发表于 2023/08/31 03:02:29 2023/08/31
【摘要】 Helm 介绍Helm 是 Kubernetes 的包管理器,用于管理charts(即预先配置的Kubernetes资源包)。Helm主要具有以下功能:软件打包格式:将相关Kubernetes资源打包生成标准的chart软件包格式。仓库管理:支持将chart上传到仓库进行存储、版本管理、下载等。发布管理:管理chart的不同版本,控制chart发布更新。部署安装:在Kubernetes集群...

Helm

介绍

Helm 是 Kubernetes 的包管理器,用于管理charts(即预先配置的Kubernetes资源包)。Helm主要具有以下功能:

  1. 软件打包格式:将相关Kubernetes资源打包生成标准的chart软件包格式。
  2. 仓库管理:支持将chart上传到仓库进行存储、版本管理、下载等。
  3. 发布管理:管理chart的不同版本,控制chart发布更新。
  4. 部署安装:在Kubernetes集群中安装、升级和回滚软件。
  5. 模板语法:使用模板语法进行参数化安装和配置。
  6. 值管理:管理chart中参数值的区分设置。
  7. 安全签名:使用数字签名确保chart来源的安全可信。
  8. Hooks:支持配置chart的钩子函数。
  9. 依赖管理:管理chart之间的依赖关系。

主要优点:

  • 将K8s应用进行标准化打包。
  • 简化应用部署和管理。
  • 支持应用配置和版本管理。
  • 应用间可重用的charts组件。

Helm改进了在Kubernetes上的软件管理,被广泛使用。


-[helm官网]:Helm(https://helm.sh/)

-[helm下载地址]:https://get.helm.sh/helm-v3.12.3-linux-amd64.tar.gz

这个链接是一个 Helm v3.12.3 在 Linux amd64 架构上可执行文件打包的下载地址。

  • https://get.helm.sh/ 这是 Helm 项目的官方下载站点
  • helm-v3.12.3 表示 Helm 的版本号,此处是 v3.12.3
  • linux-amd64 表示打包适用于 Linux 64位系统
  • tar.gz 表明打包格式为 gzip 压缩过的 tar 包

下载这个 tar.gz 包,可以解压使用,其中包含:

  • helm 二进制文件:Helm 的命令行客户端
  • completions 目录:命令自动补全的脚本
  • helm 最新版本的合法性验证程序
  • 文档和 Licence 信息

所以这是一个 Helm v3.12.3 在 Linux 上最新正式版本的可直接下载的包文件。

下载后解压,即可使用 Helm 的 helm 命令行客户端进行 Kubernetes 包管理。




安装部署

#下载
wget   https://get.helm.sh/helm-v3.12.3-linux-amd64.tar.gz

#解压
tar zxf helm-v3.12.3-linux-amd64.tar.gz

#移动到对应的目录下并给执行权限
mv linux-amd64/helm  /usr/local/sbin/
chmod +x /usr/local/sbin/helm



#配置命令自动补全功能
source <(helm completion bash)
echo "source <(helm completion bash)" >> ~/.bashrc

这两条命令的作用是在 Bash shell 中配置 Helm 的自动命令补全功能。

第一条命令:

source <(helm completion bash)

这条命令的作用是:

source:在当前 Bash shell 中加载并执行后续命令的输出

<():表示命令替换,运行里面的命令并将输出传递给 source

helm completion bash:生成 helm 的 bash 自动补全脚本

所以它会在当前的 bash shell 会话中生效。

第二条命令:

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

作用是将自动补全命令添加到 ~/.bashrc 文件中。

~/.bashrc 文件在每次打开新的 bash shell 时被读取,用来设置用户环境。

所以这行代码的作用是将 helm 自动补全添加到 bashrc 中,这样以后打开新的 shell 也可以自动加载补全功能。

总结:

第一条为当前 shell 设置补全,第二条为永久添加到 bashrc 中。 两者结合可以在当前和未来的 shell 会话中都生效 helm 命令的自动补全。



#指定对应的 Kubernetes 集群
export KUBECONFIG=/root/.kube/config
echo "KUBECONFIG=/root/.kube/config" >> /etc/profile
source /etc/profile


#在使用 Helm 管理 Kubernetes 集群的时候,需要指定对应的 Kubernetes 集群。
#Helm 不像 kubectl 会默认从本地 kubeconfig 配置文件读取当前的 Kubernetes 集群信息。
#Helm在执行各种命令时,需要知道这些命令要操作的是哪一个Kubernetes集群。Helm没有默认的集群配置。
#没有目标集群,Helm命令将无效。



公共的 chart 仓库

#在 Helm 中可以通过添加仓库源来使用公共的 chart 仓库,常用的命令有:

#添加官方稳定仓库
helm repo add stable https://charts.helm.sh/stable
#这会添加 id 为 stable 的仓库源。

#添加官方测试仓库
helm repo add incubator https://charts.helm.sh/incubator 
#这会添加 id 为 incubator 的测试仓库。

#查看已添加的仓库列表
helm repo list

#更新仓库本地缓存
helm repo update

#搜索 charts
helm search repo nginx

#安装 charts
helm install mynginx stable/nginx

#以上命令可以添加常用的公共 chart 仓库,并从中安装所需的 charts。
#也可以添加自定义的 chart 仓库源。

仓库介绍

Kubernetes Helm 项目自身的官方仓库。

具体来说:

  • https://charts.helm.sh 是 Helm 项目的官方chart仓库地址
  • 其中 /stable 表示稳定版本仓库
  • 还有一个 /incubator 表示实验版本仓库

这两个仓库均由 Helm 社区维护,提供高质量的预配置应用 charts。


Helm 的一些常见公共 Chart 仓库汇总如下:

helm 官方仓库:

厂商维护的仓库:

第三方维护的仓库:

国内维护的仓库:

这些都是流行的公共 Helm Chart 仓库,可以根据需求添加使用。




chart私有仓库创建

构建一个本地的Helm chart仓库
任何的HTTP Server都可以作为chart仓库

docker run -d -p 8081:80 -v /var/www:/usr/local/apache2/htdocs httpd

#这个docker命令会创建并运行一个httpd容器,参数说明如下:

#- `-d`: 后台运行容器

#- `-p 8081:80`: 映射容器内80端口到宿主机8081端口

#- `-v /var/www:/usr/local/apache2/htdocs`: 把宿主机/var/www目录挂载到容器的/usr/local/apache2/htdocs,作为网页文档根目录

#- `httpd`: 使用httpd镜像启动容器

#这样就在宿主机8081端口启动了一个httpd服务器,网页文档来自宿主机的/var/www目录。

#访问方式:

#在宿主机浏览器访问 http://宿主机IP:8081 

#就可以访问容器中的httpd服务。

#并且我们可以通过挂载目录,来修改宿主机/var/www下的文件,即可实时更新httpd服务器中的网页文件。

#需要注意:

#1. 宿主机的/var/www目录需要存在,且有一定的访问权限。

#2. 容器内部的httpd配置不要和宿主机8081端口冲突。

#3. 可以添加-v宿主机日志目录:容器日志目录来收集日志。

#4. 可以设置时区等参数对容器进行定制。
mkdir /var/www/charts
#宿主机创建挂载目录

Helm chart上传到私有仓库

#Helm chart上传到私有仓库

helm package mychart/
#将mychart目录打包成tgz文件,用于发布。

mkdir myrepo
#创建文件夹作为chart仓库目录。 

mv mychart-0.1.0.tgz myrepo/
#将打包好的chart移动到仓库目录下。

helm repo index myrepo --url http://192.168.9.40:8081/charts
#在myrepo目录生成index.yaml索引文件,用于仓库查询。

scp index.yaml mychart-0.1.0.tgz /var/www/charts 
#将index和chart复制到Web服务器目录下,提供下载。

helm repo add newrepo http://192.168.9.40:8081/charts
#在本地Helm中添加这个chart仓库源,名为newrepo。

helm repo list
#列出已知的仓库列表,确保newrepo添加成功。

helm repo update 
#更新本地缓存的仓库index文件。

helm search repo mychart
#在newrepo仓库中搜索mychart是否可用。

至此,我们就利用Web服务器创建了一个本地的Helm chart仓库,可以通过add repo和update的方式使用了。

自行创建nginx Helm chart方法


#自行创建nginx Helm chart方法

helm create nginx-chart
#使用helm create命令生成一个名为nginx-chart的chart模板。

vim nginx-chart/values.yaml
#编辑values.yaml文件,用于模板中的值替换。

vim nginx-chart/templates/service.yaml
#编辑模板文件service.yaml,定义Kubernetes服务。

helm lint nginx-chart/
#使用helm lint对chart进行语法检查,确保没有错误。

helm install mynginx ./nginx-chart/
#使用helm install命令,以mynginx为release名称安装nginx-chart。

kubectl get pods,svc
#获取pod和服务,检查helm安装是否成功。

#这样通过自定义chart模板和values,我们就可以打包自己的应用 charts。helm lint和install命令可以确保chart语法正确并能被正常安装。

#然后就可以将chart发布到仓库,或者与CI/CD系统集成,实现Kubernetes的声明式部署。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。