[转帖]Helm 3 使用 harbor 作为仓库存储 charts
Helm 3 使用 harbor 作为仓库存储 charts
https://www.cnblogs.com/innerpeacez/p/11252198.html 之前需要 使用tiller 现在貌似不需要了 但是需要安装harbor 技术在不停的发展, 同事已经用脚本自动化部署k8s集群, 以及使用helm部署分su的应用了.
简介
本文讲述的是调教 Helm 3 和 harbor 1.6+ 的经验,从 helm2 更新到 helm 3 并且将 charts 推送到 harbor 中进行存储,移除了原先的 helm serve,在讲述怎么操作之前先来看一下Helm 3 和 Harbor 1.6+ 的新特性。
Helm 3 新特性
- 移除了 Tiller
- 不同的 namespace 可以使用相同的 Release Name
- 简化模板对象
.Capabilities - 使用
JSONSchema验证 charts 的 Values - 将
requirements.yaml合并到Chart.yaml中 - helm install 时需要指定 Release Name,开启自动生成需要
--generate-name参数 - 支持 push 到远端 registry (如:harbor)
- 移除 helm serve
- 命令行变化(将原先的命令保留为别名Aliases)
helm delete-->helm uninstallhelm inspect->helm showhelm fetch->helm pull
- go 导入路径改变
k8s.io/helm-->helm.sh/helm
具体新特性可以参考Helm 3 新特性,或者参考Helm 官方文档
Harbor v1.6.0 新特性
- 支持存储 helm charts
- ...
这里没什么好说的,想要了解更多关于Harbor的,可以参考官方Github
调教开始
在了解了以上新的特性之后,让我着手来操作吧
环境
- kubernetes 1.10+
- helm 3
- harbor 1.6+
调教步骤
- 确保kubernetes环境可用
- 下载并初始化 helm 3
- 安装 harbor 1.6+
- 添加 harbor 中的 chartrepo 到 helm 3 中
- 安装使用 helm-push 插件
1.确保kubernetes环境可用
这里就不多说 kubernetes 环境的具体搭建过程了,搭建步骤随处可见。
2.下载并初始化 helm 3
首先执行一下命令,下载并解压安装包
wget https://get.helm.sh/helm-v2.14.2-linux-amd64.tar.gz
tar zxvf helm-v2.14.2-linux-amd64.tar.gz
cd linux-amd64
cp helm /usr/local/bin
解压之后,你如果使用过helm 2 你会发现里面tiller的二进制文件不见了,前文的新特性中已经说了,helm 3 已经移除了 tiller
接下来初始化 helm
helm init

默认添加官方 repo stable https://kubernetes-charts.storage.googleapis.com
3.安装 harbor 1.6+
这里我使用的是 harbor 官方提供的 charts repo,好奇心驱使我打开了这个网站 https://helm.goharbor.io/

这熟悉的界面让我严重怀疑是使用的 helm serve 启的 repo(滑稽脸)
添加harbor repo
helm repo add goharbor https://helm.goharbor.io
这个 repo 只有一个charts harbor ,对应的 harbor 版本为1.8.1
在安装之前我们需要配置一下 kube config context
查看当前的context
kubectl config current-context
设置 context 指定对应的 namespace ,不指定使用的是 default
kubectl config set-context <current-context> --namespace test
这里是因为,helm 3 开始helm 3 的执行权限和kubectl config 的权限是一致的,通过kubectl config的方式来控制helm 3 的执行权限。
按时安装harbor ,这里为了简化测试操作,我关闭了数据卷的挂载并使用的是 NodePort 方式进行访问。
helm -n test install harbor goharbor/harbor --set persistence.enabled=false --set expose.type=nodePort --set expose.tls.enabled=false --set externalURL=http://192.168.10.196:30002
参数说明:
- persistence.enabled=false 关闭存储,为了方便操作,真实使用时需要挂在存储
- expose.type=nodePort 使用 NodePort 访问
- expose.tls.enabled=false 关闭tls
- externalURL=http://192.168.10.196:30002 设置登录 harbor 的外部链接
出现以下返回,就证明已经开始安装了
NAME: harbor
LAST DEPLOYED: 2019-07-23 11:00:38.525597536 +0800 CST m=+0.690703892
NAMESPACE: test
STATUS: deployed
NOTES:
Please wait for several minutes for Harbor deployment to complete.
Then you should be able to visit the Harbor portal at https://core.harbor.domain.
For more details, please visit https://github.com/goharbor/harbor.
4.添加 harbor 中的 chartrepo 到 helm 3 中
harbor 装好之后,我们访问 http://192.168.10.196:30002 进行登录 harbor, harbor 的默认账号密码是 admin/Harbor12345

新建一个chart repo

创建一个 test 用户

添加 repo 到 helm 中
helm repo add test http://192.168.10.76:30002/chartrepo/chart_repo
5.安装使用 helm-push 插件
helm plugin install https://github.com/chartmuseum/helm-push
这里最好本地配置一下 github 的 dns 地址,不然可能会出现链接超时的现象
安装好插件之后,就可以push charts 到 harbor 里面了
helm push grafana-0.0.2.tgz test --username test --password xxx

出现以上就说明 push 成功了 ,恭喜!!!
参考
- https://github.com/chartmuseum/helm-push
- https://github.com/goharbor/harbor
- https://github.com/helm/helm
- Github: https://github.com/innerpeacez
- 个人Blog: https://ipzgo.top
- 日拱一卒,不期速成
[转帖]Helm 3 使用 harbor 作为仓库存储 charts的更多相关文章
- Helm 3 使用 harbor 作为仓库存储 charts
简介 本文讲述的是调教 Helm 3 和 harbor 1.6+ 的经验,从 helm2 更新到 helm 3 并且将 charts 推送到 harbor 中进行存储,移除了原先的 helm serv ...
- Harbor私有仓库中如何彻底删除镜像释放存储空间?
简介: Harbor私有仓库运行一段时间后,仓库中存有大量镜像,会占用太多的存储空间.直接通过Harbor界面删除相关镜像,并不会自动删除存储中的文件和镜像.需要停止Harbor服务,执行垃圾回收命令 ...
- harbor镜像仓库-02-https访问配置
harbor镜像仓库-02-https访问配置 harbordockerhttps harbor搭建部署参考上一章节 harbor镜像仓库-01-搭建部署 Harbor默认使用http,给harbor ...
- harbor镜像仓库-01-搭建部署
harbor镜像仓库-01-搭建部署 dockerregistryharbor安装部署docker-compose harbor的https配置参考另一章节harbor镜像仓库-02-https访问配 ...
- CentOS部署Harbor镜像仓库
关于Harbor Harbor是用于存储和分发Docker镜像的镜像仓库服务,相比Docker Registry,Harbor在安全.标识.管理等方面做了增强,更适合企业使用: 官方网站:https: ...
- Docker以http访问Harbor私有仓库(一)
1 说明 前文Centos7搭建Harbor私有仓库(一)我们成功搭建Harbor,本篇我们主要配置Docker以http方式访问私有仓库 2 Docker配置 2.1 Mac系统 2.1.1 配置D ...
- Docker以https访问Harbor私有仓库(二)
1 说明 前文Centos7搭建Harbor私有仓库(二)中,我们以https方式搭建了Harbor,本篇我们主要配置Docker以https方式访问Harbor私有仓库 2 Docker配置 2.1 ...
- Centos7搭建Harbor私有仓库(二)
1 说明 前文Centos7搭建Harbor私有仓库(一)中成功搭建了Harbor,但,是以http方式搭建的,这里我们修改为https方式 以下基于镜像CentOS-7-x86_64-Minimal ...
- 在jenkins中使用shell命令推送当前主机上的docker镜像到远程的Harbor私有仓库
1.jenkins主机上的docker配置 先在Jenkins主机的docke上配置上Harbor私有仓库地址 cat /etc/docker/daemon.json { "insecure ...
随机推荐
- python3 内建函数filter
Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是 ...
- Robot Framework RIDE简单使用
Testproject Testsuite Testcase 1.创建测试项目 打开RIDE,点击File--New Project,选择项目路径,填入项目名称 2.右键点击新建的测试项目,选择New ...
- Shell 编程 排序工具 sort 和 uniq
本篇主要写一些shell脚本排序工具的使用. sort 概述 sort是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序. 用法 sort [选项] 参数 -f:忽略大小写 -b ...
- Python基础(三)--流程控制之if、while、for,break与continue
一.流程控制之if……else…… if语句是指编程语言中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一 if 条件1: 缩进的代码块 elif 条件2: 缩进的代码 ...
- 《linux就该这么学》课堂笔记08 用户权限、特殊权限、隐藏权限、su、sudo
1.文件的读.写.执行权限可以简写为 r w x,亦可分别用数字4.2.1来表示 2.文件的特殊权限 2.1.SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限( ...
- oracle 导入导出表
imp username/pwd@orcl file=c:\temp\exp.dmp tables=(table1, table2)#imp username/pwd@ip:1521/orcl ful ...
- 数据结构篇——字典树(trie树)
引入 现在有这样一个问题, 给出\(n\)个单词和\(m\)个询问,每次询问一个单词,回答这个单词是否在单词表中出现过. 好像还行,用 map<string,bool> ,几行就完事了. ...
- 2-剑指offer: 最小的K个数
题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 代码: // 这种topN问题比较常见的是使用堆来解决,最小的k个 ...
- java添加新表,接口合成流程必看
生成代码后 创建模块包 先放入 实体类 然后按照 Controller 改成 然后是 service 后impl 然后是mapper 后xml 然后更新 代码
- 剑指offer 6:链表(从头到尾打印链表)
链表的数据结构 struct ListNode { int value; ListNode* next; }; 那么在链表的末尾添加一个节点的代码如下: void insert(ListNode** ...