helm库学习总结
大纲
- helm库学习总结
- 使用nginx做为私库
- 使用minio作为私库
helm库学习总结
Helm支持通过一个名为chart存储库的系统来分发软件包。chart存储库是简单的HTTP(S)Web服务,用户可以从中查找和下载可用的chart
库结构
库需要一个存储索引
所有chart存储库都包含一个名为index.yaml的索引文件,其中列出了所有可用的chart及其各自的下载位置。
一个空库的index.yaml文件内容如下
apiVersion: v1
entries: {}
generated: "2023-02-06T10:04:16.766472397+08:00"
其中entries 就是所有的charts的内容描述
创建一个chart库流程
- 1 创建一个空目录 作为仓库
- 2 把归档好的chart.tgz 放入这个目录中
- 3 执行 helm repo index 文件夹生成索引
- 4 把这个库发布到web服务器上
主要涉及的关键命令
#创建或更新charts库index.yaml
helm repo index 【charts归档文件夹】
例如
helm repo index charts/
创建本地库的流程如下
此时本地库以完成创建,后续只需添加chart到本地charts文件夹,并执行helm repo index 更新index.yaml
使用nginx做为私库
原理就是将 本地的charts作为一个静态资源发布到nginx上
step1 本地环境配置一个域名用于访问nginx helm私库
在 hosts文件中加入
192.168.0.206 repo.helm.com
这样访问repo.helm.com 就可以到达nginx服务器了
step2 配置一个账号密码 稍微增加点私库的安全性
安装htpasswd命令生成 http Basic Authorization格式的账号密码
- ubuntu apt install apache2-utils
- centos yum install httpd-tools
使用使用 htpasswd -bdc htpasswd 【用户名】 【密码】
例如:
htpasswd -bdc htpasswd jimliu 123456
这样就会在当前文件夹下创建htpasswd 文件 文件内容如下
jimliu:XOzIb/4HAwRos
step3 配置nginx
配置文件如下
server {
listen 80;
server_name repo.helm.com;
auth_basic "helm name passwd"; #开启http Basic Authorization 认证
auth_basic_user_file /medcrab/ops/openrestry/nginx/nginx/conf/htpasswd; #账号密码位置
location /charts {
alias /web/charts; #把本地生成的charts库 上传到服务器
autoindex on;
}
}
浏览器看到的效果
step4 配置 helm
添加私库 注意输入账号 密码
helm repo add m-ngx http://repo.helm.com/charts --username jimliu --password 123456
nginx 实现私库完成
使用minio作为私库
minio官网地址 https://min.io/
详细安装说明
https://min.io/download#/linux
下载最新版minio
https://dl.minio.io/server/minio/release/linux-amd64/
所有可以下载的资源 https://dl.minio.io/
minio私库安装使用总结
step1 下载minio
创建一个文件夹用于保存 后续的配置和数据 并下载最新的minio
step2 修改minio权限
修改minio权限为可执行,移动到/usr/local/bin 可以省去配置环境变量
chmod 755 minio
mv minio /usr/local/bin
minio --version
此时以安装成功
step3 添加环境变量并启动
此时已经可以使用minio了
minio server start --address :8551
建议还是把账号密码和挂载都配置到环境变量中
创建data文件夹 mkdir data
vi /etc/profile
加入
export MINIO_ROOT_USER=root
export MINIO_ROOT_PASSWORD=jimliu123
# 指定minio数据存储位置
export MINIO_VOLUMES=/medcrab/minio/data
source /etc/profile
后台启动minio
nohup minio server start --address :8551 &
浏览器输入 http://192.168.0.211:8551
可以把minio 制做为systemd service
step4 创建仓库
点击仓库详细 编辑仓库类型为 public
这样仓库就可以使用了
step5 将本地库上传到minio
将第一章中创建好的chart库内容上传到minio
step6 配置helm私库
helm repo add my-minio http://192.168.0.211:8551/mycharts
helm repo list
minio私库完成安装使用
step7 结合minio client
安装配置minio client
如果每次index.yaml文件变化了都去 minio web端手动上传的话不方便,并且无法集成到 持续集成环境
使用minio client 可以比较方便的实现文件的上传和更新,并融入到持续集成脚本中
下载 minio客户端 mc
下载地址: https://dl.minio.io/client/mc/release/linux-amd64/
下载客户端 : wget https://dl.minio.io/client/mc/release/linux-amd64/mc
修改mc权限为可执行,移动到/usr/local/bin 可以省去配置环境变量
chmod 755 mc
mv mc /usr/local/bin
mc --help
添加mc host
mc config host ls
# 添加host 注意 账号密码是登录minio的账号密码
mc config host add my-minio http://192.168.0.211:8551 root jimliu123
更多客户端使用例子
https://min.io/docs/minio/linux/reference/minio-mc.html
https://min.io/docs/minio/linux/reference/minio-mc-admin.html
使用minio client
思路是把手动上传的操作,改为脚本自动上传,以重新创建一个新的chart为例子
目前 minio 上还只有2个chart
模拟本地charts库添加了新的chart
mc ls my-minio
# 把my-user-service-1.33.1.tgz index.yaml上传到minio
mc cp my-user-service-1.33.1.tgz my-minio/mycharts
mc cp index.yaml my-minio/mycharts
再次使用查询并安装