so1s / so1s-backend

MLOps 컴포넌트 프로비저닝 / 매니지먼트 API 서버
Apache License 2.0
8 stars 2 forks source link

Container Build Tool 사용 이슈 #12

Closed NEM-NE closed 2 years ago

NEM-NE commented 2 years ago

내용

현재 이미지 Job 빌드 과정 중 docker socket을 사용하여 빌드하고 있습니다. 그러나 현재 EC2 인스턴스에는 도커가 설치되어 있지 않기 때문에 프로비저닝을 할 필요가 있어보입니다. 혹은 Kaniko 컨테이너 파드를 사용하여 빌드를 할 지 결정을 해야할 거 같습니다.


    final Job job = new JobBuilder()
        .withApiVersion("batch/v1")
        .withNewMetadata()
        .withName(jobName)
        .withNamespace(namespace)
        .addToLabels("job-name", jobName)
        .endMetadata()
        .withNewSpec()
        .withNewTemplate()
        .withNewSpec()
        .addNewContainer()
        .withName(jobName)
        .withImage("so1s/" + library + "-build:v1")
        .withCommand("/bin/sh", "/apps/build.sh", model.getName().toLowerCase(), version,
            "vkxmxkdlaj")
        .withVolumeMounts(
            new VolumeMountBuilder()
                .withMountPath("/var/run/docker.sock")
                .withName("docker-sock")
                .build())
        .endContainer()
        .withTolerations(new TolerationBuilder()
            .withKey("kind")
            .withOperator("Equal")
            .withValue("api")
            .withEffect("Noschedule")
            .build())
        .withVolumes(new VolumeBuilder()
            .withName("docker-sock")
            .withHostPath(new HostPathVolumeSourceBuilder()
                .withPath("/var/run/docker.sock")
                .build())
            .build())
        .withRestartPolicy("Never")
        .endSpec()
        .endTemplate()
        .withBackoffLimit(5)
        .endSpec()
        .build();
NEM-NE commented 2 years ago

릴리즈1 때는 EC2에 도커가 설치된 이미지를 사용하기로 결정 릴리즈2 때는 Kaniko를 활용하여 별도의 설치 이미지 없이 사용하기로 결정

NEM-NE commented 2 years ago

@DPS0340 @shinilseop 참고 부탁드립니다

shinilseop commented 2 years ago

이 이슈는 현재 도커 소켓이 있어서 사용하는걸로 변경하나요 ? 아니면 추가적인 논의가 필요할까요 ??

NEM-NE commented 2 years ago

bentoml 1.0 업그레이드 및 추가 설정으로 해결했습니다!