이전에 main
branch에 병합되면 애플리케이션 이미지 생성과 배포하는 CD(build)를 구성했었습니다.
그 곳에 추가로 kubernetes 설정파일이 있는 저장소의 kustomization.yaml
파일에 새로 배포된 애플리케이션 이미지 버전을 작성하는 Deploy job을 추가해보겠습니다.
kubernetes 설정파일의 저장소에 파일을 수정해서 commit & push
하기 위해서는 GitHub에 Personal Access Tokens이 필요합니다.
여기의 내용을 보고 따라하면 됩니다.
발급된 token을 GitHub Action에서 사용하기 위해 secrets에 추가합니다.
secrets 추가 방법은 여기를 참고하세요.
Value 에 복사한 personal access token
을 삽입하고 추가합니다.
cd.yml
파일에 아래 내용을 추가 후 main
branch에 push하면 Action이 실행됩니다.
deploy:
runs-on: ubuntu-latest
# build job 완료 후 진행
needs: build
steps:
- name: Get verion
id: image
run: |
VERSION=$(echo ${{ github.sha }} | cut -c1-8)
echo VERSION=$VERSION
echo "::set-output name=version::$VERSION"
# kustomize 명령을 가져온다.
- name: Setup Kustomize
uses: imranismail/setup-kustomize@v1
- name: Checkout kustomize repository
uses: actions/checkout@v2
with:
# kubernetes 설정정보 저장소
repository: wlgns5376/example-app-kustomize
ref: dev
# 다른 저장소에 push 하려면 Personal Access Token이 필요.
token: ${{ secrets.ACTION_TOKEN }}
path: example-app-kustomize
# 새 이미지 버전으로 파일 수정
- name: Update Kubernetes resources
run: |
cd example-app-kustomize/overlays/dev/
kustomize edit set image ${{ env.IMAGE_NAME }}:${{ steps.image.outputs.version }}
cat kustomization.yaml
# 수정된 파일 commit & push
- name: Commit files
run: |
cd example-app-kustomize
git config --global user.email "github-actions@github.com"
git config --global user.name "github-actions"
git commit -am "Update image tag"
git push -u origin dev
kubernetes 설정파일 저장소에 overlays/dev/kustomization.yaml
파일이 정상적으로 수정됐는지 확인합니다.
앞서 ArgoCD에 Auto Sync가 활성화된 상태라서 동기화가 되었는지 확인해봅니다.
변경된 이미지 버전을 확인합니다.
이미 구성했던 CD를 블로그를 작성하면서 다시 구성하고 있어서 main
branch가 아닌 dev
에서 작업했습니다. GitHub에 올라간 실제 코드들은 main
기준이라서 이 내용과는 조금 다를 수 있습니다.
다음글에서는 kubernetes의 configmap과 secret을 어떻게 관리할지에 대해 알아보겠습니다.
References: