西安高端网站制作公司哪家好,做本地网站怎么挣钱,做内贸哪个网站找客户,上海百度首页优化搭建私有helm仓库及图形界面
本篇主要介绍私有 helm 仓库 Chartmuseum 及图形界面 Monocular UI /kubeapps 的搭建
helm chart 能够很好的封装和管理我们的 kubernetes 应用#xff0c;可以实现中间件、数据库、公共组件等快速发布。 什么场景下我们需要构建一个私有的helm仓…搭建私有helm仓库及图形界面
本篇主要介绍私有 helm 仓库 Chartmuseum 及图形界面 Monocular UI /kubeapps 的搭建
helm chart 能够很好的封装和管理我们的 kubernetes 应用可以实现中间件、数据库、公共组件等快速发布。 什么场景下我们需要构建一个私有的helm仓库呢
首先我们日常发布中肯定是经常使用到了helm有较多自定义的或者调整过的helm模板或者有多套k8s/ocp 集群要同时基于 helm 进行发布与管理如果想要要更好的管理 charts 历史版本可以使用下面说的 github page 或者 gitlab page
Helm chart对仓库的要求并不高需要你对外提供yaml文件和tar文件的web服务即可。helm2 原本是带了本地仓库功能helm3 移除了这部分将他变成了一个纯粹的应用管理工具。
像 harbor镜像仓库JFrog Artifactory(制品仓库镜像仓库) 都包含了 helm 商店的功能如果同时对镜像仓库和制品管理有需求可以选择上面两款产品都提供免费社区版。
如果不需要上面两者的镜像仓库功能可以使用在线的github 或 gitlabhttps://www.bookstack.cn/read/kubernetes-handbook-201910/practice-create-private-charts-repo.md
也可以是本地私有化部署的 gitlabhttps://my.oschina.net/doctorlzr1988/blog/3044964
又或者是helm 开源得工具 chartmuseumhttps://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 DEBUG1 \-e STORAGElocal \-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 文件放到对应目录下仓库会自动更新 [rootbastion 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
[rootbastion 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 的内容就了解了。 [rootbastion ~]# 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 * * * * [rootbastion ~]# kubectl get cronjob
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
helmui-monocular-sync-scheduled-localrepo 0 * * * * False 0 8m57s 3d
[rootbastion ~]# 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 来源简书 著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。