주:

GitLab CI/CD에서 OCI Container Engine for Kubernetes에 배포

소개

빠르게 진화하는 DevOps 및 클라우드 네이티브 개발 환경에서는 버전 제어 시스템과 컨테이너 통합관리 플랫폼 간의 간소화된 통합이 중요할 수 있습니다. Oracle Cloud Infrastructure Container Engine for Kubernetes(OKE)는 컨테이너화된 애플리케이션을 관리하기 위한 강력하고 확장 가능한 솔루션을 제공합니다. 그러나 일부 팀은 Oracle Cloud Infrastructure(OCI) 네이티브 DevOps 서비스를 대체할 수 있는 구체적인 선호도와 요구 사항을 가지고 있을 수 있습니다.

GitLab 다용도 종합적인 버전 관리와 지속적인 통합 및 CI/CD(지속적인 제공/배포) 플랫폼으로, 이러한 기본 설정을 충족할 뿐만 아니라 OCI DevOps 서비스 대신 강력한 대안을 제공합니다. 이 사용지침서에서는 GitLab를 OKE(Oracle Cloud Infrastructure Container Engine for Kubernetes)에 원활하게 연결하는 프로세스를 안내합니다. 이 자습서에 나와 있는 통합은 기존 GitLab 솔루션을 사용할 수 있도록 조정될 뿐만 아니라 버전 제어, 지속적인 통합 및 Kubernetes 통합관리를 위한 통합 솔루션을 팀에 제공합니다.

다음 절에서는 이 자습서에서는 이 통합을 수행하기 위한 두 가지 고유한 접근 방식을 소개합니다.

목표

필요 조건

접근 방법 1: 단기 생성 토큰을 사용하여 GitLab CI/CD에서 OKE에 배포

작업 1: OCI 컴퓨트 인스턴스 준비

GitLab 러너(예: VM(가상 머신)의 경우 OCI 컴퓨트 인스턴스가 필요합니다.

OCI 컴퓨트 인스턴스

  1. VM에 kubectl을 설치합니다. 자세한 내용은 Linux에서 kubectl 설치 및 설정을 참조하십시오.

  2. OCI CLI를 설치하고 OCI 테넌시에 대한 인증용 구성 파일을 생성합니다. 또는 클러스터 액세스 단계를 실행할 때 생성하라는 메시지가 표시됩니다. 자세한 내용은 OCI CLI 설치SDK 및 CLI 구성 파일을 참조하십시오.

  3. OKE 클러스터에 대한 액세스를 설정합니다. 클러스터 액세스로 이동하고 OCI 콘솔에서 로컬 액세스 지침을 누릅니다.

    OCI OKE 액세스 클러스터

  4. VM에 GitLab Runner를 설치합니다. 다음 명령을 root로 실행합니다.

    sudo curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
    sudo yum install -y gitlab-runner
    

    GitLab Runner가 작동하는지 확인합니다.

    gitlab-runner list
    

작업 2: GitLab 실행자 및 프로젝트 구성

  1. GitLab에 로그인하고 프로젝트로 이동하여 새 프로젝트를 생성하거나 기존 프로젝트를 사용합니다.

    GitLab 프로젝트

  2. 러너를 생성하거나 기존 러너를 사용합니다. 새 실행기를 만들려면 설정, CI/CD, 실행자확장으로 이동합니다. 새 프로젝트 실행기를 누르고 플랫폼(예: Linux)을 선택하고, 배치 파이프라인을 구성할 때 나중에 .gitlab-ci.yaml 파일에서 사용할 태그를 추가한 다음 실행기 생성을 누릅니다.

    GitLab 실행기

  3. VM에 러너를 등록합니다.

    주: 나중에 필요할 경우 실행자 인증 토큰을 기록해 두십시오.

    러너 등록

    • gitlab-runner register 명령을 실행하고 다음 정보를 입력합니다.

      • GitLab 인스턴스 URL: 기본값 https://gitlab.com를 적용합니다.
      • 실행기 이름: config.toml 파일에서 로컬로 유효합니다. 예: gitlab-oke-runner.
      • 실행기 입력: , 이 값과 함께 CI/CD 지침이 kubectl 및 OCI CLI가 설치된 로컬 시스템에서 실행되도록 선택합니다.

      러너 등록

    • $HOME/.gitlab-runner/config.toml 파일에서 실행기 구성을 검토할 수 있습니다.

작업 3: CI/CD 파이프라인 설정

  1. GitLab 프로젝트를 로컬 시스템에 복제합니다.

  2. 빌드 및 배치 지침이 포함된 .gitlab-ci.yaml 파일을 프로젝트 디렉토리에 생성합니다. 배치 섹션에서 이전에 실행자를 생성할 때 설정한 실행자 태그를 포함해야 합니다.

    $ cat ~/demo-oke/.gitlab-ci.yml
    stages:
      - build
      - deploy
    
    build_job:
      stage: build
      script:
        - echo "Building the ServiceAccount project..."
    
    deploy_job:
      stage: deploy
      script:
        - echo "Deploying an nginx pod to the OKE cluster"
        - kubectl run nginx --image=nginx
      tags:
        - shell-executor
    
  3. GitLab 프로젝트에 대한 변경사항을 푸시하고 빌드작업으로 이동하여 빌드 및 배치 파이프라인이 성공적으로 트리거되고 실행되었는지 확인합니다.

    CICD 파이프라인

    배치 작업

    파이프라인이 OKE 클러스터에 nginx pod를 배포했습니다.

    참고: 태그와 키를 메모해 두십시오. 로컬 시스템 리소스를 사용할 셸 실행기를 선택합니다. 그렇지 않으면 예를 들어 Docker를 선택하는 경우 지침에 kubectl(및 접근 방식 1의 경우 OCI CLI)을 컨테이너에 설치하는 이미지를 제공해야 합니다.

    $ kubectl get pods
    NAME    READY   STATUS    RESTARTS   AGE
    nginx   1/1     Running   0          47h
    

접근 방법 2: Kubernetes 서비스 계정을 사용하여 GitLab CI/CD에서 OKE에 배치

Approach 1에서 Tasks 1,2 및 3을 반복하여 로컬 VM(kubectl, OCI CLI, GitLab Runner 설치), Runner 등록, 파이프라인 파일 .gitlab-ci.yaml 생성 등을 수행합니다.

작업 1: Kubernetes 서비스 계정 생성 및 해당 토큰 추가

Kubernetes 서비스 계정을 사용하여 GitLab에서 OKE에 배치하는 경우 이 프로세스에는 서비스 계정 인증서를 사용하여 Kubernetes 클러스터로 GitLab를 인증하는 작업이 포함됩니다.

다음 단계

이 태스크를 사용하여 GitLab CI/CD 파이프라인을 사용하여 OKE에 배포할 수 있습니다. 이러한 작업은 다른 CI/CD 도구에 대한 참조로 수행할 수 있습니다. 이 통합은 지속적인 통합 및 제공을 지원하므로 애플리케이션을 빠르게 반복하고 OKE에 배포할 수 있습니다.

이 자습서에서는 지침이 셸 실행기를 사용하여 정방향 시나리오를 테스트하고 처리합니다. 다른 실행기(예: Docker 실행기)를 선택할 수도 있습니다. 이 경우 파이프라인은 로컬 시스템이 아닌 Docker 컨테이너 내에서 실행됩니다. Docker 실행기로 실행하려면 필요한 유틸리티가 포함된 Docker 이미지를 지정해야 합니다. 따라서 특정 파이프라인 요구 사항을 충족하기 위해 kubectl 및 OCI CLI와 같은 도구를 통합하여 사용자 정의 이미지를 만드는 것이 필수적일 수 있습니다.

수락

추가 학습 자원

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

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