一文熟悉golang编写k8s应用部署工具

2023-05-16

golang编写k8s应用部署工具

背景:在上篇文章里,完成了一个简陋的spring cloud + k8s的应用系统,那么如果手工部署的话,那得分别打包5个服务,打5个镜像,然后安装5个服务。凡是麻烦的工作,都要去让工具来干。

然后我就做了一个简陋的可视化部署工具,输入仓库git地址,由golang来负责clone repository -> build docker images -> helm install

代码仓:chintensakai/learn-spring-cloud (gitee.com)

1. 思路

  • 为什么用golang?因为我后期会加入k8s相关资源的展示看板,以及各节点的docker资源看板,而golang拥有k8s和docker官方提供的client sdk,肥肠方便。
  • 流程分三步:
    1. 输入git仓库日志,步骤条按钮展示clone,点击调用/git/clone接口,后台gin收到请求,使用go-git库去clone本项目,clone结束之后,遍历项目目录,寻找包含package目录的项目,这些项目就是一会helm需要安装的项目;同时寻找dependencies聚合项目,mvn clean package来打包。
    2. 1步结束之后,按钮变为build,点击调用/docker/build接口,前台把1步骤返回的需要安装的项目列表携带到后端,后端使用docker sdk到对应目录里面,根据Dockerfile构建镜像,并推送到本地registry。这一步最为耗时,经过了一些已知办法的优化,后面打算用goroutine重写build和push的过程,理论上可以再节省4/5的时间 已经用goroutine重写,但是效果没有想象中那么好,build镜像阶段确实并发了,但是push阶段似乎还是老样子,可能跟registry的机制有关系吧。但是有个意外收获,这里设计成主线程没有等待goroutine结束就返回了,因为下一个步骤是helm install,并不会受goroutine的影响,他会不断等待镜像,所以主线程直接返回就好了,留下goroutine自己在后台build & push images就行了。
    3. 2步结束之后,按钮变为helm install,点击之后调用/helm/install接口,helm的go sdk有点复杂,而且这一步的工作很简单,所以直接调用系统command更方便。

2. 最终结果:

image.png

2.1 /git/clone 接口:

image.png

2.2 /docker/build 接口:

image.png

2.3 /helm/install 接口:

image.png

2.4 安装完成:

image.png

3. 一些优化的点:

之前的基础镜像太大,push和pull的过程无法忍受,单个镜像的build和push就需要11分钟 

image.png

使用alpine + springboot 分层构建 + 本地镜像仓库,5个镜像build&push只需要一两分钟,越往后越快,因为有的镜像层可以复用。而且真正使用的话肯定是自己的私有仓库,所以这一步都是一些已知办法,不是我自己发明的。 

image.png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一文熟悉golang编写k8s应用部署工具 的相关文章

随机推荐

  • 基于Tiny210开发板视频显示

    基于Tiny210开发板视频显示 1 写基于V4L2编程 61 61 61 61 61 61 61 61 videodevice h文件 61 61 61 61 61 61 61 61 61 ifndef VIDEODEVICE H def
  • 纯C++去雾算法

    去雾算法 前言 xff1a 经过不断的改进研究 xff0c 该算法终于稳定 xff0c 高效的问世了 xff01 经过研究使该算法适应大雾环境 xff0c 对该算法的内存优化 xff0c 能够实时的高效的运行 一 实时视频 xff1a 二
  • 致院长的一封信

    致院长的一封信 行了一路 xff0c 梦了一路 xff0c 念了一路 xff0c 伤了一路 xff0c 青春的此岸 xff0c 我眉心微蹙 xff0c 聆听清风诉说着经年的过往 xff1b 走了一路 xff0c 赏了一路 xff0c 听了一
  • LINUX字符设备驱动程序实例

    我是通过UBUNTU10 10测试该驱动程序的 xff0c 系统内核为linux 2 6 35 22 可使用uname r 命令来查看当前内核的版本号 下载安装LINUX内核 xff0c 需要下载和本机一样版本的内核源码 1 xff0c 安
  • c++多态总结

    今天来总结一些c 43 43 中 xff0c 有关多态的知识 多态 xff1a 多态可以简单地概括为 一个接口 xff0c 多种方法 xff0c 程序在运行时才决定调用的函数 xff0c 它是面向对象编程领域的核心概念 接下来 xff0c
  • 600词汇过四级

    600 词汇过四级 A 1 abandon vt 抛弃 xff0c 放弃 abandon oneself to despair 陷于绝望 xff1b abandon oneself to failures 自暴自弃 2 abrupt adj
  • 华清远见c语言学习笔记四

    test c Created on Jun 29 2012 Author 孙旭 华清远见实验室 1 include lt stdio h gt include lt stdlib h gt include lt string h gt in
  • 华清远见c语言学习笔记六

    test c Created on Jun 29 2012 Author 孙旭 华清远见实验室 1 include lt stdio h gt 找出一个字符串中的数字 include lt string h gt int main char
  • c++示例代码-友元

    一 友元函数 include lt iostream h gt include lt math h gt class Point Point类声明 public 外部接口 Point int xx 61 0 int yy 61 0 X 61
  • C/C++空指针总结

    在C中 在C中 xff0c 使用NULL表示空指针 xff0c 实际上 xff0c NULL被定义为 xff1a define NULL void 0 其中 void 0 表示对 0 进行强制转换 xff0c 转换为一个void类型的指针
  • Windows11镜像下载及安装

    现在微软已正式推出Windows 11预览版系统 xff0c 目前最新系统版本是22000 71 xff0c 正式版可能会在10月份推出 xff0c 届时拥有正版Windows 10系统的就可以通过Windows Update工具免费在线升
  • ROS2安装及基础知识介绍

    ros介绍 ROS xff08 Robot Operating System xff09 是一个开源的机器人操作系统 xff0c ROS系统是由大量节点组成 xff0c 其中任何一个节点都可以通过发布 订阅的方式与其他节点进行通信 举个栗子
  • Ubuntu Gnome GTK程序开机启动

    启动图标准备 GTK程序 开机启动需要首先制作desktop文件 例如 myapp autostart desktop 如下 xff1a Desktop Entry Encoding 61 UTF 8 Name 61 App Comment
  • 学习记录

    最近打算用visio画个流程图 xff0c 看看会不会遇到什么坑 1 最近打算用visio画几个流程图 xff0c 遇到什么问题在记录一番 2 分析学习一下系统权限的分配 xff0c 做到可以配置权限 xff0c 灵活一些 用户 gt 角色
  • 计算机专业学生,大三了找技术岗,怎么写一份好简历?内附269份简历模板

    计算机专业学生 xff0c 大三了找技术岗 xff0c 怎么写一份好简历 xff1f 内附269份简历模板 大家好 xff0c 我是好好学习 xff0c 天天编程的博主 xff0c 一个每天在互联网上种菜和砍柴的程序员 因为疫情的影响 xf
  • Digest Authentication 摘要认证(转载)

    原文 Digest Authentication 摘要认证 weixin 34007906的博客 CSDN博客 摘要 式认证 xff08 Digest authentication xff09 是一个简单的认证机制 xff0c 最初是为HT
  • 面试问到 Promise,这样回答最完美了

    promise是什么 xff1f Promise是异步编程的一种解决方案 xff0c 比传统的回调函数和事件更合理和强大 所谓Promise xff0c 简单来说就是一个容器 xff0c 里面保存着某个未来才会结束的事情 xff08 通常是
  • Linux编译安装内核

    0 前言 Linux系统中可同时安装多个内核镜像 xff0c 启动时选其一运行即可 xff0c Ubuntu14 04安装Linux内核 介绍了通过apt get工具安装内核的方法 xff0c 本文将介绍如果由源码安装新内核 验证版本 xf
  • Ubuntu 16.04 上用RealSense ZR300跑Vins Mono

    Ubuntu 16 04 上用RealSense ZR300跑Vins Mono 这篇博客主要讲使用RealSense ZR300运行Vins Mono xff0c 主要包括 xff1a xff08 1 xff09 ROS上RealSens
  • 一文熟悉golang编写k8s应用部署工具

    背景 xff1a 在上篇文章里 xff0c 完成了一个简陋的spring cloud 43 k8s的应用系统 xff0c 那么如果手工部署的话 xff0c 那得分别打包5个服务 xff0c 打5个镜像 xff0c 然后安装5个服务 凡是麻烦