helm template 수정
·
devops/minikube
지금까지 Helm으로 배포할 때는 환경변수를 고려하게 세팅되어 있지 않았다. 환경변수를 쿠버네티스의 secret형태로 넣어서 DB 정보를 추가하여 camping-backend가 aws rds와 통신하는 것을 목표로 하겠다. 그럴려며 우선 Helm 차트를 가져와야 하겠다.$ helm repo add ggocamping https://chart.ggocamping.com/devopscharts/$ helm repo updateHang tight while we grab the latest from your chart repositories......Successfully got an update from the "ggocamping" chart repositoryUpdate Complete. ⎈Happy H..
k8s와 aws rds 그리고 fiber와 연결
·
devops/minikube
kubernetes는 현재 public subnet에 존재하고, Database는 Private Subnet에 존재한다. 같은 VPC에 존재하긴 하지만 이 Database에 연결학 위해서는 public subnet에 있는 인스턴스(proxy 역할)를 통해 연결하거나, 새로운 proxy server를 만들어서 DB에 접근해야한다. 물론 NAT Gateway를 이용하는 방법도 있다. 나는 비용을 최소화 해야 하기 때문에.. 역시 기존에 올린 Teleport Proxy를 이용해서 Private Subnet에 있는 DB와 연결했다.  먼저 teleport로 로그인하자.tsl은 없는 명령어이고 편의상 만든 함수이다. 이 함수에 대한 설명은 이전 포스팅을 참고하면된다. 간단히 설명하면tsh 로 내가 만든 proxy..
CICD 파이프라인 수정
·
devops/minikube
1. 문제가 생겼다.CICD를 생성하는 과정에서 fjogeleit/yaml-update-action@main 를사용하게 되면 deploy될 때 주석이 다 사라지고, 공백이 다 지워져서 파일 관리에 어려움이 있다. 이 문제를 해결하려고 봤더니 이 action은 주석을 제거하는 것으로 알려져 있다고한다. 그래서 고민하는 끝에 pipe라인을 바꾸기로 했다.2. pipeline을 바꾸자.조금 돌아가긴 하지만 yq를 이용해서 해결하려고 했다. yq를 통해서 yaml을 바꾸고 commit / push pipeline을 만들어서 사용하기로 한다.  deploy: runs-on: ubuntu-latest needs: build-and-push steps: - name: checkout ${{ e..
15. CICD 구축(마무리)
·
devops/minikube
이제 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로 이관하든지 하면 될텐데 ek..
14. Docker Image를 이용한 Helm Template 수정
·
devops/minikube
1. Helm template 만들기devops-camping repository에서 진행하도록 하겠다. devops에 관련된 모든 자료는 여기서 관리할 것이기 때문이다. 다음을 실행하여 차트의 뼈대를 구성한다.$ cd devopscharts$ helm create ggocamping-backend$ cd ggocamping-backend$ rm -rf templates/NOTES.txt \ templates/deployment.yaml \ templates/hpa.yaml \ templates/ingress.yaml \ templates/service.yaml \ templates/serviceaccount.yaml \ ..
13. CI 구축
·
devops/minikube
argocd로 git도 연동했겠다. 본격적인 개발을 위해 CI를 짜겠다.이걸 하는 이유는  1. 내가 개발을 완료하여 git에 push를 하고2. 이 git push 내용을 image로 말아 올리고3. 이 image를 argocd가 최신으로 받아오게 업데이트도 해야 하고4. 잘 작동되었는지 모니터링도 해야한다. 이 4가지 혹은 그 이상의 단계를 진행해야 할지도 모른다. 이 것을 매번 하는건 매우 곤혹스러운 일이다.   gitlab으로 CI를 구성할수도 있고, container 이미지는 ECR을 사용할 수도 있고 입맛에 따라 다르겠지만 나는 CI는 github action으로 container이미지는 docker로 진행하려고 한다.(이게 공짜니까) 기업이나 프로젝트를 남에게 보여주기 싫거나 보안이 문제인 ..
12. gitops로 nginx 배포
·
devops/minikube
nginx를 gitops로 배포하게 되면 어떠한 애플리케이션도 쉽게 배포할 수가 있다. istio-gateway 차트도 있기 때문에 web으로도 쉽게 오픈할 수가 있다. 여태까지 어렵게 어렵게 돌아왔지만 다 지금을 위한 단계였다고 생각하면 좋을 것 같다. 잡설은 이정도로 하기로 하고 nginx를 올려보겠다. Argo CD에서 app을 배포하기 위해 2가지 개념이 존재한다. 바로 ApplicationApplicationSet이다. 이 2가지는 서로 다른 개념으로 사용되는데 Application부터 알아보자.Application쿠버네티스 클러스터에 배포할 애플리케이션을 정의하는 리소스이다. 이 것은 Git 저장소의 특정경로에 있는 Kubernetes 메니페스트를 참조할 수도 있고, Helm 저장소를 참조할 ..
11. argocd 접속
·
devops/minikube
먼저 teleport 부터 로그인을 하자.tcl이 먼지 모르겠으면 이전 포스틀 참고하도록 하자.$ tcl camping$ helm repo add ggocamping https://chart.ggocamping.com/devopscharts/$ helm repo update...Successfully got an update from the "ggocamping" chart repositoryUpdate Complete. ⎈Happy Helming!⎈ chart를 등록했으면 이제 values값을 만들어 chart를 배포하면 될 거 같다.name: argocdhosts:- argocd.dev.abc.comgatewayPort: - number: 80 name: http protocol: HTT..
10. argocd 설치
·
devops/minikube
argocd는 공식문서에 이런식으로 기재되어 있다.ArgoCD는 Kubernetes 클러스터에서 애플리케이션을 관리하고 배포하는 데 사용되는 GitOps 기반의 지속적 배포(Continuous Deployment, CD) 도구이다. 이 도구는 선언적 접근 방식을 채택하여, 애플리케이션과 인프라의 상태를 Git 저장소에 정의된 대로 자동으로 동기화하는 Tool입니다. 어렵게 설명되어있지만 아주 간단하다. 쿠버네티스 배포에 주로 사용하며내가 원하는 상태를 미리 yaml로 선언해 놓으면(주로 git에)argocd가 어떻게든 그 yaml상태를 유지하기 위해 발군의 노력을 한다는 뜻이다.argocd는 여러가지 방법으로 설치가 가능하다. 그러나 역시 실무뿐만 아니라 안정성 / 관리에서는 Helm이 당연 으뜸이다. ..
9. 나만의 헬름차트 만들기 (2)
·
devops/minikube
이제 istio-gateway차트를 만들도록 하겠다. istio에서 service-mesh를 사용하기 위해서는 virtualservice와 gateway가 세트로 움직이는데 이 2개를 세트로 서비스를 만들때마다 만드는 것은 여간 귀찮은 일이 아니다. 그래서 helm repository에다가 만들어서 추후에 계속 사용하도록 하겠다.(사실상 이게 처음에 더 귀찮다.) 그러나 앞으로 argocd가 되었든 서비스가 추가 될 때마다 이 차트를 이용하면 되므로 앞으로는 이게 더 편해질거다. 처음에만 조금 고생하는 식으로 하자. ㅠㅠ 처음에 devopscharts에서$ helm create istio-gateway$ cd istio-gateway 이렇게 들어가면 이런식으로 파일이 만들어지게 되는데templates 폴..