前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mac 上学习k8s系列(44)helm安装harbor

mac 上学习k8s系列(44)helm安装harbor

作者头像
golangLeetcode
发布2022-08-02 19:43:19
1.2K0
发布2022-08-02 19:43:19
举报
文章被收录于专栏:golang算法架构leetcode技术php

利用harbor我们可以搭建自己的docker repository,同时利用它自带的chartmesum插件我们可以利用harbor来管理我们的charts。在mac 上学习k8s系列(5)helm chart 我们详细介绍了如何使用helm和helm chart的基本原理,本节我们实战应用helm搭建harbor。新版的helm只需要下载解压就行

代码语言:javascript
复制
https://github.com/helm/helm/releases
tar -zxvf helm-v3.8.2-linux-amd64.tar.gz linux-amd64/
chmod +x linux-amd64/helm
 sudo cp linux-amd64/helm /usr/local/bin/

Harbor由6个大的模块所组成:

Proxy: Harbor的registry、UI、token services等组件,都处在一个反向代理后边。该代理将来自浏览器、docker clients的请求转发到后端服务上。

Registry: 负责存储Docker镜像,以及处理Docker push/pull请求。因为Harbor强制要求对镜像的访问做权限控制, 在每一次push/pull请求时,Registry会强制要求客户端从token service那里获得一个有效的token。

Core services: Harbor的核心功能,主要包括如下3个服务:

1)UI: 作为Registry Webhook, 以图像用户界面的方式辅助用户管理镜像。

2) WebHook:WebHook是在registry中配置的一种机制, 当registry中镜像发生改变时,就可以通知到Harbor的webhook endpoint。Harbor使用webhook来更新日志、初始化同步job等。

3) Token 服务:负责根据用户权限给每个docker push/pull命令签发token. Docker 客户端向Regiøstry服务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向Registry进行请求。

Database:为core services提供数据库服务,负责储存用户权限、审计日志、Docker image分组信息等数据。

Job services: 主要用于镜像复制,本地镜像可以被同步到远程Harbor实例上。

Log collector: 负责收集其他组件的日志到一个地方

harbor-adminserver主要是作为一个后端的配置数据管理,并没有太多的其他功能。harbor-ui所要操作的所有数据都通过harbor-adminserver这样一个数据配置管理中心来完成。

我们可以根据的描述https://helm.sh/zh/docs/intro/install/

https://github.com/goharbor/harbor-helm,使用helm安装harbor

代码语言:javascript
复制
 helm repo add harbor https://helm.goharbor.io

根据文档的描述,制定参数。

代码语言:javascript
复制
helm install my-harbor harbor/harbor --set domain=124.220.185.35 --set expose.type=nodePort  --set expose.tls.auto.commonName=harbor --set externalURL=https://124.220.185.35:30003 -n harbor

NAME: my-harbor
LAST DEPLOYED: Fri Apr 29 06:17:14 2022
NAMESPACE: harbor
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Please wait for several minutes for Harbor deployment to complete.
Then you should be able to visit the Harbor portal at https://124.220.185.35:30003
For more details, please visit https://github.com/goharbor/harbor

由于没有制定externalIP的参数,上述安装外网不能直接访问,需要修改下

代码语言:javascript
复制
# kubectl -n harbor edit svc harbor
spec:
  externalIPs:
  - 124.220.185.35

接着我们可以打开harbor的管理页面

https://124.220.185.35:30003/account/sign-in?redirect_url=%2Fharbor%2Fprojects

其中,harbor的默认用户名密码默认为:admin/Harbor12345,接着我们就看到了如下页面:

下面开始推送镜像。

代码语言:javascript
复制
% docker login 124.220.185.35:30003
Username: admin
Password: 
Login Succeeded
代码语言:javascript
复制
% docker push 124.220.185.35:30003/library/tools:v0.0.1
The push refers to repository [124.220.185.35:30003/library/tools]
275387ba739a: Preparing 
275387ba739a: Pushing  61.51MB/411.5MB
c396586d4164: Pushed 
510f18150319: Pushed

接着我们了解下推送char的过程。

根据文档https://github.com/goharbor/harbor-helm我们知道Chartmuseum默认是允许的:

chartmuseum.enabled Enable chartmusuem to store chart true

首先打包我们的chart

代码语言:javascript
复制
% helm package .
Successfully packaged chart and saved it to: /Users/xiazemin/source/k8s_learn/helm/mychart/mychart-0.1.0.tgz

生成索引文件

代码语言:javascript
复制
helm repo index .
  index.yaml  

索引文件是一个名为 index.yaml 的 Yaml 文件。它包含有关 Chart 包的一些元数据,包括 Chart.yaml 文件的内容。有效的 Chart Repository 必须具有索引文件。索引文件包含有关 Chart Repository 中每个 Chart 的信息。可以通过 helm repo index 命令将本地目录下的 Chart 生成索引文件。

添加repo

代码语言:javascript
复制
% helm repo add harbor https://124.220.185.35:30003/chartrepo/library --username admin --password Harbor12345 --insecure-skip-tls-verify 
"harbor" has been added to your repositories

安装helm 推送插件

代码语言:javascript
复制
helm plugin install https://github.com/chartmuseum/helm-push

推送我们的chart

代码语言:javascript
复制
% helm cm-push mychart-0.1.0.tgz harbor  --insecure
Pushing mychart-0.1.0.tgz to harbor...
Done.

到管理界面查看已经成功了

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 golang算法架构leetcode技术php 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档