이제 camping-backend-with-go 레파지토리와 devops-camping 레파지토리를 CICD를 통해 연결하는 일만 남았다.
이렇게 하면 camping-backend-with-go에 git이 push되었을 때 CI가 돌면서 docker image가 push가 되고(tag: abcdedfg)으로 이 태그값이 devops-camping레파지토리에 helm-values/dev/ggocamping-backend/values.yaml
파일의 tag값만 수정해 줄 수있게 바꾸면 argocd에서 변화를 인지한 후 자동으로 배포가된다. 여기까지 되면 msa는 어느정도 되었다고 봐도 무방하다.
여기서 개발 덩치가 커지고 사람이 붙게 되면 Minikube로 올렸던 것들은 eks로 이관하든지 하면 될텐데 eks로 넘어가는 순간 비용 압박이 쎄게 들어오기 때문에 나는 당분간 minikube를 고수하려고한다.
마무리 작업 시작해보자.
camping-backend-with-go에서 시작한다. CI 파일만 수정하면될 것같다.
.github/workflows/buildAndPush.yml
name: Docker Image CI
on:
push:
branches: [ "main" ]
env:
GIT_TOKEN: ${{ secrets.REPO_ACCESS_TOKEN }}
TARGET_REPOSITORY: ${{ vars.DEVOPS_REPOSITORY }}
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
REPOSITORY_NAME: camping-backend-with-go
DOCKERFILE: Dockerfile
jobs:
...(중략)...
deploy:
runs-on: ubuntu-latest
needs: build-and-push
steps:
- name: checkout ${{ env.TARGET_REPOSITORY }} repository
uses: actions/checkout@v4
with:
repository: ${{ env.TARGET_REPOSITORY }}
token: ${{ env.GIT_TOKEN }}
ref: 'main'
- uses: fjogeleit/yaml-update-action@main
with:
valueFile: 'helm-values/dev/ggocamping-backend/values.yaml'
propertyPath: 'deployment.image.tag'
value: "v-${{ needs.build-and-push.outputs.SHA }}"
message: 'ci: Update airbnb-server image tag to v-${{ needs.build-and-push.outputs.SHA }}'
commitChange: true
branch: main
repository: ${{ env.TARGET_REPOSITORY }}
token: ${{ env.GIT_TOKEN }}
이렇게 파일을 수정해서 push를 해보자.
actions 다음과 같이 tag가 변한 것을 확인할 수 있다.
devops-camping repository에서도 tag값이 변한 것을 확인할 수 있다.
dockerhub에서도 마찬가지로 tag값이 일치하는지 확인하자.
피날레로 argocd에서만 확인하면 되겠다.
역시 이미지 태그가 변한 것을 확인할 수가 있다.
프로세스가 완료되지 않거나 degrade가 뜨는 이유는 이미지가 불완전해서 그런거다. 이것은 다음 포스트에서 해결하겠다.
이제 minikube로 서비스 메시를 이용하여 LoadBalancer를 붙이는 작업, 그리고 텔레포트로 인증받아서 kubernetes에 접근하는 방법, gitops를 이용한 자동배포가 완료되었다. 이제 minikube로 환경구축은 여기까지 하도록 하고 다음 부터는 Go를 이용해서 실제 API를 만들어보겠다. Go를 이용한 개발이 처음이기 때문에 좀 미숙한 부분이 있지만 그럼에도 불구하고 Go를 이용해서 개발을 해보려고 한다. 그 이유는 devops나 pipeline을 구축할 때 Go를 사용하면 편한 이유도 있고, Go와 친해지기 위해서 이기도 하다.
모니터링은 API작업이 어느정도 끝나면 다시 구축할 계획이다.
'devops > minikube' 카테고리의 다른 글
k8s와 aws rds 그리고 fiber와 연결 (0) | 2024.11.26 |
---|---|
CICD 파이프라인 수정 (0) | 2024.11.25 |
14. Docker Image를 이용한 Helm Template 수정 (31) | 2024.11.21 |
13. CI 구축 (26) | 2024.11.21 |
12. gitops로 nginx 배포 (24) | 2024.11.20 |