本文会介绍一种开发Kubernetes的思路。在Windows上使用GoLand IDE查看Kubernetes项目源码,在Linux上编译项目。在Linux上安装FTP服务来同步Windows和Linux之间的代码。
在Linux上搭建FTP服务器并尝试编译K8S
安装FTP服务器1
yum install -y vsftpd
修改 /etc/vsftpd/
下的 ftpusers
、user_list
文件,注释掉root用户,使root用户能够登录FTP服务器。ftp的配置文件主要有三个,位于 /etc/vsftpd/
目录下,分别是:ftpusers
(该文件用来指定那些用户不能访问ftp服务器)、user_list
(该文件用来指示的默认账户在默认情况下也不能访问ftp)、vsftpd.conf
(vsftpd的主配置文件)。
启动FTP服务器1
2systemctl start vsftpd
systemctl enable vsftpd
创建一个如下的目录结构
1 | - / |
设置 /repos/kubernetes
为GOPATH,在 ~/.zshrc
中添加一行
1 | export GOPATH=/repos/kubernetes |
然后1
2
3go get -d k8s.io/kubernetes
cd $GOPATH/src/k8s.io/kubernetes
$ make
如果make未出现错误则表示成功。make需要安装gcc编译器。
在Windows上安装IDE以及代码
GoLand下载地址:https://www.jetbrains.com/go/download/
License server地址:http://idea.youbbs.org(2018.1.15更新GoLand可用)
创建一个如下的目录结构
1 | - $HOME |
然后1
2cd $HOME/repos/kubernetes/src/k8s.io
git clone https://github.com/kubernetes/kubernetes.git
然后在项目目录下使用 Go 1.5之后使用了vendor这种包管理机制,无须使用go get。go get
命令,会从互联网上解析下载项目依赖的包。使你看代码的时候不会出现标识符找不到变成红色的情况,更加方便你看代码。
然后用GoLand打开$HOME/repos/kubernetes
这个项目。使用JetBrains IDE的好处有很多,比如可视化地查看代码结构,全文检索代码、各种工具的GUI化、集成化等。但是IDE是安装在Windows上的,但是Kubernetes的代码只能在Linux上编译。
在GoLand上使用插件访问FTP服务实现文件同步
需要在Setting=>Plugins中安装 Remote Hosts Access 这个插件。重启IDE之后,在Setting中搜索Deployment,新增一项,主要需要配置两个tab。/repos/kubernetes
。
Connection
Mappings
这里要注意一点如果你用的是匿名用户,默认是没有所有目录访问权限的。这里使用的root用户,具有所有目录文件的访问权限。
配置好之后,可以在菜单栏=>Tools=>Deployment=>Browse Remote Host查看刚刚添加的远程主机中的目录(能看到的范围根据你设置的根目录而定)。
因为Kubernetes项目非常大,不建议使用全量的upload功能,这样会扫描全部文件并且传输全部内容。我们可以在Windows上修改了一个文件之后,在Project视图中点击Upload to dev然后就可以同步到远程主机。然后可以在远程Linux主机中使用make编译Kubernetes项目。
问题
这样开发基本上解决了又能在Windows上用IDE高效开发代码,又解决了Kubernetes项目编译的问题。但还是有很多不足:
- 使用git pull同步代码,需要在两台机器上都操作一遍