CI/CD

    ArgoCD Manage Secrets

    👀 Epilogue DB Pod 매니페스트 파일 정의 다하고.. MySQL 시크릿도 다 정의해주고.. namespace 안에 apply로 적용을 다 한 상태에서.. argoCD로 배포만 하면 되는데.. 왜 Sync failed로 인해서 에러가 발생하는 것일까..😢 에러 로그 탐색 ! 유효하지 않는 데이터 에러 Deployment.spec.template.spec.containers[1].. 위 변수는 다음과 같은 secret을 참조하는 데이터다. ... - name: MYSQL_USER valueFrom: secretKeyRef: name: mysql-secret key: username ... 여기서 시크릿에 대한 문제인 것을 확인하였다. 결론은 시크릿과 매니페스트 데이터 매칭을 제대로 설정하지 않아서..

    Jenkins Front-End Dockerizing

    👀 Epilogue 앞선 Jenkins로 React 빌드를 진행하였다. 빌드 산출물을 배포하기 위해선 Docker Image로 패키징 해야 한다. Dockerfile을 작성하고 Jenkins로 Dockerizing을 진행해보자! ⚡ Leggo ▪ Nginx 설정 파일 /conf/conf.d/default.conf에 Nginx 설정 파일 필요 server { listen 80; location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/ngin..

    Jenkins Front-End React Build

    👀 Epilogue Jenkins로 React 빌드를 해보자 ! ⚡ Leggo ▪ React Build 개발 모드로 프로그램 실행 $ npm start 실제 배포 시 빌드 명령어 $ npm run build 배포 환경에서 사용할 파일들 압축 형태로 제공 index.html 최적화하여 배포 테스트용으로 serve라고 하는 간단한(한 번만 사용하는) 서버를 npm을 통해 설치하는 명령어 npm insatll -g serve npx serve -s build // 한번만 실행 현재 개발 단계에서 [ Front-End → Back-End ] 요청 타겟팅 설정 파일 path check Movie-project/back/src/main/movie-project/src/setProxy.ts webpack을 사용하지 ..

    ArgoCD Application Create

    👀 Epilogue CI 파이프라인에서 Kubernetes Deployment Manifest 파일의 도커 이미지 태그 수정을 완료하였다. 이제는 수정된 버전의 도커 이미지를 가지고 새로 업그레이드나 배포를 해야할 차례..! 위 과정에서 GitOps의 Operation 툴인 ArgoCD를 사용하고자 하는데.. ArgoCD로 Kubernetes 클러스터 내의 리소스들을 관리하기 위해서는 사전에 Application을 만들어줘야한다. 콘솔로 세팅 YAML 파일로 세팅 두 가지 세팅 방법이 있는데 우리는 아무래도 선언적으로 설정하는게 편하다보니 (맞죠?) .. YAML 파일 작성을 통해 Application을 만들어 보고자 한다 ! ⚡ Leggo Edit as YAML apiVersion: argoproj.i..

    Jenkins Kubernetes Manifest Deploy

    👀 Epilogue 현재 프로젝트에 적용할 CD 파이프라인 소개 도커 이미지 빌드 도커 이미지 Docker Hub Registry에 Push Kubernetes Deployment Manifest 파일에 도커 이미지 태그 수정 ArgoCD가 수정 사항을 감지하여 새로 Push 된 Docker Image를 가지고 배포를 진행한다. 이로써 GitOps 환경이 구축이 된다. 진짜 역대급으로 힘들었고 시간 많이 잡아먹었던 파이프라인 Stage 왜냐고 물으신다면 이 빌드 숫자를 보아하니..^^ ⚡ Leggo Jenkinsfile environment{ ... gitToken = credentials('github-repo-access-token') } ... stage('Kubernetes Manifest Upd..

    Jenkins Docker Image Push

    👀 Epilogue 험난한 과정을 거친 후 도커 이미지 빌드 파이프라인을 성공하였다 ! 이제는 빌드한 이미지를 가지고 도커 허브 레지스트리에 Push를 해보자 ~ ⚡ Leggo Jenkinsfile ... stage('Docker Image Push'){ steps{ container('docker'){ withDockerRegistry([credentialsId: 'docker-access-key', url: "" ]){ sh "docker push ${dockerHubRegistry}:${currentBuild.number}" sh "docker push ${dockerHubRegistry}:latest" /* Wait Uploading */ sleep 10 sh "docker rmi ${docker..

    Jenkins Back-End Dockerizing

    👀 Epilogue 역시나 험난한 트러블 슈팅기 도커가 없다고 하는 거 같아요.. ⚡ Leggo 플러그인 설치 Docker Docker Pipeline 실패.. uname -a 를 통해 OS 정보 확인 + uname -a Linux default-hp930 5.4.0-99-generic #112-Ubuntu SMP Thu Feb 3 13:50:55 UTC 2022 x86_64 GNU/Linux 도커 설치 스크립트 추가 sudo apt-get update sudo apt-get install docker.io sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker agent pod에서 sudo: not found 문제로 실패 해결책 apt-get update && a..

    Jenkins Back-End Gradle Build

    👀 Epilogue 백엔드 Gradle 빌드 시 매우 많은 트러블 이슈 발생 Gradle 빌드 명령어 이슈.. Test 제외 빌드 명령어 ./gradlew build --exclude-task -test Gradle 빌드 세팅 파일 찾지 못하는 이슈.. Gradle 권한 오류.. etc.. 그중에서 제일 애를 먹었던 이슈를 해결했던 과정을 소개하고자 한다. ⚡ Leggo Jenkinsfile ... stage('Gradle Jar Build'){ steps{ dir('back'){ sh ''' chmod +x gradlew ./gradlew build --exclude-task test ''' } } post{ failure{ echo 'Gradle jar build failure!' } success{..

    Jenkins Webhook 연동

    📌 목표 Github의 Webhook을 구성하고 Jenkins와 연동 후에 Push Event 발생 시 자동으로 빌드가 진행되도록 해보자 ! ▪ Github Webhook 구성 Github Access Token 생성 Github Repository - Setting - Webhooks - Add Webhook Payload URL 젠킨스 URL + /github-webhook/ 외부에서 접근 가능한 도메인으로만 동작 가능 → ngrok 서비스 이용 e.g.) http://jenkins.com/github-webhook/ Content Type application/json ▪ Jenkins Credential 등록 및 관리 Jenkins - Manage Credentials Credential 등록 U..

    ArgoCD Helm 설치 & 테스트

    ▪︎ ArgoCD 설치 helm repo 받기 $ k create namespace argocd $ helm repo add argo argocd 설정 파일 받기 $ helm show values argo/argo-cd > argocd-values.yaml helm으로 argocd 설치 $ helm install argocd argo/argo-cd -n argocd 그런데 만들고 보니깐 service도 로드밸런서 타입으로 만들고 싶고.. 리소스도 조정하고 싶은데.. 다시 갈아 엎어보자..! 그리고 계속 argo-server pod이 CrashLoopBack 에러로 다운되는 것을 확인 $ helm uninstall argocd -n argocd These resources were kept due to t..