k8s笔记7.2--搭建私有helm仓库
k8s笔记7--搭建私有helm仓库1 安装基础软件2 搭建helm私有仓库3 chart 更新发布和案例3.1 更新发布3.2 helm 案例发布一个busybox chart4 常见操作和问题4.1 常见操作4.2 常见问题5 说明1 安装基础软件拉取 nginx 镜像用于提供helm仓库的http服务下载最新版本 helm-v3.6.1解压helm安装包,在 ~/.bashrc 添加环境变量
·
k8s笔记7.2--搭建私有helm仓库
1 安装基础软件
- 拉取 nginx 镜像用于提供helm仓库的http服务
- 下载最新版本 helm-v3.6.1
解压helm安装包,在 ~/.bashrc 添加环境变量即可 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/home/xg/soft/java/jdk-11.0.8/bin:/home/xg/soft/k8s/helm-v3.6.1" export PATH
2 搭建helm私有仓库
- 使用nginx 起一个helm的http服务
docker run -d --name=nginx -p 80:80 -v /home/xg/soft/k8s/helm/charts:/usr/share/nginx/html/charts nginx
- 创建并打包一个helm应用
创建package, 需要自行修改 xgnginx/values.yaml 中的参数 helm create xgnginx 打包,会生成一个tgz包 helm package xgnginx
- 生成库的index文件
mkdir xgrepo mv xgnginx-0.1.0.tgz xgrepo/ helm repo index xgrepo/ --url http://10.192.155.237/charts #该操作会在xgrepo目录生成index.yaml文件,该文件包含了helm库应用信息 ls myrepo #查看是否生成
- 将生成的index.yaml文件及charts包复制到nginx的charts目录下面
cp xgrepo/* /home/xg/soft/k8s/helm/charts
- 通过helm repo add 将新仓库添加到helm
$ helm repo add xgrepo http://10.192.155.237/charts $ helm search repo xgnginx NAME CHART VERSION APP VERSION DESCRIPTION xgrepo/xgnginx 0.1.1 1.19.6 A Helm chart for Kubernetes
- 从新的私有库中安装mychart进行测试
$ helm install repo xgrepo/xgnginx --namespace sre-test NAME: repo LAST DEPLOYED: Thu Jun 24 11:55:52 2021 NAMESPACE: sre-test STATUS: deployed REVISION: 1 NOTES: 3. Get the application URL by running these commands: export POD_NAME=$(kubectl get pods --namesp ace sre-test -l "app.kubernetes.io/name=xgnginx,app.kubernetes.io/instance=repo" -o jsonpath="{.items[0].metadata.name}") export CONTAINER_PORT=$(kubectl get pod --namespace sre-test $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") echo "Visit http://127.0.0.1:8080 to use your application" kubectl --namespace sre-test port-forward $POD_NAME 8080:$CONTAINER_PORT list 查看release $ helm list --all-namespaces 删除 release $ helm uninstall repo -n sre-test
3 chart 更新发布和案例
3.1 更新发布
- 更新并发布xgngin应用
按照需求更新helm包中的配置文件,笔者更新了Chart.yaml 中的APP Version为1.19.6,同时更新了values.yaml 的image tag,更新后打包,生成新的index.yaml,并cp index.yaml 和 packge 到nginx 的charts目录.
更新package
发布到 helm repohelm package xgnginx Successfully packaged chart and saved it to: /home/xg/soft/k8s/helm/tmpdir/xgnginx-0.1.1.tgz helm repo index xgrepo/ --url http://10.192.155.237/charts #生成index.yaml,此时记录了 xgnginx 的两个版本 cp xgrepo/index.yaml /home/xg/soft/k8s/helm/charts/ cp xgrepo/xgnginx-0.1.1.tgz /home/xg/soft/k8s/helm/charts/
$ helm repo update helm search一下可以发现版本信息已经更新了 $ helm search repo xgnginx --versions NAME CHART VERSION APP VERSION DESCRIPTION xgrepo/xgnginx 0.1.1 1.19.6 A Helm chart for Kubernetes xgrepo/xgnginx 0.1.0 1.16.0 A Helm chart for Kubernetes
- 更新k8s 中的release
$ helm upgrade test-nginx -n sre-test xgrepo/xgnginx Release "test-nginx" has been upgraded. Happy Helming! NAME: test-nginx LAST DEPLOYED: Thu Jun 24 13:41:25 2021 NAMESPACE: sre-test STATUS: deployed REVISION: 2 NOTES: 5. Get the application URL by running these commands: ...... kubectl --namespace sre-test port-forward $POD_NAME 8080:$CONTAINER_PORT
- 发布到第三方公有云helm仓库
有些用户可能将chart更新到阿里云的helm仓库,或者其它云厂商的仓库,此时可以使用helm-push来push应用,其安装方法如下:helm plugin install https://github.com/chartmuseum/helm-push Downloading and installing helm-push v0.9.0 ... https://github.com/chartmuseum/helm-push/releases/download/v0.9.0/helm-push_0.9.0_linux_amd64.tar.gz Installed plugin: push 由于笔者是在本地搭建helm仓库的,因此没有测试该方法,此处给出参考文档: [helm-私有仓库--上传到阿里的私有仓库](https://www.cnblogs.com/huningfei/p/12705114.html)
3.2 helm 案例
发布一个busybox chart
1) 创建busybox
helm create xgbusybox
2)更改配置文件
1-更新: Chart.yaml
$ cat Chart.yaml
apiVersion: v2
name: xgbusybox
description: A Helm chart for Kubernetes
type: application
version: 0.1.0
appVersion: "1.31"
2-更新: values.yaml
$ cat values.yaml
...
image:
repository: busybox
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: "1.31"
command: "sleep infinity"
...
3-更新: templates/deployment.yaml
$ cat templates/deployment.yaml
...
imagePullPolicy: {{ .Values.image.pullPolicy }}
command:
- "/bin/sh"
- "-c"
- "sleep infinity"
...
3)生成package
helm package xgbusybox
4)生成index文件
helm repo index xgrepo/ --url http://10.192.155.237/charts
5)拷贝index和packge到nginx的charts目录
cp xgrepo/* /home/xg/soft/k8s/helm/charts/
6)更新repo
helm repo update
7)确认已经正常发布了xgbusybox chart
$ helm search repo
NAME CHART VERSION APP VERSION DESCRIPTION
xgrepo/xgbusybox 0.1.0 1.31 A Helm chart for Kubernetes
xgrepo/xgnginx 0.1.1 1.19.6 A Helm chart for Kubernetes
8)部署xgbusybox到k8s
helm install xgbusybox xgrepo/xgbusybox --namespace sre-test
在lens 上查看安装的app:
4 常见操作和问题
4.1 常见操作
- 删除helm repo
helm repo remove newrepo
- 添加bitnami repo
helm repo add bitnami https://charts.bitnami.com/bitnami
- 拉取应用的package
helm pull bitnami/mysql 该操作会拉取mysql应用,在当前目录生成一个对应版本的mysql-8.6.3.tgz
- 如果缺少 helm chart app可以在 https://artifacthub.io/ 查找
4.2 常见问题
- 更新镜像版本但不更新chart版本
解决方法:
方法1:更新 values.yaml 中的image.tag 为新tag,如1.2.2
方法2:helm upgrade myrelease repo/foo --set=image.tag=1.2.2
5 说明
helm 官方文档
helm-私有仓库
搭建私有helm仓库及图形界面
Helm User Guide - Helm 用户指南
helm的安装、使用以及自定义Chart
helm-upgrade-with-same-chart-version-but-different-docker-image-tag
Helm仓库汇总
https://artifacthub.io/
更多推荐
已为社区贡献44条内容
所有评论(0)