前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >harbor源码分析之组件adminServer(六)

harbor源码分析之组件adminServer(六)

原创
作者头像
暮雨
修改2018-11-12 11:34:57
8340
修改2018-11-12 11:34:57
举报
文章被收录于专栏:云端漫步云端漫步

简介

从本篇开始,深入到harbor的代码层面,以版本harbor1.1.2版本作为蓝本进行展开.尝试了在本地编译启动UI组件,发现该组件依赖组件adminServer.就先以该组件进行展开.

该组件提供了一个系统配置的功能组件,通过对路由层的分析,该组件对外主要提供四个功能接口,这种方式的实现主要为了保证对配置的动态修改.数据存储是以文件的形式存储在本地.同时为了保证存储数据的安全性,通过程序随机生成一个key,通过对称加密的方式,对存储数据做了加密处理.

编译adminServer

将应用程序放入到GOPATH环境变量下

代码语言:javascript
复制
$mkdir -p $GOPATH/src/github.com/vmware/
$mv harbor $GOPATH/src/github.com/vmware/.

1. 用goland打开该程序

2. 配置编译参数

3. 编译执行

编译执行后出现如下错误

发现程序在执行的时候,无法对/etc/adminserver这个文件进行read操作.通过对程序的grep,发现程序在获得环境变量JSON_CFG_STORE_PATH时,获得的值为空,读取了程序设置的default值.解决该问题很简单,将该环境变量指向具有rw权限的目录即可.

编译运行后,该报错信息消失,又出现了一个类似的报错信息

同样的解决思路,设置KEY_PATH环境变量即可.这个key文件存储的是对称加密的密钥,在构建时又prepare的python脚本生成.特别说明,该字符长度有着严格的限制,16位长.

以上这三个问题解决了,adminserver就可以正常启动了.

4. 测试

到此为此,已成功的将该服务启动起来.

程序debug

debug是一个程序猿必备的技能,通过debug可以清晰的分析出程序的逻辑结构以及数据传输,数值变化等.因为之前一直写脚本语言,好久没完IDE工具下的DEBUFG了.go语言让我重新了找到了这种乐趣.

一起看下goland这个IDE怎么debug adminServer这个组件.

记得先打一个断点.

对程序的debug详情就不做展开,有兴趣可以按照以上的操作,实践下.

代码解析

adminServer的架构图

1. 初始化系统配置

2. 初始化镜像存储

3. 启动http server

详细代码就不做展开了,有兴趣的话,根据划分的模版进行展开.可以多打些debug.

总结

这是深入到代码层面的第一篇,主要对adminServer组件进行展开,编译该组件源码,使用goland的debug功能,最后根据adminServer的源码,画出了该模块的程序结构图.

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 编译adminServer
  • 程序debug
  • 代码解析
  • 总结
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档