首页
学习
活动
专区
圈层
工具
发布

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

简介

从本篇开始,深入到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的源码,画出了该模块的程序结构图.

举报
领券