设计自己的paas平台nap 2—-分解客户端和服务器端
写在前面
前面一片文章我们主要介绍了我们的paas平台nap所基于的技术基础,这篇文章,我们首先介绍一下nap的整体思路,然后通过从客户端和服务器端的一些设计,一步一步地来了解如何设计一个完整的paas平台。
客户端
不着急,我们一步一步来。我们先来大体理一下思路,客户端git push,然后,服务器端接受到代码,然后部署,然后返回部署是否成功,ip地址和端口号是多少等,在运行的阶段,可能还会有健康检查,重新部署之类的东西。好了,大体思路有了,我们一点一点来实现。
首先来个简单的。git push的时候,服务器端调用服务器上的一个脚本。这里用到的知识就是我们之前说过的ssh forced command,可以看看之前写的blog,dokku源码解读1.
git我们之前也介绍过了,git就是一个版本控制工具,而具备远程存储能力的git,也只不过是把本地的git repository移到远程服务器而已。而且我们知道,每次git push的时候,都会执行ssh git@git.com git-receive-pack 'mygit.git'
,实际上也是执行了ssh命令。好了,第一步,我们就实现在客户端git push的时候,远程服务器通过本地的脚本,执行echo hello就可以了。
客户端不需要任何修改,在服务器端,修改对应客户端的rsa key。
1 2 3 4 5 6 7 8 |
|
好了,可以了,我们尝试一下。在客户端
1 2 3 4 5 6 7 |
|
这个时候,应该可以看到输出了hello。
attention: 需要注意的是,如果我们修改了rsa key前面的command,那么我们ssh进去服务器的时候,会执行command,而不会进去了,一定要注意这种情况,有可能导致你永远进不去系统。解决办法是你在coreos系统中重新建立一个用户,修改这个用户的rsa key前的command,而保存一个始终可以ssh进去的用户。但是我不知道coreos怎么给新用户赋予可以sudo权限,没有找到visudo,或者sudoers,等我知道了就在这里补充一下。所以我现在就保持有一个ssh到coreos的终端,或者每次下班了之后,就把rsa key中的command去除,下次尝试的时候再加进去。
coreos添加新用户,并赋予sudo权限。 添加user的时候,不要用常规的linux方法,采用修改cloud-config文件的方式。cloud-config文件在/var/lib/coreos-install/user_data里面。
1 2 3 4 5 6 |
|
在users里面添加这样一个新的用户,group里面的sudo,就是赋予sudo权限。具体可以看官方说明。然后使得新配置生效。
sudo coreos-cloudinit --from-file /var/lib/coreos-install/user_data
服务器
还是一步一步来,我们把困难的任务分解来看。我们这里就做一个脚本,这个脚本是干什么的呢,就是读取一个文件夹里的Dockerfile,然后生成systemd可以解释的文件,然后执行他。至于这个Dockerfile怎么来的,先不考虑,我们就直接写一个Dockerfile,后来的时候应该是git push上来的。脚本代码应该是这样。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
简单吧,读取/home/core/$APP路径下的Dockerfile,然后打包成一个image,然后删除可能存在的,然后运行。
后面我们将会讲解怎么把这两个简单的步骤组合起来,组合起来之后,就是一个简单的,具备paas平台过程的paas平台了,虽然还有很多需要修改,补充,完善的地方。