ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • scdf 배치 task 실행시 볼륨과 함께 initContainer 실행시키기
    카테고리 없음 2024. 7. 14. 14:36

    Spring Cloud Data Flow(SCDF)는 배치 작업과 스트리밍 작업을 관리하고 실행할 수 있는 플랫폼이다. 이 중 배치 작업(Task)을 실행할 때, 경우에 따라 특정 작업이 실행되기 전에 미리 설정해야 할 작업이 있을 수 있다. 이를 위해 Kubernetes 환경에서는 initContainer와 함께 필요한 볼륨을 설정하여 작업을 준비할 수 있다.

     

     

    배치 작업에서 볼륨과 initContainer 사용하기

     

    배치 작업에서 볼륨을 사용하여 데이터를 저장하거나 공유하고, initContainer를 이용해 그 데이터를 미리 세팅할 수 있다. 예를 들어, 배치 작업이 실행되기 전에 로그 파일을 생성하거나, 모니터링을 위한 환경을 준비하는 데 활용할 수 있다.

    다음은 Spring Cloud Data Flow에서 배치 Task를 실행할 때, 볼륨과 함께 initContainer를 설정하는 예시이다.

     

     

    1. scdf helm values 파일 수정하여 Task가 실행되는 동안 사용할 임시 볼륨을 설정한다. emptyDir 볼륨은 Pod가 실행되는 동안에만 존재하며, Pod가 종료되면 해당 볼륨도 함께 삭제된다. Task가 일시적으로 데이터를 저장하거나 공유할 때 적합하다.

    deployer:
      volumeMounts:
        - name: share-vol
          mountPath: /share-vol
      volumes:
        - name: share-vol
          emptyDir:
            medium: ""
            sizeLimit: "500Mi"

     

     

    2. initContainer 설정

     

    - dataflow launch 시에 properties 값 추가

      val properties = mapOf(
                "deployer.${taskName}.kubernetes.initContainer" to INIT_CONTAINER_PROPERTY
            )
    
            return dataflowTaskClient.launchV2(taskName, properties, arguments)
            ..
            
    
            const val INIT_CONTAINER_PROPERTY = """
            {
                "containerName": "test-container",
                "environmentVariables": ['TEST=test'],
                "imageName": "imageName: 'busybox:latest",
                "volumeMounts": [
                    {
                        "name": "share-vol",
                        "mountPath": "/share-vol"
                    }
                ]
            }
            
        """

     

     

     

    https://docs.spring.io/spring-cloud-dataflow/docs/current/reference/htmlsingle/#_init_containers

     

     

    Spring Cloud Data Flow Reference Guide

    You can also tap into various task and batch events when the task is launched. If the task is enabled to generate task or batch events (with the additional dependencies of spring-cloud-task-stream and, in the case of Kafka as the binder, spring-cloud-strea

    docs.spring.io

     

     

Designed by Tistory.