搭建私有helm仓库及图形界面

搭建私有helm仓库及图形界面

本篇主要介绍私有 helm 仓库 Chartmuseum 及图形界面 Monocular UI /kubeapps 的搭建

helm chart 能够很好的封装和管理我们的 kubernetes 应用,可以实现中间件、数据库、公共组件等快速发布。
什么场景下我们需要构建一个私有的helm仓库呢

  1. 首先我们日常发布中肯定是经常使用到了helm
  2. 有较多自定义的或者调整过的helm模板,或者有多套k8s/ocp 集群要同时基于 helm 进行发布与管理
  3. 如果想要要更好的管理 charts 历史版本,可以使用下面说的 github page 或者 gitlab page

Helm chart对仓库的要求并不高,需要你对外提供yaml文件和tar文件的web服务即可。helm2 原本是带了本地仓库功能,helm3 移除了这部分,将他变成了一个纯粹的应用管理工具。

像 harbor镜像仓库,JFrog Artifactory(制品仓库,镜像仓库) 都包含了 helm 商店的功能,如果同时对镜像仓库和制品管理有需求,可以选择上面两款产品,都提供免费社区版。

如果不需要上面两者的镜像仓库功能,可以使用在线的github 或 gitlab
https://www.bookstack.cn/read/kubernetes-handbook-201910/practice-create-private-charts-repo.md

也可以是本地私有化部署的 gitlab
https://my.oschina.net/doctorlzr1988/blog/3044964

又或者是helm 开源得工具 chartmuseum
https://github.com/helm/chartmuseum

Chartmuseum 除了给我们提供一个类似于web服务器的功能之外,还提供了其他有用的功能,便于日常我们私有仓库的管理。

  • 根据chart文件自动生成index.yaml(无须使用helm repo index手动生成)
  • helm push的插件,可以在helm命令之上实现将chart文件推送到chartmuseum上
  • 相应的tls配置,Basic认证,JWT认证(Bearer token认证)
  • 提供了Restful的api(可以使用curl命令操作)和可以使用的cli命令行工具
  • 提供了各种后端存储的支持(Amazon s3, Google Cloud Storage, 阿里、百度、腾讯,开源对象存储等)
  • 提供了Prometheus的集成,对外提供自己的监控信息。
  • 没有用户的概念,但是基于目录实现了一定程度上的多租户的需求。

Chartmuseum 搭建

直接使用最简单的 docker run 方式,使用local 本地存储方式,通过 -v 映射到宿主机 /opt/charts
更多支持安装方式见官网

 

mkdir /opt/chartsdocker run -d \-p 8080:8080 \-e DEBUG=1 \-e STORAGE=local \-e STORAGE_LOCAL_ROOTDIR=/charts \-v /opt/charts:/charts \chartmuseum/chartmuseum:latest# 使用 curl 测试下接口,没有报错就行,当前仓库内容还是空的
# curl localhost:8080/api/charts
{}

准备 helm 及离线 chart,推送到私有库

给我们的私有仓库准备些chart,可以是自己生成的或者从公共仓库获取

先安装 helm3, 添加源

 

# 添加官方源,网络不好可以试试下面微软的
helm repo add stable https://kubernetes-charts.storage.googleapis.com
helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com# 也可以换成微软的源,速度快,内容和官方同步的 
helm repo add az-stable http://mirror.azure.cn/kubernetes/charts/
helm repo add az-incubator http://mirror.azure.cn/kubernetes/charts-incubator/

 

### 把 charts 文件直接下载到 chartmuseum 指定的本地目录
cd /opt/charts
helm search repo mysql# 将charts 文件下载到本地
helm pull az-stable/mysql
helm pull az-stable/tomcat
...# ls
mysql-1.6.6.tgz  tomcat-0.4.1.tgz

测试仓库接口,能正常返回已有的 helm charts 信息,说明 charts 文件放到对应目录下,仓库会自动更新

 

[root@bastion charts]# curl localhost:8080/api/charts |jq% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100  1833  100  1833    0     0   349k      0 --:--:-- --:--:-- --:--:--  358k
{"mysql": [{"name": "mysql","home": "https://www.mysql.com/","sources": ["https://github.com/kubernetes/charts","https://github.com/docker-library/mysql"],"version": "1.6.6","description": "Fast, reliable, scalable, and easy to use open-source relational database system.","keywords": ["mysql","database","sql"...

也可以使用 helm push 插件上传

 

# 安装 helm push 插件
helm plugin install https://github.com/chartmuseum/helm-push.git# 从官网下载一个 consul
helm search repo consul
helm pull az-stable/consul # 添加本地仓库到 helm repo,看下仓库内容
helm repo add localrepo http://192.168.2.19:8080
helm search repo localrepoNAME                CHART VERSION   APP VERSION DESCRIPTION                                       localrepo/mysql     1.6.6           5.7.30      Fast, reliable, scalable, and easy to use open-...localrepo/tomcat    0.4.1           7.0         Deploy a basic tomcat application server with s...# helm push 推送 postgres
helm push consul-7.1.3.tgz localrepo
如果出现报错,权限问题 "Error: 500: open /charts/consul-7.1.3.tgz: permission denied
Error: plugin "push" exited with error" 
直接给本地目录权限最大, 再次push  chmod 777 -R /opt/charts/# 更新本地 repo,查看仓库内容,可以看到新上传的 postgres
helm repo update 
[root@bastion charts]# helm search repo localrepoNAME                    CHART VERSION   APP VERSION DESCRIPTION                                       localrepo/consul      7.1.3         1.8.0       Highly available and distributed service discov...localrepo/mysql         1.6.6           5.7.30      Fast, reliable, scalable, and easy to use open-...localrepo/tomcat        0.4.1           7.0         Deploy a basic tomcat application server with s...

安装 ingress controller

Monocular UI 必须依赖ingress,如果环境里没有,先安装一个

 

helm search repo ingress
helm install ng-ingress az-stable/nginx-ingress 

安装Monocular UI 界面,管理helm charts

官方站点 https://github.com/helm/monocular

通过 helm 方式来安装

 

helm repo add monocular https://helm.github.io/monocular
# helm install monocular/monocular# 下载chart,把mongodb 存储改成持久化
helm pull monocular/monocular
tar -zxvf monocular-1.4.15.tgz 
vim values.yaml 
在 repos 注释自带的stable 和incubator 4行,添加 localrepo, 地址是 http://192.168.2.19:8080
修改 mongodb.persistence.enabled 为 true# 安装
helm install helmui .

访问通过 ingress controller 的nodeport, 不是直接通过 monocular 的 nodeport,可以看下ingress 的内容就了解了。

 

[root@bastion ~]# kubectl get svc  |grep ingress
ng-ingress-nginx-ingress-controller        LoadBalancer   172.30.241.122   <pending>                              80:31537/TCP,443:30814/TCP   4h53m
ng-ingress-nginx-ingress-default-backend   ClusterIP      172.30.91.91     <none>                                 80/TCP                       4h53m

通过浏览器访问 k8s节点ip:31537
标记 deprecated: true 的charts,即为弃用的,不会展示在页面

monocular-ui-1.png

 

monocular-ui-2.png

 

默认是1小时同步一次repo,可以在helm install 的时候修改 values.yaml,比如这样,5分钟同步一次

 

    - name: incubatorurl: https://kubernetes-charts-incubator.storage.googleapis.comschedule: "*/5 * * * *"

或者部署之后修改 cronjob,修改 schedule: "*/5 * * * *"

 

[root@bastion ~]# kubectl get cronjob
NAME                                        SCHEDULE    SUSPEND   ACTIVE   LAST SCHEDULE   AGE
helmui-monocular-sync-scheduled-localrepo   0 * * * *   False     0        8m57s           3d
[root@bastion ~]# kubectl edit cronjob helmui-monocular-sync-scheduled-localrepo 

另一款界面管理工具 kubeapps

kubeapps 和 monocular 类似,都是bitnami 公司维护的,多了已发布helm 应用的查看,以及可以通过页面添加 repo,功能比上面的多,建议用这个。
使用方法见官网
https://github.com/kubeapps/kubeapps

注意访问的时候是使用 kubeapps 这个svc 的nodeport, 不依赖于ingress

查看通过 helm 发布的应用,支持按照 namespace 区分

kubeapps-applications.png

 

这块和 monocular 一样

kubeapps-catalog.png

 

可以通过页面添加仓库

 

kubeapps-repositories.png

更多k8s 和ocp相关文档见github



作者:老菜_misa
链接:https://www.jianshu.com/p/18478cf7a37f
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神啊,6小时30分钟,完成想要的所有Lync测试

神啊 !记住这个日子 !从未想到&#xff0c;6小时30分钟&#xff0c;能做出这么多东西&#xff1a;从&#xff1a;2013-06-28---20&#xff1a;00到2013-06-29-----2&#xff1a;30 (辛苦&#xff0c;也是值得&#xff0c;客户是上帝&#xff0c;公司也好&#xff0c;个人也罢&a…

SubSonic框架使用图解

简介&#xff1a;SubSonic框架是一个优秀的、开源的ORM映射框架&#xff0c;同时提供符合自身需要的代码生成器。 官方下载地址&#xff1a;http://www.subsonic.org/pages/download.jsp 明白了SubSonic是什么之后&#xff0c;下面一起来看SubSonic的使用吧。 开发版本&#…

用户代理de疑惑

2019独角兽企业重金招聘Python工程师标准>>> 在计算机科学中&#xff0c;用户代理&#xff08;英语&#xff1a;User Agent&#xff09;指的是代表使用者行为的软件&#xff08;软件代理程序&#xff09;所提供的对自己的一个标识符。例如&#xff0c;一个电子邮件阅…

问题“The connection to the server....:6443 was refused - did you specify the right host or port?”的处理!

问题“The connection to the server <master>:6443 was refused - did you specify the right host or port?”的处理&#xff01; 一、故障产生 在不关闭kubernets相关服务的情况下&#xff0c;对kubernets的master节点进行重启。&#xff08;模拟服务器的异常掉电&a…

iBatis for Net 代码生成器(CodeHelper)附下载地址(已经升级为V 1.1)

CodeHelper是一款可以自己定义模板和生成内容的代码生成器&#xff0c;目前只支持MsSql数据库&#xff0c;这款代码生成器的初衷也只是为了生成MyBatis.net框架的配置文件而写的一个轻量级的代码生成器。CodeHelper下载文件包介绍&#xff1a;Template\... 存放模板文件夹&…

在Access中执行SQL语句

Access在小型系统开发中等到了广泛使用。虽然Access提供了可视化的操作方法&#xff0c;但许多开发人员还是喜欢直接用SQL语句操作数据表。如何在Access中打开SQL视图&#xff0c;对于初次使用Access的程序员可得费点时间呢。 1、ACESS2007 &#xff08;1&#xff09;点击“创建…

K8S+Helm 安装 Jupyterhub

准备配置文件 生成随机数 openssl rand -hex 32 # 8fc2826e9ce6930ec26c9fd541c0620b448a947357edbdf9647516af16bbc798配置config.yaml如下&#xff0c;token是上一步生成 proxy:secretToken: "8fc2826e9ce6930ec26c9fd541c0620b448a947357edbdf9647516af16bbc798&quo…

iBatis for net 框架使用

简介&#xff1a;ibatis 一词来源于“internet”和“abatis”的组合&#xff0c;是一个由Clinton Begin在2001年发起的开放源代码项目&#xff0c;到后面发展的版本叫MyBatis但都是指的同一个东西。最初侧重于密码软件的开发&#xff0c;现在是一个基于Java的持久层框架&#x…

php 图片后缀,PHP如何实现图片无后缀

在偶然间网站开发&#xff0c;实现网页内容抓取的时候&#xff0c;发现有些图片居然没有后缀。然后怀着踽踽独行的心态&#xff0c;去尝试了下这个以前没有遇见过的“重大发现”&#xff1a;当完成测试后&#xff0c;发现其原理&#xff0c;也是真心简单&#xff0c;其实也就是…

Office Web Apps Server 2013与PDF(一)

好吧……这个消息有点旧&#xff0c;迟了将近4个月。 Office Web Apps是微软各大服务产品系列中的一个基础服务&#xff0c;可以为SharePoint 2013、Exchange 2013、Lync 2013提供企业内文档的在线预览和编辑功能&#xff1b;同时它也是一个基础的互联网服务&#xff0c;为诸如…

nifi 实现数据库到数据库之间数据同步

数据同步 界面如下&#xff1a; 具体流程&#xff1a; 1、使用ExecuteSQL连接mysql数据库&#xff0c;通过写sql查询所需要的数据 2、nifi默认查出来的数据为Avro格式&#xff0c;所以需要ConvertAvroToJSON把Avro格式转化为json格式的数据 3、使用ConvertJSONToSQL把json数据转…

php 文件 后缀,php如何修改文件后缀名

php修改文件后缀名的方法&#xff1a;首先创建PHP文件&#xff1b;然后定义一个“changeTypeName”方法&#xff1b;接着获取文件绝对路径&#xff1b;最后通过“rename($fileRealPath, $compressCssFileRealPath);”修改即可。php 改变文件目录下文件的后缀名changeTypeName(&…

windows自定义快速启动(运行)命令

自定义运行&#xff08;windows键R&#xff09;里面命令&#xff0c;启动设置的程序&#xff0c;如图&#xff1a;它的设置方法有两种&#xff1a; 第一种设置方法&#xff1a; 第1步&#xff1a;在任意地方创建一个文件夹&#xff08;建议在D盘根目录创建&#xff09;&#xf…

python RSA加密、解密、签名

python中用于RSA加解密的库有好久个&#xff0c;本文主要讲解rsa、M2Crypto、Crypto这三个库对于RSA加密、解密、签名、验签的知识点。 知识基础 加密是为了保证传输内容隐私&#xff0c;签名是为了保证消息真实性。 服务器存私钥&#xff0c;客户端存公钥。&#xff08;服务…

DataGridview动态添加列

1.获取数据源&#xff08;select * from table名称&#xff09; 2.动态绑定数据源 1 private void GetTableInfo(DataTable dt)2 {3 listBh new List<BH_DICTInfo>();4 foreach (DataRow dr in dt.Rows)5 {6 …

C# 控制台应用程序输出颜色字体[更正版]

首先感谢院子里的“yanxinchen”&#xff0c;之前的方法是通过c#调用系统api实现的&#xff0c;相比之下我的有点画蛇添足了&#xff0c;哈哈。 最佳解决方案的代码&#xff1a; static void Main(string[] args){ Console.ForegroundColor ConsoleColor.Green; Consol…

MXNet结合kubeflow进行分布式训练

GPU集群配置MXNetCUDA 为方便控制集群&#xff0c;写了脚本cmd2all.sh #!/bin/bash if [ $# -lt 3 ]; thenecho "usage: $0 [type cmds hosts]"echo "for example: ./cmd2all.sh \"cmds\" \"touch t1.txt\" \"gpu1 gpu2\""…

基于Opencv的水位识别,液面识别、高度识别

Update 代码已经上传到github上了&#xff0c;可以点这里 Cutting 一直说这要整理一下Computer Vision课程的大作业&#xff0c;拖了好久。这两天忙着写一个订单处理的第三方库&#xff0c;陷入了僵局&#xff0c;所以换个口味&#xff0c;把大作业整理一下。 Requirement W…

Openshift3.9部署手册

说明&#xff1a;本文主要介绍通过Ansible来部署Openshift 3.9 一、准备 系统准备 节点类型说明Masters 物理主机或者虚拟机 系统&#xff1a;Fedora 21, CentOS 7.3, 7.4或者7.5 最少4vCPU 最少16GB内存 /var/最少40GB空间 /usr/local/bin最少1GB空间 容器临时目录最少1GB空…

Solr入门——安装

为什么80%的码农都做不了架构师&#xff1f;>>> Solr网址http://lucene.apache.org/solr/ OSC地址&#xff1a;http://www.oschina.net/p/solr 下载地址&#xff1a;http://www.apache.org/dyn/closer.cgi/lucene/solr/4.3.1 解压 1、拷贝 solr-4.3.1/dist/…