Menu Close

3.5.5. odo deploy

odo 는 CI/CD 시스템을 사용하여 배포 방법과 유사한 방식으로 구성 요소를 배포하는 데 사용할 수 있습니다. 먼저 odo 는 컨테이너 이미지를 빌드한 다음 구성 요소를 배포하는 데 필요한 Kubernetes 리소스를 배포합니다.

odo deploy 명령을 실행하면odo 가 devfile에 배포된 기본 배포 명령을 검색하고 이 명령을 실행합니다. kind 배포는 버전 2.2.0부터 devfile 형식에서 지원됩니다.

일반적으로 deploy 명령은 여러 개의 apply 명령으로 구성된 복합 명령입니다.

  • 적용되는 이미지 구성 요소를 참조하는 명령은 배포할 컨테이너 이미지를 빌드한 다음 레지스트리에 푸시합니다.
  • Kubernetes 구성 요소를 참조하는 명령은 클러스터에 Kubernetes 리소스를 생성합니다.

다음 예제 devfile.yaml 파일을 사용하면 디렉터리에 있는 Dockerfile 을 사용하여 컨테이너 이미지가 빌드됩니다. 이미지가 레지스트리로 푸시된 다음 이 새로 빌드된 이미지를 사용하여 클러스터에 Kubernetes 배포 리소스가 생성됩니다.

schemaVersion: 2.2.0
[...]
variables:
  CONTAINER_IMAGE: quay.io/phmartin/myimage
commands:
  - id: build-image
    apply:
      component: outerloop-build
  - id: deployk8s
    apply:
      component: outerloop-deploy
  - id: deploy
    composite:
      commands:
        - build-image
        - deployk8s
      group:
        kind: deploy
        isDefault: true
components:
  - name: outerloop-build
    image:
      imageName: "{{CONTAINER_IMAGE}}"
      dockerfile:
        uri: ./Dockerfile
        buildContext: ${PROJECTS_ROOT}
  - name: outerloop-deploy
    kubernetes:
      inlined: |
        kind: Deployment
        apiVersion: apps/v1
        metadata:
          name: my-component
        spec:
          replicas: 1
          selector:
            matchLabels:
              app: node-app
          template:
            metadata:
              labels:
                app: node-app
            spec:
              containers:
                - name: main
                  image: {{CONTAINER_IMAGE}}