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 uninstall
    • helm inspect -> helm show
    • helm 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+
调教步骤
  1. 确保kubernetes环境可用
  2. 下载并初始化 helm 3
  3. 安装 harbor 1.6+
  4. 添加 harbor 中的 chartrepo 到 helm 3 中
  5. 安装使用 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 成功了 ,恭喜!!!

参考


 
分类: 随笔

[转帖]Helm 3 使用 harbor 作为仓库存储 charts的更多相关文章

  1. Helm 3 使用 harbor 作为仓库存储 charts

    简介 本文讲述的是调教 Helm 3 和 harbor 1.6+ 的经验,从 helm2 更新到 helm 3 并且将 charts 推送到 harbor 中进行存储,移除了原先的 helm serv ...

  2. Harbor私有仓库中如何彻底删除镜像释放存储空间?

    简介: Harbor私有仓库运行一段时间后,仓库中存有大量镜像,会占用太多的存储空间.直接通过Harbor界面删除相关镜像,并不会自动删除存储中的文件和镜像.需要停止Harbor服务,执行垃圾回收命令 ...

  3. harbor镜像仓库-02-https访问配置

    harbor镜像仓库-02-https访问配置 harbordockerhttps harbor搭建部署参考上一章节 harbor镜像仓库-01-搭建部署 Harbor默认使用http,给harbor ...

  4. harbor镜像仓库-01-搭建部署

    harbor镜像仓库-01-搭建部署 dockerregistryharbor安装部署docker-compose harbor的https配置参考另一章节harbor镜像仓库-02-https访问配 ...

  5. CentOS部署Harbor镜像仓库

    关于Harbor Harbor是用于存储和分发Docker镜像的镜像仓库服务,相比Docker Registry,Harbor在安全.标识.管理等方面做了增强,更适合企业使用: 官方网站:https: ...

  6. Docker以http访问Harbor私有仓库(一)

    1 说明 前文Centos7搭建Harbor私有仓库(一)我们成功搭建Harbor,本篇我们主要配置Docker以http方式访问私有仓库 2 Docker配置 2.1 Mac系统 2.1.1 配置D ...

  7. Docker以https访问Harbor私有仓库(二)

    1 说明 前文Centos7搭建Harbor私有仓库(二)中,我们以https方式搭建了Harbor,本篇我们主要配置Docker以https方式访问Harbor私有仓库 2 Docker配置 2.1 ...

  8. Centos7搭建Harbor私有仓库(二)

    1 说明 前文Centos7搭建Harbor私有仓库(一)中成功搭建了Harbor,但,是以http方式搭建的,这里我们修改为https方式 以下基于镜像CentOS-7-x86_64-Minimal ...

  9. 在jenkins中使用shell命令推送当前主机上的docker镜像到远程的Harbor私有仓库

    1.jenkins主机上的docker配置 先在Jenkins主机的docke上配置上Harbor私有仓库地址 cat /etc/docker/daemon.json { "insecure ...

随机推荐

  1. 2019-11-07 微信小程序入门

    1.什么是微信小程序? 小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”,用户扫一扫或者搜一下即可打开应用,体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题.应用将无处不 ...

  2. PhoneGap架构基础及工作原理介绍

    转自:http://mobile.51cto.com/others-308545.htm 本篇文章从PhoneGap由来.功能以及工作原理,力争由浅入深介绍PhoneGap框架.   为什么需要Pho ...

  3. 【学习笔记】PYTHON语言程序设计(北理工 嵩天)

    1 Python基本语法元素 1.1 程序设计基本方法 计算机发展历史上最重要的预测法则     摩尔定律:单位面积集成电路上可容纳晶体管数量约2年翻倍 cpu/gpu.内存.硬盘.电子产品价格等都遵 ...

  4. Linux小知识点

    磁盘 Linux的磁盘类型有IDE和SCSI两种. IDE的命名方式是采用/dev/hdx(x代表磁盘块),其下的分区则是/dev/hdxy(y代表该磁盘上的分区号) SCSI则是采用/dev/sdx ...

  5. Alipay SDK验签PHP低于5.5版本错误

    低于PHP5.5版本不支持OPENSSL_ALGO_SHA256函数,要想使用RSA2加密,把OPENSSL_ALGO_SHA256函数替换为:sha256WithRSAEncryption 解密方法 ...

  6. 如何将MultipartFile转换成based4

    public String test(MultipartFile file) throws Exception{ BASE64Encoder base64Encoder =new BASE64Enco ...

  7. 前端(1)HTML介绍

    1.1 HTML介绍 1.1Web服务本质 服务端 import socket server = socket.socket() server.bind(("127.0.0.1", ...

  8. Logstash连接Elasticsearch异常

    1.背景 elasticsearch集群默认配置启动ok,logstash连接向里面发数据ok. 2.出现问题 修改elasticsearch.yml中的cluster.name,改为 esabc 然 ...

  9. 缓存中,2个注解:@cacheable 与 @cacheput 的区别

    @cacheable:只会执行一次,当标记在一个方法上时表示该方法是支持缓存的,Spring会在其被调用后将其返回值缓存起来,以保证下次利用同样的参数来执行该方法时可以直接从缓存中获取结果. @cac ...

  10. IDEA控制台输出中文乱码问题

    IntelliJ IDEA 真的是一款很方便的Java开发工具,但是关于中文乱码这个问题我不得不吐槽,这个编码也弄得这么麻烦干嘛,真想找idea开发者干架,我敢打包票我能在一分钟之内一拳飞过去让他跪下 ...