DevOps/CICD

    GitOps, ArgoCD Overview

    GitOps, ArgoCD Overview

    Ref: https://argo-cd.readthedocs.io/en/stable/#overview Argo CD - Declarative GitOps CD for Kubernetes Overview What Is Argo CD? Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Why Argo CD? Application definitions, configurations, and environments should be declarative and version controlled. Application deployment and lifecycle ma argo-cd.readthedocs.io What Is Argo CD..

    Argocd를 사용하여 helm chart 배포 및 주의사항

    Argocd를 사용하여 helm chart 배포 및 주의사항

    1. helm repo 사용 Application CRD # applications.yaml apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: tomcat namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: apps source: repoURL: https://charts.bitnami.com/bitnami chart: tomcat targetRevision: "10.1.21" destination: namespace: tomcat server: "https://kubernetes.default.svc" syncPolicy: autom..

    argoCD App of Apps 패턴을 사용한 서비스 배포

    argoCD App of Apps 패턴을 사용한 서비스 배포

    개요 GitOps로 app 을 일괄적으로 관리하고 new app 이 추가되어도 구조가 바뀌지 않도록 하기 위한 방법을 생각해봤습니다. 그래서 하나의 폴더에 child application 을 생성하도록 하는 App of Apps 패턴을 사용하게 되었습니다. 이를 사용하면 배포 및 구성할 수 있는 apps 들을 선언적으로 관리 할 수 있습니다. https://argo-cd.readthedocs.io/en/stable/operator-manual/cluster-bootstrapping/ 디렉터리(GitOps) 구조 ├── application.yaml ├── apps │ ├── app-apache.yaml │ ├── app-kustomize-guestbook.yaml │ └── app-helm-nginx.y..

    Github, Jenkins, argoCD를 사용하여 CI/CD 구축

    Github, Jenkins, argoCD를 사용하여 CI/CD 구축

    프로젝트의 발단은 위 아키텍처를 보고 시작했습니다. 개발자가 도커 이미지를 변경하여 Github에 push 하면 Jenkins에서 도커 이미지를 build 하고, 빌드 번호를 이미지 태그에 붙여 ECR에 push 합니다. 그리고 Github의 deployment.yaml 파일에 이미지 태그의 정보를 업데이트합니다. argoCD에서 EKS Cluster에 Pod를 배포합니다. 처음으로 제대로 된 CICD를 구축해 볼 생각에 즐거웠습니다. 하지만 과정은 그렇게 즐겁지만은 않았죠... 젠킨스 파일 삽질을 꽤 했습니다... 시작해보겠습니다. 작업 순서 1. EKS, ECR 생성 2. Github에 코드 올리기 3. Jenkins 설치 및 설정 4. Jenkinsfile 5. argoCD 설치 6. 확인 1. E..

    Jenkins Pipeline Github Private Token 사용하여 연동

    Jenkins Pipeline Github Private Token 사용하여 연동

    보안을 위해서 Github Private Repo 를 생성하였습니다. 프라이빗 저장소를 Jenkins와 연동하는 방법에는 1. ssh private, public key 사용 2. token 사용 두가지 방법이 있습니다. 저는 이번에 두번째 방법을 사용하겠습니다. 참고로 token을 발급받은 이후에는 git bash에서 git clone, push 등을 할 때 pw를 물어보면 token을 입력해야 합니다. (github 주소에서 로그인할때는 제외인것 같네요) 1. Github Personal Access Token 생성 깃헙에 로그인한 후, 계정이미지를 클릭하여 Settings를 클릭하세요. Developer settings > Personal access tokens > 생성 클릭 위의 두개를 선택하고..

    Jenkins, Codedeploy 사용하여 CICD 환경 구축

    Jenkins, Codedeploy 사용하여 CICD 환경 구축

    구축 환경 CI: GitHub, Jenkins CD: Codedeploy Language: Go CI/CD 흐름 1. 개발자가 Git Push를 하게 되면 GitHub에서 Jenkins 서버로 webhook을 발생시킵니다 2. Jenkins가 Push 이벤트가 발생했음을 인지합니다 3. Jenkins가 빌드 및 테스트를 실행합니다 4. build가 성공적으로 마무리되면 애플리케이션 파일과 appspec.yml 파일을 zip으로 압축하여 S3에 업로드합니다 5. Jenkins가 CodeDeploy에게 배포를 요청합니다 6. CodeDeploy는 appspec.yml에 따라서 배포를 수행하며, 배포할 서버내에서 쉘 스크립트를 수행합니다. 구축 순서 1. github repository에 스크립트 파일을 올립..