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

innerpeacez 2019-07-26 原文

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

简介

本文讲述的是调教 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

1563862747766

默认添加官方 repo stable https://kubernetes-charts.storage.googleapis.com

3.安装 harbor 1.6+

这里我使用的是 harbor 官方提供的 charts repo,好奇心驱使我打开了这个网站 https://helm.goharbor.io/

1563863645436

这熟悉的界面让我严重怀疑是使用的 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

1564133342050

新建一个chart repo

1564133389826

创建一个 test 用户

1564134352276

添加 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

1564135632193

出现以上就说明 push 成功了 ,恭喜!!!

参考


发表于 2019-07-26 18:50 innerpeacez 阅读() 评论() 编辑 收藏

 

版权声明:本文为innerpeacez原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/innerpeacez/p/11252198.html

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

  1. Java 设置Excel单元格格式—基于Spire.Cloud.SDK for Java

    本文介绍使用Spire.Cloud.SDK for Java来设置Excel单元格格式,包括字体、字号、单元格 […]...

  2. java windows自动化-mail自动发邮件

    本文旨在让测试人员了解如何发邮件 本文旨在让测试人员了解如何发邮件 发邮件的话,最简单的事是直接手动发邮件,但 […]...

  3. 《SpringMVC从入门到放肆》十、SpringMVC注解式开发(复杂参数接收)

    上一篇我们学习了简单的参数接收方式,以及对编码的统一处理。今天我们来接收对象参数。   一、接收对象参数 js […]...

  4. 2017自己读过的技术类书籍回顾

    2017自己读过的技术类书籍回顾 读完的书籍 过去的2017年我终于毕业走出学校了,大四一年求职过程也算是曲折 […]...

  5. JAVA 的 Date、Calendar的常用用法 – mimamo

    JAVA 的 Date、Calendar的常用用法 最近在做项目的时候用到Date 和Calendar比较多, […]...

  6. Java 之 多维数组(二维数组)

    一、多维数组   Java 语言里提供了支持多维数组的语法。    如果说可以把一维数组当成几何中的线性图形, […]...

  7. JVM虚拟机-垃圾回收机制与垃圾收集器概述

    目录 前言 什么是垃圾回收 垃圾回收的区域 垃圾回收机制 流程 怎么判断对象已经死亡 引用计数法 可达性分析算 […]...

  8. Java ASM学习(2)

    1.编译后的方法区,其中存储的代码都是一些字节码指令 2.Java虚拟机执行模型: java代码是在一个线程内 […]...

随机推荐

  1. 金山打字通2008完整版包含金山打字游戏,网上唯一的

    金山打字通2008 官方正式完整版,网上唯一的,其他都是不完整的。2007,2009版为虚假,官方未出此版。 […]...

  2. Python-模块

    模块其实就是一个Python文件 1、标准模块,标准包 Python自带的这些模块,直接import就能用的 […]...

  3. 15Java进阶 进程

    1 线程控制 t.join():让主线程进入线程池,等待t执行完才执行。 t.sleep():让线程阻塞,休眠 […]...

  4. IOS中定时器NSTimer的开启与关闭

    转:http://blog.csdn.net/enuola/article/details/8099461   […]...

  5. 中国2017 Google 开发者大会第一天简单回顾

    Google 开发者大会 (Google Developer Days,简称 GDD) 是展示 Google […]...

  6. 版本管理:配置项版本号规则

    版本管理:配置项版本号规则 (1)处于“草稿”状态的配置项的版本号格式为:0.YZ 。 YZ数字范围为01-9 […]...

  7. 亲测!20 秒分割 2G 视频!超简单免费小巧视频分割软件

    很早之前就有个一个多小时的录屏视频想要分割下,但是就这么个小需求,什么会声会影、达芬奇动不动就要安装好几 G […]...

  8. 淘宝 NPM 镜像

    这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽 […]...

展开目录

目录导航