UnSimple image builder

Unsimple image builder

보통 gii source 기반 이미지 빌드는 Jenkins 빌드파이프라인이나, Argocd 등을 이용하지만 임의로 이미지 빌드 등이 필요한 경우 수동 처리의 귀찮음을 해결하기 위한 도구.

쉽게 말해 매번 docker build -t registry.address/project/category/image_name:tag-tagnumber 명령을 입력하기 귀찮아서 만든 도구.

대강 구성도

                         ┌─────────────────────────────────────────────┐
                         │          Git Image WebBuilder               │
                         │          :8888 (Flask + gunicorn)           │
                         │                                             │
                         │  ┌─────────┐ ┌─────────┐ ┌───────────────┐ │
                         │  │ Sources │ │ Builder │ │   Scripts     │ │
                         │  │         │ │         │ │               │ │
                         │  │Registry │ │Build    │ │Registered     │ │
                         │  │Git Svr  │ │Push     │ │Ad-hoc (SSH)   │ │
                         │  └─────────┘ │Rollout  │ └───────────────┘ │
                         │              └────┬────┘                   │
                         │   ┌───────────────┼───────────────┐        │
                         │   │  SQLite DB    │  Build Logs   │        │
                         │   │  (builder.db) │  (data/)      │        │
                         │   └───────────────┴───────────────┘        │
                         └──────┬──────────┬──────────┬───────────────┘
                                │          │          │
                 ┌──────────────┘          │          └──────────────┐
                 │                         │                         │
                 ▼                         ▼                         ▼
    ┌────────────────────┐   ┌──────────────────────┐   ┌──────────────────┐
    │   Git Server       │   │   Docker Daemon      │   │  K8s Cluster     │
    │                    │   │                      │   │                  │
    │  Forgejo / GitHub  │   │  docker build        │   │  kubectl rollout │
    │  Gitea / GitLab    │   │  docker push         │   │  restart         │
    │                    │   │                      │   │  status / pods   │
    │  SSH clone ──┐     │   │         │            │   │                  │
    │  HTTP clone ─┤     │   │         ▼            │   └──────────────────┘
    └──────────────┘     │   │  ┌──────────────┐    │
                         │   │  │  Registry    │    │
                         │   │  │  Harbor /    │    │
                         │   │  │  DockerHub   │    │
                         │   │  └──────────────┘    │
                         │   └──────────────────────┘
                         │
                ┌────────┴─────────┐
                │  Build Pipeline  │
                │                  │
                │  1. git clone    │
                │  2. Dockerfile ? │
                │  3. docker login │
                │  4. docker build │
                │  5. docker push  │
                │  6. rollout      │
                │     (optional)   │
                └──────────────────┘

다운로드

사용법

기본적으로 git에 등록된 branch를 Unsimple image builder로 클론.
클론된 파일의 Dockerfile을 기반으로 이미지를 빌드한다.
연결된 image registry에 자동 push, 등록된 k8s 클러스터의 디플로이먼트(deployment, statefulset) rollout 명령 까지 날릴 수 있다.

답글 남기기