如何在tc上安装buildkit.tcz、vscode.tcz、打通vscodeonline与openfaas模拟cloudbase打造碎片化编程开发部署环境

54次阅读
没有评论

共计 3956 个字符,预计需要花费 10 分钟才能阅读完成。

行业资讯    
服务器    
云计算    
如何在 tc 上安装 buildkit.tcz、vscode.tcz、打通 vscodeonline 与 openfaas 模拟 cloudbase 打造碎片化编程开发部署环境

如何在 tc 上安装 buildkit.tcz、vscode.tcz、打通 vscodeonline 与 openfaas 模拟 cloudbase 打造碎片化编程开发部署环境
发布时间:2021-11-25 11:53:19
来源:丸趣 TV
阅读:177
作者:小新
栏目:云计算

这篇文章将为大家详细讲解有关如何在 tc 上安装 buildkit.tcz、vscode.tcz、打通 vscodeonline 与 openfaas 模拟 cloudbase 打造碎片化编程开发部署环境,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

buildkit.tcz+instant commit

首先,从下载 buildkit 最新版,它跟 docker,openfaas,containerd 一样,都是清一色的 go binary,采用《一种混合包管理和容器管理方案,及在 tinycorelinux 上安装 containerd 和 openfaas》同样的 tcz 构建方法,将下载到的 v0.8.1 的 buildkit 包的所有 bin 放到一个 squashfs-root/usr/local/bin 中 (不用加 chmod + x 因为下载包里自带),然后新建一个 squashfs-root/usr/local/etc/init.d/,里面放二个 chmod +x ./buildkit ./makedockerconfig:

这是 makedockerconfig 中的内容,buildkit+containerd 代替了整个 docker 作构建工具和运行时 (containerd 不能 build,ctr image build 没有这个命令), 但配置文件用的还是对接 dockerhub 的那一套。

read -p  enter your dockerhub username:  DOCKERHUB_USERNAME
read -p  enter your dockerhub personal access token:  DOCKERHUB_TOKEN
rm -rf ~/.docker/config.json
mkdir -p ~/.docker/
cat   ~/.docker/config.json   EOF
  auths : {
  https://index.docker.io/v1/ : {  auth :  $(echo -n $DOCKERHUB_USERNAME:$DOCKERHUB_TOKENT | base64) 
 }
 }
cp -f ~/docker/config.json /var/lib/faasd/config.json

解释一下,所谓 access token 就是一种能代替密码,实现有限权限子账户的机制。dockerhub 后台可以得到。由于 tc11 是没有 base64 的,这个工具在 coreutils.tcz 中。稍后建成的 buildkit.tcz 将依赖一条 coreutils.tcz

这是 buildkit 中的内容,/usr/local/bin/buildkitd,(你可以按上文添加额外参数设置为 runc 或 containerd 后端,默认为 runc),为应用包在 /init.d/ 写随着系统启动的启动文件,特别要注意,在命令后必要处加,否则前台命令会 block 启动流程。在前文中,faasd 和 containerd 都是这样处理的。

写好 dep(依赖 coreutils 和 containerd,attr.tcz:buildkit 使用 xattr 相关命令)和 md5.txt,打包成 tcz, 安装在 tc11 中,现在来测试一下,建立一个测试仓库并:sudo buildctl build –frontend dockerfile.v0 –local context=./ –local dockerfile=./ –output type=image,name=docker.io/minlearn/dafsdf:latest,出错了:

......
=  ERROR exporting to image 0.1s
error: failed to solve: rpc error: code = Unknown desc = mount callback failed on /tmp/containerd-mount267804283: mount callback failed on /tmp/containerd-mount706848158: failed to write compressed diff: failed to create diff tar stream: failed to get xattr for /tmp/containerd-mount267804283/bin: operation not supported

这是因为我在 tc11 中使用的是 ext3,构建 tc11 用的 config-5.4.3-tinycore64 中并没有开启 CONFIG_EXT3_FS, 也没有开启 CONFIG_EXT3_FS_XATTR,导致 buildkit 调用 xattr 相关命令时不成功。因此重新编译内核。注意要 sudo make install,不能仅 sudo make 在 arch/boot/x86/compressed 下得到 vmlinux,而要在 install 过后的 /boot 下得到 vmlinuz。否则虽然编译成功,但 kernel image 运行不了,会提示 invalid magic number

安装好 kernel image, 重启,问题解决。你就可以实现在 local 容器中免 registry commit 了。最后在命令中按是否需要上传到 dockerhub,加个 push=true 一下。

当然这一切现在只是命令行方式进行,并没有上升到整合为 openfaas 8080/ui 那个后台的界面功能。但作为上文提到的方案 2,接下来的 vscode mount 就好多了。

vscode.tcz + mount

我们下载的是 cdr 的 code-server-3.8.0-amd64,按《panel.sh:一个 nginx+docker 的云函和在线 IDE 面板, 发明你自己的 paas(2)》的路子将所有文件解压到 squashfs-root 的 /usr/local/lib/ 中。然后新建 squashfs-root/usr/local/bin,squashfs-root/usr/local/etc/init.d/ 并依次:

cd squashfs-root/usr/local/bin sudo ln -s ../lib/code-server-3.8.0/bin/code-server code-server sudo chmod +x ./code-server

cd squashfs-root/usr/local/etc/init.d/ sudo touch vscodeonline makevscodeconfig sudo chmod +x ./vscodeonline makevscodeconfig

makevscodeconfig 里面放:

read -p  enter your desired access token(plain strings ok):  VSCODE_TOKEN
rm -rf ~/.config/code-server/config.yaml
mkdir -p ~/.config/code-server/
cat   ~/.config/code-server/config.yaml   EOF
bind-addr: 127.0.0.1:5000
auth: password
password:  $(echo $VSCODE_TOKEN) 
cert: false
mkdir -p /home/tc/.config/code-server/
cp -f /root/.config/code-server/config.yaml /home/tc/.config/code-server/config.yaml

然后是启动 vscodeonline 的:/usr/local/bin/code-server –config /root/.config/code-server/config.yaml

直接打包,直接 md5, 没有 dep 引用。–config ~/.config/code-server/config.yaml 是需要的,因为 code-server 似乎存在一个 bug,它启动的时候会在~.config 下找配置文件,而不是~/.config 少了一个 /(多了一个 /? 没仔细看),且它识别不了~,找不到会自动在 8080 启动 vscode 服务,导致发生异常,故强行指定 /root/.config/。

然后你就可以按 https://code.visualstudio.com/docs/remote/containers-advanced 尝试 vscode.tcz + mount 方案了

未来我们将 code-server 中绑定的 nodejs 发行版本独立出来用独立 tcz 代替,这才符合 tcz 一个软件一个包的适当粒度划分。

关于“如何在 tc 上安装 buildkit.tcz、vscode.tcz、打通 vscodeonline 与 openfaas 模拟 cloudbase 打造碎片化编程开发部署环境”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计3956字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)