본문으로 건너뛰기

간단한 GitOps 환경 구축 (1) - Git을 이용한 이미지 업로드

간단한 GitOps 환경을 구축하기 위해 먼저 Git을 통해 컨테이너 이미지를 업로드합니다. 프로젝트 도커 파일을 빌드하고 비공개 컨테이너 레지스트리에 이미지를 업로드하는 핸즈온 시나리오입니다.

안내
  • 예상 소요 시간: 20분
  • 사용자 환경
    • 권장 운영 체제: any
    • Region: kr-central-1
  • 사전 준비 사항

Step 1. 컨테이너 레지스트리 생성

컨테이너 레지스트리를 이용하여 쿠버네티스에 배포할 컨테이너 이미지를 보관하여 활용할 수 있습니다.

  1. 카카오클라우드 콘솔 > Container Registry 메뉴에서 Repository(이하 Repo)를 생성할 수 있습니다. 아래 정보를 확인하여 Repository를 생성합니다.

    구분Repository 설정값
    공개 여부비공개
    리포지토리 이름hands-on
    태그 덮어쓰기가능
    이미지 스캔자동

    Container Registry에서 Repository 생성

  2. Container Registry에서 생성된 Repository를 확인합니다.

Step 2. git-action 설정

예제 프로젝트 Fork하기

진행을 위해 개인 깃허브 환경에 예제 프로젝트 Repository(이하 Repo)가 필요합니다. 아래 예제 Repo를 개인 깃허브 환경으로 Fork합니다.

https://github.com/kakaoenterprise/kic-library-monolithic

Action 파일 작성하기

github-action 실행에 사용할 Secret 정보를 작성합니다.

  1. Repo 관리 페이지 > Settings 탭으로 이동합니다.

    리포지토리 설정

  2. Security > Secrets and variables > Actions 메뉴로 이동합니다. 해당 메뉴에서 action에서 사용할 환경 변수와 Secret 정보를 관리할 수 있습니다. 아래 표를 확인하여 새로운 Secret 정보를 추가합니다.

    이름비밀 정보
    PROJECT_NAME카카오클라우드 콘솔의 프로젝트 이름
    ACCESS_KEY액세스 키
    ACCESS_SECRET_KEY보안 액세스 키
    REPOSITORY_NAME컨테이너 리포지토리 이름
  3. Fork된 Repo 페이지에 접속하여 main 브랜치에 github-action 설정 파일을 작성합니다. Repo 루트 경로에서 .github/workflows/action.yaml 파일을 생성하고 아래 내용을 복사해 붙여 넣습니다.

    name: KakaoCloud-handson
    run-name: KakaoCloud handson workflow
    on: [push]

    jobs:
    deploy-image:
    runs-on: ubuntu-latest
    steps:
    - name: Set up Qemu
    uses: docker/setup-qemu-action@v2

    - name: Login KakaoCloud
    uses: docker/login-action@v2
    with:
    registry: ${{ secrets.PROJECT_NAME }}.kr-central-1.kcr.dev
    username: ${{ secrets.ACCESS_KEY }}
    password: ${{ secrets.ACCESS_SECRET_KEY }}

    - name: Set ENV
    run: echo "TIME=$(date "+%Y-%m-%d-%H-%M")" >> $GITHUB_ENV

    - name: Build and Push
    uses: docker/build-push-action@v4
    with:
    push: true
    tags: ${{ secrets.PROJECT_NAME }}.kr-central-1.kcr.dev/${{ secrets.REPOSITORY_NAME }}/kep-library:${{ env.TIME }}
안내

해당 Repo에 Push 이벤트가 발생하면 다음 작업이 진행됩니다.

  1. qemu 세팅
  2. 카카오클라우드 비공개 컨테이너 레지스트리에 인증 진행
  3. 현재 시간을 태그 변수로 설정
  4. 프로젝트의 도커 파일을 통해 빌드하고 이미지를 컨테이너 레지스트리에 배포

결과 확인

  1. Repo에 Push 이벤트를 발생시키고 결과를 확인합니다. 결과 확인까지 시간이 소요될 수 있습니다.

    결과 확인

  2. 카카오클라우드 콘솔 > Container Registry 메뉴에서 이미지가 업로드되었는지 확인합니다.