chartmuseum charts仓库

news/2024/11/23 23:02:00/

使用helm管理chart包,需要三个部门协作完成,都有哪三个部门呢?
1)  仓库,chartmuseum,  作为chart的存储仓库,一方面提供存储,一方面对外提供上传和下载, 其也包含两部分
              服务器: 真正提供服务的;
              客户端/命令行: 用来操作和设置服务器;
2)helm-push,专门用作上传chart包到仓库中
3)  helm, 一方面可以访问仓库并从仓库中下载chart包,另一方面可以与自己的实际服务器tiller交互渲染chart包

安装

chartmuseum/ui 官方 https://github.com/chartmuseum/ui 推荐安装方式如下

git clone https://github.com/chartmuseum/ui.git

 根据需要修改 docker-compose.yml 文件

[root@localhost ui]# cat docker-compose.yaml 
version: '2.0'
services:ui:#build: ./image: harbor.jettech.com/library/chartmuseumui:latestenvironment:CHART_MUSEUM_URL: http://chartmuseum:8080ports:- 3000:8080chartmuseum:image: harbor.jettech.com/library/chartmuseum:v0.7.1ports:- 8080:8080volumes:- /service/server/heml/charts/repos:/chartsenvironment:PORT: 8080DEBUG: 1STORAGE: localSTORAGE_LOCAL_ROOTDIR: /charts

该配置文件主要信息如下:

构建了两个服务:ui 和 chartmuseum
ui 使用 build ./ 构建(docker build ./ ),即通过当前目录下的 Dockerfile 构建
ui 配置的后端接口路径是 http://chartmuseum:8080,其中 chartmuseum 是后台服务名,可以用IP代替
ui 启动在 3000 端口
chartmuseum 使用了 chartmuseum/chartmuseum:v0.7.1 版本
chartmuseum 暴露在 8080 端口
chartmuseum 将 chart 保存在本地 /service/server/heml/charts/repos:/charts 下。
chartmuseum 采用本地存储(local),存储路径是 /charts

启动

根据Docker 官方编排工具 docker-compose ,在 docker-compose.yaml 运行如下命令即可

docker-compose up 

有错误的解决方案:

解决方案
分析错误日志,go.mod 没有找到,导致 go get 命令不能运行。其实是没有启用 go mod 。因此需要 在 Dockerfile 添加如下命令:

# set Go env RUN go env -w GO111MODULE=auto

[root@localhost ui]# cat Dockerfile 
#
# Stage 1
#
#FROM library/golang:1 as builder
FROM harbor.jettech.com/library/golang:1 as builder# set Go env
RUN go env -w GO111MODULE=auto# Godep for vendoring
RUN go get github.com/tools/godep# Recompile the standard library without CGO
RUN CGO_ENABLED=0 go install -a stdENV APP_DIR $GOPATH/src/github.com/chartmuseum/ui
RUN mkdir -p $APP_DIR
ADD . $APP_DIR# Compile the binary and statically link
RUN cd $APP_DIR && \GO111MODULE=auto CGO_ENABLED=0 godep go build -ldflags '-w -s' -o /chartmuseum-ui && \cp -r views/ /views && \cp -r static/ /static#
# Stage 2
#
FROM harbor.jettech.com/library/alpine:3.8
RUN apk add --no-cache curl cifs-utils ca-certificates \&& adduser -D -u 1000 chartmuseum
COPY --from=builder /chartmuseum-ui /chartmuseum-ui
COPY --from=builder /views /views
COPY --from=builder /static /static
USER 1000
ENTRYPOINT ["/chartmuseum-ui"]
[root@localhost ui]# docker ps -a
CONTAINER ID   IMAGE                                                     COMMAND                  CREATED          STATUS                      PORTS                                                                                        NAMES
97155833371a   harbor.jettech.com/library/chartmuseum:v0.7.1             "/chartmuseum"           59 minutes ago   Up 59 minutes               0.0.0.0:8080->8080/tcp, :::8080->8080/tcp                                                    ui_chartmuseum_1
c11ba3126dae   harbor.jettech.com/library/chartmuseumui:latest           "/chartmuseum-ui"        59 minutes ago   Up 59 minutes               0.0.0.0:3000->8080/tcp, :::3000->8080/tcp 

  • 向本地存储中添加chart包,创建索引,真正作为一个chart仓库对外提供服务

 (1). 进入到存放chart包的路径下,可以手动放一些chart包,也可以通过某个helm-push工具(后面会说)
         # cd  /service/server/heml/charts/repos/
   (2). 添加或删除chart包---
   (3). 使用chartmuseum命令工具生成索引文件,之后也可以使用该命令重新生成一个索引文件到指定目录下,
        helm客户端在访问仓库的时候就是使用改文件得到仓库中chart列表
       #chartmuseum 工具可以在镜像中copy出来

[root@localhost ui]# docker cp 97155833371a:/chartmuseum chartmuseum
 chartmuseum --gen-index --storage="local" --storage-local-rootdir=“/service/server/heml/charts/repos/"

加一个仓库:注意用的是后端8080这个不是前段3000 

[root@localhost helm]# helm repo add chartmuseum http://172.16.10.1:8080

原理:

chart仓库(chartmuseum)的工作原理
存储库索引文件称为index.yaml, 是根据storage中的chart包动态生成的,如果你想使用自己创建该文件,则自动生成的将被忽略;
注意:  storage中的chart包必须是.tgz格式,否则storage backend不识别,即不会生成到index.yaml中。

chartmuseum缺省会在内存类型的cache中存储index.yaml文件的内容,也可以通过设置将其offload到外部cache中。

一旦有index的请求过来,storage backend就会扫描当前storage中所有的chart包,然后和自己cache进行比对然后刷新并将内容返回给请求者。
当然,你也可以通过设置缓存间隔来周期性刷新index。他会基于storage中的包动态的更新。

 --gen-index 这个命令参数可以扫描当前storage中的chart包,然后生成index.yaml并将其内容打印到标准输出上.

一旦index 文件重新生成,chartmuseum会在storage中保存一个状态文件称为 index-cache.yaml,用于cache优化。这个文件只在内部使用,但可以用于向simple storage迁移使用。

当有helm客户端执行 helm repo add chartmuseum http://localhost:8080 或者  helm repo update 时,实际都是向仓库发出了GET /index.yaml 请求
所以当你手动 add/remove 一个 .tgz 包  from storage时,  他会直接反映给 GET /index.yaml 操作中。

【helm客户端中仓库信息的工作原理
首先,一旦为helm客户端添加一个chart仓库, 则会在其本地创建一个该仓库chart包目录的索引文件,缺省在:/root/.cache/helm/repository  目录下~
      一个xxx-index.yaml文件代表一个仓库,官方缺省仓库对应就是index.yaml文件

然后,对于download(pull命令)下来的chart包(.tgz格式),缺省也会放置在/root/.cache/helm/repository/目录下

chart仓库之创建-入库-使用(helm,helm-push,chartmuseum) - 爱码网

chartmuseum - WorldLink资源网

GitHub - chartmuseum/helm-push: Helm plugin to push chart package to ChartMuseum

第一种上传方式

helm push插件安装:

 helm plugin install https://github.com/chartmuseum/helm-push

helm repo update的时候index-cache.yaml文件会更新,扫描下面必须是tgz格式的包更新到index-cache.yaml文件中。

[root@localhost repos]# ls /service/server/heml/charts/repos/
index-cache.yaml  jettopro-eureka-0.1.0.tgz  jettopro-eureka-0.2.0.tgz

此时search就可以看到了

[root@localhost helm]# helm search repo jettopro-eureka 
NAME                       	CHART VERSION	APP VERSION	DESCRIPTION                
chartmuseum/jettopro-eureka	0.2.0        	1.16.0     	A Helm chart for Kubernetes

第二种上传方式API 需要后端chartmuseum端口开放出来

ChartMuseum的安装教程和基本配置_chartmuseum 安装_Li-boss的博客-CSDN博客

curl -X GET "chart=@mychart-0.1.0.tgz" http://localhost:8089/api/org1/repoa/charts 

Helm | Chart仓库指南 

helm package docs/examples/alpine/
$ mkdir fantastic-charts
$ mv alpine-0.1.0.tgz fantastic-charts/
$ helm repo index fantastic-charts --url https://fantastic-charts.storage.googleapis.com

最后一条命令会用刚才创建的本地路径和远程仓库url构建一个index.yaml文件放在给定的目录路径中。

现在你可以使用同步工具或手动上传chart和index文件到chart仓库中。如果使用的是Google Cloud Storage,使用gsutil客户端检查 示范工作流。针对于GitHub,你可以简单地将chart放在合适的目标分支中。

添加一个新的chart到已有仓库中

每次你想在仓库中添加一个新的chart时,你必须重新生成index。helm repo index命令会完全无痕重建index.yaml文件。只包括在本地找到的chart。

不过你可以使用--merge参数增量添加新的chart到现有index.yaml文件中(使用类似GCS的远程仓库时很有用)。执行 helm repo index --help了解更多。

确保修订过的index.yaml文件和chart都上传了,如果生成了源文件,也要上传。

与别人分享你的chart

准备好分享你的chart时,只需要告诉别人你的仓库地址就可以了。

他们会通过helm repo add [NAME] [URL]命令将仓库添加到他们的客户端,并使用想引用仓库的任何名称。

helm repo add fantastic-charts https://fantastic-charts.storage.googleapis.com
$ helm repo list

如果chart支持HTTP的基础验证,你也需要提供用户名和密码:

 helm repo add fantastic-charts https://fantastic-charts.storage.googleapis.com --username my-username --password my-password
$ helm repo list

注意: 如果不存在有效的index.yaml就无法添加仓库

注意: 如果你的helm仓库使用了类似于自签名的证书,为了跳过CA认证,可以使用 helm repo add --insecure-skip-tls-verify ...

然后,你的用户就可以通过你的chart进行搜索。更新了仓库之后,他们可以使用helm repo update命令获取最新的chart信息。

在内部 helm repo add 和 helm repo update 命令会检索index.yaml文件并将其存储在 $XDG_CACHE_HOME/helm/repository/cache/目录中。这里是helm search方法查找chart信息的位置。

总结
本文介绍了 Chartmuseum Web 客户端软件 Chartmuseum/Ui 及其安装。其中安装方式采用了docker-compose。且 ui 是使用 Dockerfile 编译的最新版本,chartmuseum 采用的是 chartmuseum/chartmuseum:v0.7.1 。

实际使用时,我们可以将 ui 和 chartmuseum 分别部署,且选用不同的可兼容版本。

假如我们临时编译一个 charmuseum-ui ,并采用 ghcr.io/helm/chartmuseum 最新版本搭建一个环境,可以通过如下命令完成:
 

# 编译 chartmuseum-ui(修改后的Dockferfile所在目录执行)
docker build .
# 启动 chartmuseum 后端 
docker run --name chartmuseum -d -p 8080:8080  ghcr.io/helm/chartmuseum
# 启动前端 chartmuseum-ui
docker run --name chartmuseum-ui -d -p 3000:8080 -e CHART_MUSEUM_URL=http://localhost:8080 chartmuseum-ui


http://www.ppmy.cn/news/283181.html

相关文章

火热报名中 | KCD 北京精彩抢“鲜”看

​ 仲夏已至,风云再起,Kubernetes Community Days 北京站英雄帖一经发出,云原生的各路英雄豪杰纷纷响应。经典招式的升级亮相,最新技巧的惊喜面世,且看各路门派京城聚首,掀起一场云原生的武林论道。各大议…

基于 Ray 的大规模离线推理

本文整理自字节跳动基础架构资深研发工程师王万兴在火山引擎开发者社区 Meetup 中的分享。大模型离线推理,是指在具有数十亿或数千亿参数的大规模模型上进行分布式推理的过程。相较于常规模型推理,在模型切分、数据处理和数据流、提升 GPU 利用率方面面临…

基于Alexnet网络实现猫狗数据集分类(Keras框架)

目录 1、作者介绍2、Alexnet网络2.1 网络介绍2.2 AlexNet网络的主要特点 3、基于Alexnet网络实现猫狗数据集分类3.1 猫狗大战数据集3.2 数据集处理3.3 准备工作3.4 训练过程3.4 对比实验3.4.1 HALCON平台下的Alexnet实验3.4.2 HALCON平台下的Resnet-50对比实验3.4.3 HALCON平台…

内存卡格式化了怎么办?能恢复吗?

内存卡格式化后怎么办?数据还能恢复吗?内存卡格式化后所有数据都会清空,这是玩电脑的各位都心知肚明的,内存卡不小心格式化了怎么办?其实大部分人都是不小心才导致的格式化,当然也不代表没有其他因素导致&a…

内存卡删除的视频能恢复吗?四个步骤

随着网络技术的发展,视频在人们的生活中越来越重要,而日常生活中误删视频的现象时有发生。相信不少小伙伴们在电脑里都有一些重要的视频文件,或存放一些喜欢看影视剧等娱乐视频资源,或存放一些用户的工作素材文件。碰到这样的事&a…

内存卡损坏怎么修复?分享实际经验

内存卡损坏怎么修复? 我们在数码相机、手机等设备中常用到内存卡,它可以帮助我们存放很多数据,当然内存卡在使用过程中也不可避免的发生一些损坏现象,下面将给大家分享下内存卡修复的方法,希望能够给大家提供一些参考。…

相机储存卡格式化后能恢复数据吗?相机内存卡格式化了还能恢复吗

相机储存卡格式化后能恢复数据吗?相机内存卡中存储大量数据,包括照片、视频、音乐和文档,有时人们可能会由于不小心删除或格式化而丢失数据。相机内存卡格式化了还能恢复吗?相机内存卡格式化恢复怎么做? 步骤 1. 通过…

相机内存卡照片恢复方法

相机内存卡数据丢失需要恢复的话,一定要把内存卡从相机取下来,然后用读卡器插到电脑上。相机内存卡数据恢复方法再用数据恢复软件对这个内存卡进行扫描恢复。工具/软件:光明数据恢复软件 步骤1:程序运行后,右击需要恢…