티스토리 뷰

반응형

kubernetes pod 를 구성하다보면 복잡한 쉘스크립트를 실행하는 컨테이너를 만들고 싶은 경우가 있다.

하지만, 실행명령을 여러줄로 쪼개서 선언하는 패턴만 보여서 기냥 쉘스크립트를 configMap 에 넣고 볼륨마운트 하거나, 쉘스크립트를 볼륨에 넣어서 실행할까? 고민을 하는데 그렇게 하지 않고 바로 선언하는것도 가능하다.

 

구성예시

가장 심플하게 alpine 이미지로 카운트 다운하는 쉘스크립트를 표현하고 싶다고 가정하겠다.

apiVersion: v1
kind: Pod
metadata:
  name: sample-multiline-shellscript
spec:
  restartPolicy: OnFailure
  containers:
    - name: run
      image: alpine:latest
      command:
        - sh
        - "-c"
        - |          
          sh <<'EOF'
          ### 사용자 명령어 시작
          COUNT_DOWN=10
          while [ $COUNT_DOWN -gt 0 ]; do
            echo "HELLO! COUNT DOWN = ${COUNT_DOWN}"
            COUNT_DOWN=$(expr ${COUNT_DOWN} - 1)
            sleep 1
          done
          ### 사용자 명령어 끝
          EOF

 

실제 실행 예시

위와 같은 POD 를 구성하고 실행한다면 아래와 같이 실행되었음을 알 수 있다.

(base) tost@AL02025409 chart % kubectl apply -f count_down.yaml 
pod/sample-multiline-shellscript created

(base) tost@AL02025409 chart % kubectl get pods sample-multiline-shellscript  
NAME                           READY   STATUS      RESTARTS   AGE
sample-multiline-shellscript   0/1     Completed   0          19s

(base) tost@AL02025409 chart % kubectl logs sample-multiline-shellscript  
HELLO! COUNT DOWN = 10
HELLO! COUNT DOWN = 9
HELLO! COUNT DOWN = 8
HELLO! COUNT DOWN = 7
HELLO! COUNT DOWN = 6
HELLO! COUNT DOWN = 5
HELLO! COUNT DOWN = 4
HELLO! COUNT DOWN = 3
HELLO! COUNT DOWN = 2
HELLO! COUNT DOWN = 1
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함