9장. 배포
9.1. Deployments 작동 방식
9.1.1. 배포란 무엇입니까?
OpenShift Container Platform 배포는 일반적인 사용자 애플리케이션에 대한 세분화된 관리를 제공합니다. 다음 세 가지 API 오브젝트를 사용하여 설명합니다.
- 애플리케이션의 특정 구성 요소에 대한 원하는 상태를 Pod 템플릿으로 설명하는 배포 구성입니다.
- 배포 구성 상태에 대한 시점 레코드가 Pod 템플릿으로 포함된 하나 이상의 복제 컨트롤러입니다.
- 하나 이상의 Pod: 특정 버전의 애플리케이션 인스턴스를 나타냅니다.
사용자는 배포 구성에서 소유한 복제 컨트롤러 또는 Pod를 조작할 필요가 없습니다. 배포 시스템을 통해 배포 구성 변경 사항이 적절하게 전파됩니다. 기존 배포 전략이 사용 사례에 적합하지 않고 배포 라이프사이클 동안 수동 단계를 실행할 필요가 있는 경우 사용자 정의 전략을 생성해야 합니다.
배포 구성을 생성하면 배포 구성의 Pod 템플릿을 나타내는 복제 컨트롤러가 생성됩니다. 배포 구성이 변경되면 최신 Pod 템플릿을 사용하여 새 복제 컨트롤러가 생성되고 배포 프로세스가 실행되어 이전 복제 컨트롤러를 축소하고 새 복제 컨트롤러를 확장합니다.
애플리케이션 인스턴스는 생성 시 서비스 로드 밸런서와 라우터 모두에서 자동으로 추가 및 제거됩니다. 애플리케이션에서 TERM 신호를 수신할 때 정상 종료 를 지원하는 경우 실행 중인 사용자 연결을 정상적으로 완료할 수 있는 기회를 제공할 수 있습니다.
배포 시스템에서 제공하는 기능:
9.1.2. 배포 구성 생성
배포 구성은 다른 모든 리소스와 마찬가지로 oc
명령으로 관리할 수 있는 deploymentConfig
OpenShift Container Platform API 리소스입니다. 다음은 deploymentConfig
리소스의 예입니다.
kind: "DeploymentConfig" apiVersion: "v1" metadata: name: "frontend" spec: template: 1 metadata: labels: name: "frontend" spec: containers: - name: "helloworld" image: "openshift/origin-ruby-sample" ports: - containerPort: 8080 protocol: "TCP" replicas: 5 2 triggers: - type: "ConfigChange" 3 - type: "ImageChange" 4 imageChangeParams: automatic: true containerNames: - "helloworld" from: kind: "ImageStreamTag" name: "origin-ruby-sample:latest" strategy: 5 type: "Rolling" paused: false 6 revisionHistoryLimit: 2 7 minReadySeconds: 0 8
- 1
프론트엔드
배포 구성의 포드 템플릿은 간단한 Ruby 애플리케이션을 설명합니다.- 2
frontend
에는 5개의 복제본이 있습니다.- 3
- 포드 템플릿이 변경될 때마다 구성 변경 트리거 를 통해 새 복제 컨트롤러가 생성됩니다.
- 4
origin-ruby-sample:latest
이미지 스트림 태그의 새 버전을 사용할 수 있을 때마다 이미지 변경 트리거 트리거를 통해 새 복제 컨트롤러가 생성됩니다.- 5
- 롤링 전략은 Pod를 배포하는 기본 방법입니다. 생략될 수 있습니다.
- 6
- 배포 구성을 일시 중지합니다. 이렇게 하면 모든 트리거의 기능을 비활성화하고 실제로 롤아웃하기 전에 Pod 템플릿에서 여러 변경 사항이 가능합니다.
- 7
- 리버전 내역 제한은 롤백을 위해 유지하려는 이전 복제 컨트롤러의 제한입니다. 생략될 수 있습니다. 생략하면 이전 복제 컨트롤러가 정리되지 않습니다.
- 8
- Pod가 사용 가능한 것으로 간주될 때까지 대기하는 최소 시간( readiness 검사 후)입니다. 기본값은 0입니다.