安装
下载安装包
curl -LO https://s3.amazonaws.com/chartmuseum/release/latest/bin/linux/amd64/chartmuseum chmod +x chartmuseum cp chartmuseum /usr/local/bin
systemd方式启动chartmuseum
service 文件配置
[root@t32 helm]# cat /etc/systemd/system/chartmuseum.service [Unit] Description=chartmuseum Requires=network-online.target After=network-online.target [Service] EnvironmentFile=/etc/chartmuseum/chartmuseum.config User=root Restart=allways ExecStart=/usr/local/bin/chartmuseum $ARGS ExecStop=/usr/local/bin/chartmuseum step-down [Install] WantedBy=multi-user.target
EnvironmentFile的/etc/chartmuseum/chartmuseum.config配置
[root@t32 helm]# cat /etc/chartmuseum/chartmuseum.config ARGS=\ --port=9090 \ --storage="local" \ --storage-local-rootdir="/var/lib/chartmuseum/chartstorage" \ --log-json \ --basic-auth-user=admin \ --basic-auth-pass=admin
--port: chartmuseum服务监听端口 --storage: local表示使用本地存储 --storage-local-rootdir: 本地存储点路径,helm push chart的存储路径 --log-json: 日志显示为json格式 --basic-auth-user: 用户名(使用基本的认证方式,用户名+密码,使用证书方式参照点我) --asic-auth-pass: 密码 (chartmuseum服务起来后,后续给helm添加repo时需要加上--username xxx --password ***)
启动服务
systemctl start chartmuseum systemctl status chaetmuseum
添加chartmuseum 到helm repo
helm repo add chartmuseum http://192.168.4.32:9090 --username admin --password admin
chartmuseum和curl的使用
上传
curl -u admin:admin --data-binary "@demo-0.3.0.tgz" http://192.168.4.32:9090/api/charts
下载
curl -O -u admin:admin http://192.168.4.32:9090/charts/demo-0.1.0.tgz
chartmuseum其他API
GET /index.yaml
得到chartmuseum的全部charts
[root@t32 demo]# curl http://192.168.4.32:9090/index.yaml -u admin:admin apiVersion: v1 entries: demo: - apiVersion: v1 appVersion: "1.0" created: "2019-09-25T21:05:34.55346099+08:00" description: A Helm chart for Kubernetes digest: 98220d606e571949c29175e51f384d75f38e306d5ad7ccf0f882a61c4183a983 name: demo urls: - charts/demo-0.3.0.tgz version: 0.3.0 - apiVersion: v1 appVersion: "1.0" created: "2019-09-25T19:00:27.301961076+08:00" description: A Helm chart for Kubernetes digest: fa496288ee05d446699f26e82bba4d6eefd6bcb87e47b78fdd6ce3e682319142 name: demo urls: - charts/demo-0.2.0.tgz version: 0.2.0 - apiVersion: v1 appVersion: "1.0" created: "2019-09-25T18:54:32.406748864+08:00" description: A Helm chart for Kubernetes digest: df107a069a1a5459800cc0ed2017c59efd6bf01701b1a96c89e3d9f3ed229e64 name: demo urls: - charts/demo-0.1.0.tgz version: 0.1.0 generated: "2019-09-25T21:06:00+08:00" serverInfo: {}
GET /charts/demo-0.2.0.tgz
下载charts中的demo
[root@t32 demo]# curl -O http://192.168.4.32:9090/charts/demo-0.2.0.tgz -u admin:admin % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 2564 0 2564 0 0 605k 0 --:--:-- --:--:-- --:--:-- 834k
POST /api/charts
上传一个新的chart版本
[root@t32 demo]# curl -X POST --data-binary '@demo-0.3.0.tgz' http://192.168.4.32:9090/api/charts -u admin:admin {"saved":true}
DELETE /api/charts/<name>/<version>
删除一个chart版本
[root@t32 demo]# curl -s -X DELETE http://192.168.4.32:9090/api/charts/demo/0.3.0 -u admin:admin | jq { "deleted": true }
GET /api/charts
列出所有的charts
[root@t32 demo]# curl -s http://192.168.4.32:9090/api/charts -u admin:admin | jq { "demo": [ { "name": "demo", "version": "0.3.0", "description": "A Helm chart for Kubernetes", "apiVersion": "v1", "appVersion": "1.0", "urls": [ "charts/demo-0.3.0.tgz" ], "created": "2019-09-25T21:05:34.55346099+08:00", "digest": "98220d606e571949c29175e51f384d75f38e306d5ad7ccf0f882a61c4183a983" }, { "name": "demo", "version": "0.2.0", "description": "A Helm chart for Kubernetes", "apiVersion": "v1", "appVersion": "1.0", "urls": [ "charts/demo-0.2.0.tgz" ], "created": "2019-09-25T19:00:27.301961076+08:00", "digest": "fa496288ee05d446699f26e82bba4d6eefd6bcb87e47b78fdd6ce3e682319142" }, { "name": "demo", "version": "0.1.0", "description": "A Helm chart for Kubernetes", "apiVersion": "v1", "appVersion": "1.0", "urls": [ "charts/demo-0.1.0.tgz" ], "created": "2019-09-25T18:54:32.406748864+08:00", "digest": "df107a069a1a5459800cc0ed2017c59efd6bf01701b1a96c89e3d9f3ed229e64" } ] }
GET /api/chatts/<name>
列出chart的所有版本
[root@t32 demo]# curl -s http://192.168.4.32:9090/api/charts/demo -u admin:admin | jq [ { "name": "demo", "version": "0.3.0", "description": "A Helm chart for Kubernetes", "apiVersion": "v1", "appVersion": "1.0", "urls": [ "charts/demo-0.3.0.tgz" ], "created": "2019-09-25T21:05:34.55346099+08:00", "digest": "98220d606e571949c29175e51f384d75f38e306d5ad7ccf0f882a61c4183a983" }, { "name": "demo", "version": "0.2.0", "description": "A Helm chart for Kubernetes", "apiVersion": "v1", "appVersion": "1.0", "urls": [ "charts/demo-0.2.0.tgz" ], "created": "2019-09-25T19:00:27.301961076+08:00", "digest": "fa496288ee05d446699f26e82bba4d6eefd6bcb87e47b78fdd6ce3e682319142" }, { "name": "demo", "version": "0.1.0", "description": "A Helm chart for Kubernetes", "apiVersion": "v1", "appVersion": "1.0", "urls": [ "charts/demo-0.1.0.tgz" ], "created": "2019-09-25T18:54:32.406748864+08:00", "digest": "df107a069a1a5459800cc0ed2017c59efd6bf01701b1a96c89e3d9f3ed229e64" } ]
GET /api/charts/<name>/<version>
对一个chart版本的描述
[root@t32 demo]# curl -s http://192.168.4.32:9090/api/charts/demo/0.3.0 -u admin:admin | jq { "name": "demo", "version": "0.3.0", "description": "A Helm chart for Kubernetes", "apiVersion": "v1", "appVersion": "1.0", "urls": [ "charts/demo-0.3.0.tgz" ], "created": "2019-09-25T21:05:34.55346099+08:00", "digest": "98220d606e571949c29175e51f384d75f38e306d5ad7ccf0f882a61c4183a983" }
GET /
HTML welcome page
[root@t32 demo]# curl http://192.168.4.32:9090/health {"healthy":true}[root@t32 demo]# curl http://192.168.4.32:9090/ {"error":"unauthorized"}[root@t32 demo]# curl http://192.168.4.32:9090/ -u admin:admin <!DOCTYPE html> <html> <head> <title>Welcome to ChartMuseum!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to ChartMuseum!</h1> <p>If you see this page, the ChartMuseum web server is successfully installed and working.</p> <p>For online documentation and support please refer to the <a href="https://github.com/helm/chartmuseum">GitHub project</a>.<br/> <p><em>Thank you for using ChartMuseum.</em></p> </body> </html>
GET /health
return 200 OK
[root@t32 demo]# curl http://192.168.4.32:9090/health {"healthy":true}
来源:https://www.cnblogs.com/zhangjxblog/p/12168344.html