willzhang / cluster-image

Apache License 2.0
0 stars 0 forks source link

cluster-image

Sealos cluster image,也称为集群镜像,是 Sealos 工具的一个创新功能。该特性允许用户将 Kubernetes 云原生应用和插件打包成一个统一的 Docker 镜像,从而简化和标准化云原生生态下各种应用及插件的部署和管理。

功能特性

  1. :package: 统一封装: 集成 Kubernetes 应用和插件依赖的所需的所有资源,包括 YAML 文件、Helm charts、Docker 镜像和二进制文件。
  2. :sparkles: 简化安装: 提供一键部署能力,通过单一的镜像,一键部署整个应用,大幅降低部署复杂性和时间。
  3. :globe_with_meridians: 离线部署: 支持在没有网络连接的环境中部署集群镜像。
  4. :wrench: 高度可定制: 支持用户按需定制化封装,满足不同环境和需求的部署。
  5. :earth_africa: 多环境兼容: 适用于不同的运行环境,无论是在开发、测试还是生产环境,确保一致性和稳定性。
  6. :arrows_counterclockwise: 快速迭代和版本更新 : 集群镜像中的应用大多以helm upgrade --install形式安装,便于版本快速迭代和升级。

镜像类型

kubernetes 镜像:

镜像地址 镜像名称 说明
docker.io/labring/kubernetes:<tag> kubernetes 包含containerd容器运行时
docker.io/labring/kubernetes-docker:<tag> kubernetes-docker 包含docker容器运行时
docker.io/labring/kubernetes-crio::<tag> kubernetes-crio 包含crio-o容器运行时

application 镜像:

镜像地址 镜像名称 说明
docker.io/labring/helm:<tag> helm helm二进制文件
docker.io/labring/calico:<tag> calico calico网络插件
docker.io/labring/openebs:<tag> openebs openebs存储插件
...... ......

构建方法

Sealos 在 dockerhub 中的镜像使用 github action 自动构建,社区用户可以通过创建 github ISSUE 来触发构建任务,在ISSUE中通过支持的指令结合参数构建需要的镜像和版本,版本参数请参考应用官方网站、helm 仓库或 github release 页面。

已贡献的镜像可直接点击跳转 Github ISSUE 进行新版本构建: [ :arrow_forward: ] 点击创建ISSUE

以构建新的nginx集群镜像为例,由于社区已在application目录贡献了 nginx 构建脚本的实现,只需在ISSUE里搜索标题【Auto-build】nginx,在评论框输入以下指令,结合镜像名称(固定)和镜像版本(与官方一致),即可构建出新版本的nginx集群镜像,构建完成后会自动上传至DockerHub。

示例指令如下:

/imagebuild_apps nginx v1.23.1

项目结构

镜像配置存放位置及目录结构如下:

├── applications                # 所有应用
│   ├── apisix                  # 应用名称
│   │   ├── latest              # 应用版本
│   │   │   ├── entrypoint.sh   # 安装脚本
│   │   │   ├── init.sh         # 依赖下载
│   │   │   └── Kubefile        # 镜像文件
│   │   └── README.md           # 使用说明
│   ├── argocd
│   │   ├── latest
│   │   │   ├── entrypoint.sh
│   │   │   ├── init.sh
│   │   │   └── Kubefile
│   │   └── README.md

构建规则说明:

目录结构说明:

ISSUE 支持的命令

Github ISSUE支持的命令清单如下:

命令 说明
/imagebuild_apps 构建集群应用镜像
/imagebuild_dockerimages 构建标准docker镜像
/imagesync 同步镜像,有权限控制,只有机器人可操作

本地构建示例

拉取代码到本地

$ git clone https://github.com/labring-actions/cluster-image.git

切换到集群镜像初始化脚本所在目录

$ cd cluster-image/applications/nginx/latest

执行初始化脚本下载相关依赖

$ bash init.sh amd64 nginx v1.25.6

执行sealos命令进行构建

$ sealos build -t docker.io/labring/nginx:v1.25.6 .

查看构建的镜像

$ sealos images
REPOSITORY                                                      TAG             IMAGE ID       CREATED        SIZE
docker.io/labring/nginx                                         v1.25.2         41328582759a   3 months ago   37.4 MB

ROADMAP

如何贡献

贡献流程如下:

  1. 参考 application 路径下其他应用的实现逻辑,编写自己应用的 init.sh 脚本、Kubefile以及entrypoint.sh
  2. 提出PR,合并代码到github cluster-image仓库。
  3. 创建ISSUE,并执行构建,构建成功后镜像将自动推送到官方 dockerhub 仓库。
  4. 拉取镜像到本地,使用 sealos run 命令安装运行应用。