참고:
- 이 사용지침서에서는 Oracle Cloud에 접근해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 자격 증명, 테넌시 및 구획에 대한 예제 값을 사용합니다. 실습을 마치면 해당 값을 클라우드 환경과 관련된 값으로 대체합니다.
Kubernetes에서 OCI DevOps CI/CD 파이프라인을 사용하여 애플리케이션 배포
소개
OCI(Oracle Cloud Infrastructure) DevOps 서비스는 개발자가 소프트웨어 개발 수명 주기를 단순화하고 자동화할 수 있는 완전한 CI/CD(지속적 통합/지속적 제공) 플랫폼입니다. OCI DevOps 서비스를 통해 개발자와 운영자는 공동으로 소프트웨어를 개발, 구축, 테스트 및 배포할 수 있습니다.
목표
- OCI DevOps 빌드 파이프라인을 사용하는 방법을 알아봅니다.
- Kubernetes에서 CI/CD 파이프라인을 사용하여 간단한 NodeJs 애플리케이션을 배포합니다.
필요 조건
- DevOps 서비스가 파이프라인 실행에서 중요한 이벤트에 대한 메시지를 이 통지 토픽으로 전송할 수 있도록 토픽을 생성합니다.
- 애플리케이션이 배치될 Container Engine for Kubernetes를 생성하고 설정합니다.
- 애플리케이션 이미지를 푸시하기 위한 OCI 컨테이너 레지스트리를 생성합니다.
- 아티팩트 저장을 위한 아티팩트 레지스트리를 생성합니다.
- 로그 그룹을 생성하여 빌드 파이프라인에 대한 로깅을 사용으로 설정합니다.
작업 1: OCI DevOps 프로젝트 설정
-
DevOps 서비스 아래에서 DevOps 프로젝트 생성을 누릅니다. 프로젝트 이름을 입력하고 이전에 생성한 주제를 선택합니다.
프로젝트를 생성하면 OCI DevOps 서비스에서 사용 가능한 옵션 목록이 표시됩니다.
-
코드 저장소를 누르고 저장소 이름을 입력합니다. 코드 저장소를 설정하고 저장소에 애플리케이션 파일을 업로드합니다.
-
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" ]
-
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
-
빌드 파이프라인에는 배포 전에 소프트웨어 애플리케이션을 성공적으로 컴파일, 테스트 및 실행하기 위한 빌드 프로세스를 정의하는 단계가 포함됩니다. 빌드 파이프라인 생성을 누르고 이름을 입력합니다.
-
생성된 빌드 파이프라인에서 단계 추가를 누르고 빌드 단계 관리를 선택합니다.
-
단계 이름을 입력하고 기본 코드 저장소를 추가합니다.
-
Connection type을 OCI code repository로 선택하고 응용 프로그램 코드가 있는 code repo를 선택합니다.
-
선택을 누릅니다.
-
추가를 누릅니다.
-
-
아티팩트 추가를 누릅니다. 유형을 Container image repository로 지정하고 이전에 생성된 레지스트리의 전체 경로를 제공합니다.
-
이 단계에서는 애플리케이션 이미지 아티팩트를 컨테이너 레지스트리에 푸시합니다. 미리 생성된 빌드 파이프라인에서 아티팩트 전달 유형의 다른 단계를 추가합니다. 아티팩트 선택을 누르고 생성된 아티팩트를 선택합니다.
-
build_spec.yaml
파일에서 이 아티팩트 이름을 언급했으므로 구성/결과 아티팩트 이름 작성을 myapp-image로 제공하십시오. -
추가를 누릅니다.
-
-
다음과 같이
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
-
환경 생성을 누릅니다. 이름을 제공하고 환경 세부정보 페이지에서 애플리케이션을 배치할 OKE 클러스터를 선택합니다.
-
아티팩트에 이 매니페스트를 추가합니다. 아티팩트 추가를 누르고 유형을 Kubernetes 매니페스트로 선택합니다. 이전에 생성된 아티팩트 레지스트리 저장소를 선택합니다. Manifest 파일을 Artifact로 선택합니다. 다음 그림과 같이 양식을 채웁니다.
-
배치 파이프라인 생성을 누르고 이름을 제공합니다. 스테이지 유형 Kubernetes 클러스터에 Manifest 적용을 추가합니다. 이전 단계에서 생성된 환경 및 아티팩트를 선택합니다.
-
생성된 빌드 파이프라인에 세번째 단계를 추가합니다. 단계 유형을 전개 트리거로 선택합니다. 단계 이름을 제공하고 생성된 배치 파이프라인을 선택합니다.
-
로그를 눌러 빌드 파이프라인을 시작합니다. 로그가 저장될 로그 그룹을 제공하고 로그 사용을 누릅니다.
-
빌드 파이프라인은 다음 이미지에 표시됩니다. 수동 실행 시작을 눌러 파이프라인을 실행합니다.
파이프라인이 성공적으로 실행됩니다. 애플리케이션 접근을 위해 로드 밸런서 유형 서비스를 사용했기 때문에 로드 밸런서가 생성됩니다. 애플리케이션에 접근하기 위해 생성된 로드 밸런서의 공용 IP 주소에 접근할 수 있습니다.
관련 링크
수락
- 작성자: Nikhil Khandelwal(Enterprise Cloud Architect)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning 탐색기가 됩니다.
제품 설명서는 Oracle Help Center를 참조하십시오.
Deploy your application using OCI DevOps CI/CD pipeline on Kubernetes
F77637-01
February 2023
Copyright © 2023, Oracle and/or its affiliates.