Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

9.3.5. 라이프사이클 후크

재생성롤링 전략에서는 라이프사이클 후크를 지원하므로 전략 내의 사전 정의된 지점에서 해당 동작을 배포 프로세스에 삽입할 수 있습니다.

다음은 pre 라이프사이클 후크의 예입니다.

pre:
  failurePolicy: Abort
  execNewPod: {} 1

모든 후크에는 후크에 오류가 발생했을 때 전략에서 취해야 하는 작업을 정의하는 failurePolicy 가 있습니다.

Abort

후크가 실패하면 배포 프로세스가 실패로 간주됩니다.

Retry

성공할 때까지 후크를 다시 실행합니다.

Ignore

모든 후크 오류를 무시하고 배포를 계속 진행합니다.

후크에는 후크 실행 방법을 설명하는 유형별 필드가 있습니다. 현재 Pod 기반 후크execNewPod 필드에서 지정하는 유일한 후크 유형입니다.

9.3.5.1. Pod 기반 라이프사이클 후크

Pod 기반 라이프사이클 후크는 배포 구성의 템플릿에서 파생된 새 Pod에서 후크 코드를 실행합니다.

간소화된 다음 예제 배포 구성에서는 롤링 전략을 사용합니다. 간결성을 위해 트리거 및 몇 가지 기타 사소한 세부 정보는 생략되었습니다.

kind: DeploymentConfig
apiVersion: v1
metadata:
  name: frontend
spec:
  template:
    metadata:
      labels:
        name: frontend
    spec:
      containers:
        - name: helloworld
          image: openshift/origin-ruby-sample
  replicas: 5
  selector:
    name: frontend
  strategy:
    type: Rolling
    rollingParams:
      pre:
        failurePolicy: Abort
        execNewPod:
          containerName: helloworld 1
          command: [ "/usr/bin/command", "arg1", "arg2" ] 2
          env: 3
            - name: CUSTOM_VAR1
              value: custom_value1
          volumes:
            - data 4
1
helloworld 이름은 spec.template.spec.containers[0].name을 나타냅니다.
2
commandopenshift/origin-ruby-sample 이미지로 정의된 모든 ENTRYPOINT를 재정의합니다.
3
env는 후크 컨테이너의 선택적 환경 변수 세트입니다.
4
volume은 후크 컨테이너의 선택적 볼륨 참조 세트입니다.

이 예제에서 pre 후크는 helloworld 컨테이너의 openshift/origin-ruby-sample 이미지를 사용하여 새 Pod에서 실행됩니다. 후크 Pod에는 다음과 같은 속성이 있습니다.

  • 후크 명령은 /usr/bin/command arg1 arg2 입니다.
  • 후크 컨테이너에는 CUSTOM_VAR1=custom_value1 환경 변수가 있습니다.
  • 후크 실패 정책은 Abort 이며, 후크가 실패하면 배포 프로세스가 실패합니다.
  • 후크 포드는 배포 구성 포드의 데이터 볼륨을 상속합니다.