참고:

Kubernetes에서 OCI DevOps CI/CD 파이프라인을 사용하여 애플리케이션 배포

소개

OCI(Oracle Cloud Infrastructure) DevOps 서비스는 개발자가 소프트웨어 개발 수명 주기를 단순화하고 자동화할 수 있는 완전한 CI/CD(지속적 통합/지속적 제공) 플랫폼입니다. OCI DevOps 서비스를 통해 개발자와 운영자는 공동으로 소프트웨어를 개발, 구축, 테스트 및 배포할 수 있습니다.

목표

필요 조건

작업 1: OCI DevOps 프로젝트 설정

  1. DevOps 서비스 아래에서 DevOps 프로젝트 생성을 누릅니다. 프로젝트 이름을 입력하고 이전에 생성한 주제를 선택합니다.

    DevOps 프로젝트 생성

    프로젝트를 생성하면 OCI DevOps 서비스에서 사용 가능한 옵션 목록이 표시됩니다.

    DevOps 서비스 목록

  2. 코드 저장소를 누르고 저장소 이름을 입력합니다. 코드 저장소를 설정하고 저장소에 애플리케이션 파일을 업로드합니다.

    생성 코드 저장소

  3. NodeJS 애플리케이션의 Docker 이미지를 생성하기 위한 Dockerfile을 생성하고 코드 저장소로 푸시합니다.

    FROM node:16
    
    # Create app directory
    WORKDIR /usr/src/app
    
    # Install app dependencies
    COPY package*.json ./
    
    RUN npm install
    
    # Bundle app source
    COPY . .
    
    EXPOSE 3000
    CMD [ "node", "index.js" ]
    
    
  4. build_spec.yaml라는 build specification 파일을 생성합니다. 이 파일을 저장소의 루트 디렉토리로 푸시합니다.

    version: 0.1
    component: build
    timeoutInSeconds: 6000
    runAs: root
    shell: bash      
    steps:
      - type: Command
        timeoutInSeconds: 1200
        name: "Build container image"
        command: |
          d ${OCI_WORKSPACE_DIR}/node_app
          docker build -t myapp:v1.0  .
    outputArtifacts:
     - name: myapp-image
      type: DOCKER_IMAGE
      location: myapp:v1.0
    
    

    빌드 사양

  5. 빌드 파이프라인에는 배포 전에 소프트웨어 애플리케이션을 성공적으로 컴파일, 테스트 및 실행하기 위한 빌드 프로세스를 정의하는 단계가 포함됩니다. 빌드 파이프라인 생성을 누르고 이름을 입력합니다.

    빌드 파이프라인

    1. 생성된 빌드 파이프라인에서 단계 추가를 누르고 빌드 단계 관리를 선택합니다.

    2. 단계 이름을 입력하고 기본 코드 저장소를 추가합니다.

    3. Connection type을 OCI code repository로 선택하고 응용 프로그램 코드가 있는 code repo를 선택합니다.

    4. 선택을 누릅니다.

      단계 추가

    5. 추가를 누릅니다.

  6. 아티팩트 추가를 누릅니다. 유형을 Container image repository로 지정하고 이전에 생성된 레지스트리의 전체 경로를 제공합니다.

    아티팩트 추가

  7. 이 단계에서는 애플리케이션 이미지 아티팩트를 컨테이너 레지스트리에 푸시합니다. 미리 생성된 빌드 파이프라인에서 아티팩트 전달 유형의 다른 단계를 추가합니다. 아티팩트 선택을 누르고 생성된 아티팩트를 선택합니다.

    1. build_spec.yaml 파일에서 이 아티팩트 이름을 언급했으므로 구성/결과 아티팩트 이름 작성을 myapp-image로 제공하십시오.

    2. 추가를 누릅니다.

      아티팩트 전달

  8. 다음과 같이 manifest.yaml 파일을 생성하여 Kubernetes에 애플리케이션 컨테이너를 배치합니다. 이 Manifest 파일을 생성된 아티팩트 레지스트리에 업로드합니다.

    kind: Namespace
    apiVersion: v1
    metadata:
      name: default
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: myapp-deployment
      namespace: default
    spec:
      selector:
        matchLabels:
          app: node-app
      replicas: 2
      template:
        metadata:
          labels:
            app: node-app
        spec:
          containers:
            - name: node-app
              image: iad.ocir.io/orasenatdpltintegration03/demo-registry:latest
              imagePullPolicy: Always
              ports:
                - name: containerport
                  containerPort: 8080
                  protocol: TCP
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: myapp-service
      namespace: default
      annotations:
        oci.oraclecloud.com/load-balancer-type: "lb"
    spec:
      type: LoadBalancer
      ports:
        - name: nodejs-port
          port: 80
          targetPort: 3000
          protocol: TCP
      selector:
        app: node-app
    
    

    매니페스트 파일 만들기

  9. 환경 생성을 누릅니다. 이름을 제공하고 환경 세부정보 페이지에서 애플리케이션을 배치할 OKE 클러스터를 선택합니다.

    환경 생성

  10. 아티팩트에 이 매니페스트를 추가합니다. 아티팩트 추가를 누르고 유형을 Kubernetes 매니페스트로 선택합니다. 이전에 생성된 아티팩트 레지스트리 저장소를 선택합니다. Manifest 파일을 Artifact로 선택합니다. 다음 그림과 같이 양식을 채웁니다.

    아티팩트에 매니페스트 추가

  11. 배치 파이프라인 생성을 누르고 이름을 제공합니다. 스테이지 유형 Kubernetes 클러스터에 Manifest 적용을 추가합니다. 이전 단계에서 생성된 환경 및 아티팩트를 선택합니다.

    배치 파이프라인 생성

  12. 생성된 빌드 파이프라인에 세번째 단계를 추가합니다. 단계 유형을 전개 트리거로 선택합니다. 단계 이름을 제공하고 생성된 배치 파이프라인을 선택합니다.

    배치 파이프라인 추가

  13. 로그를 눌러 빌드 파이프라인을 시작합니다. 로그가 저장될 로그 그룹을 제공하고 로그 사용을 누릅니다.

    로그 사용

  14. 빌드 파이프라인은 다음 이미지에 표시됩니다. 수동 실행 시작을 눌러 파이프라인을 실행합니다.

    파이프라인 시작

파이프라인이 성공적으로 실행됩니다. 애플리케이션 접근을 위해 로드 밸런서 유형 서비스를 사용했기 때문에 로드 밸런서가 생성됩니다. 애플리케이션에 접근하기 위해 생성된 로드 밸런서의 공용 IP 주소에 접근할 수 있습니다.

성공 파이프라인

수락

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning 탐색기가 됩니다.

제품 설명서는 Oracle Help Center를 참조하십시오.