본문 바로가기

cicd

(24)
EKS CICD Automation - 4. ArgoCD Blue/Green Deployment 공식 다큐는 아래와 같습니다. argoproj.github.io/argo-rollouts/features/bluegreen/ BlueGreen - Argo Rollouts - Kubernetes Progressive Delivery Controller BlueGreen Deployment Strategy A Blue Green Deployment allows users to reduce the amount of time multiple versions running at the same time. Overview In addition to managing ReplicaSets, the rollout controller will modify a Service resource during the BlueG ..
JIRA & API GW를 통해 Jenkins 배포 승인체계 구성하기 - 5. Jenkins 세팅 마지막입니다. Job의 Script는 아래와 같습니다. 아래에서 맨 위에 있는 값들만 세팅하셔서 사용하시면 됩니다. (issue_id는 빈값으로 냅두시면 됩니다.) def API_KEY = "" def AGW_URL = "" def JIRA_URL = "" def issue_id = "" pipeline { environment { PATH = "$PATH:/usr/local/bin/" } agent any stages { stage('Approval') { steps { script { try { cmd = "curl -X POST -H \"X-API-KEY: ${API_KEY}\" -H \"BuildInfo: ${env.JOB_NAME}/${env.BUILD_NUMBER}\" -H \"Content-..
JIRA & API GW를 통해 Jenkins 배포 승인체계 구성하기 - 4. Lambda 세팅 먼저 라이브러리로 python request 라이브러리가 필요합니다. 특정 라이브러리만 다운받아서 Lambda Layer에 올려야하기 때문에 아래와 같이 수행해주세요. python3 -m pip install --target "path" requests 혹은 아래 zip을 받아서 바로 Python3.7 Layer에 올리셔도 무방합니다. 레이어 구성방법은 https://aws-diary.tistory.com/100?category=753099 글에서도 나와있으니 참고하시면 됩니다. 어렵지 않아서 사실 그냥 진행하셔도 무방할겁니다. 지라 이슈를 만드는 람다 소스코드는 아래와 같습니다. {} 안에 있는 값들은 반드시 변경하여서 사용하시기 바랍니다. description의 값을 event에서 받아서 던지시면, ..
JIRA & API GW를 통해 Jenkins 배포 승인체계 구성하기 - 3. JIRA 세팅 지라에서 Admin 권한이 있는 계정으로 들어가셔야 합니다. 우측 상단에서 시스템을 클릭해주세요 먼저, 이슈 탭으로 가서 전체 업무 플로우를 만들도록 하겠습니다. 이제, 좌측 업무 흐름에 가셔서 다이어그램을 위와 같은 구조로 만들었습니다. 여기서 문자열로 아래와 같이 Transition(전환) ID값을 기억해주셔야합니다. 해당 값을 통해 REST API를 던져서 이슈를 완료상태로 바꿀 수 있기 때문입니다. 이후 좌측 하단에 있는 웹훅 메뉴를 골라줍니다. 그리고 우측 상단에 있는 웹훅 만들기를 눌러주세요 이제 아래 웹훅 세팅을 해보도록 하겠습니다. URL 앞에 부분에는 구성한 API Gateway URL을 넣어주시면 되고 (Create Issue API) 이후 이슈가 업데이트 될 경우 트리거가 되는데, J..
JIRA & API GW를 통해 Jenkins 배포 승인체계 구성하기 - 1. Intro 이전에는 Slack과 API Gateway와 Lambda를 통해 승인 체계를 구성하였었는데, 가장 많이 사용하는 협업 툴인 JIRA에서도 이와 같은 체계를 구성하려고 합니다. AWS API Gateway와 Lambda를 활용하면, 서버단에서 구성하여 웹훅등을 해결할 부분을 서버 비용 및 관리 포인트를 줄여서 사용할 수 있기 때문에 유용하게 사용하실 수 있습니다 이번에는 아래와 같은 아키텍쳐를 구성해 봤습니다. 보통은 지라를 통해 사용하시면, 개발 요청부터 이슈를 만들어서 사용하실텐데, 저는 그렇게까지 체계화 된 구조가 아닌 딱 배포부분만 지라에서 이슈를 자동으로 발급하고 승인하려고 합니다. 전체 플로우를 설명드리면 다음과 같습니다. 먼저, 젠킨스 Job을 build하면, Git Clone -> Build..
Slack으로 CICD 승인체계 구성하기 - 4. Slack, Jenkins Job 이제 마무리 단계입니다. 전 게시글에서 배포한 API, Gateway Jenkins Rest API를 콜하는 URL을 넣어주세요 자, 이제 기존 젠킨스 잡에서 누군가 Job을 Build 했을 때, 슬랙에서 승인이 되어야 넘어갈 수 있도록 Jenkins Job을 수정하도록 하겠습니다. 먼저, Slack Bot Token 값을 Credentials에 만든 후, 젠킨스 잡에서 변수로 넣어주도록 하겠습니다. 이제 기존 Pipeline 소스코드에 스크립트를 추가하겠습니다. 승인체계만 있는 Jenkins Pipeline Stage Script는 아래와 같습니다. 잘 읽어보시면 알겠지만 account(approver)가 admin이어야 넘어가는 형태입니다. Jenkins 권한을 쪼개서, 스크립트 수정을 못하게 (볼 ..
Slack으로 CICD 승인체계 구성하기 - 3. API Gateway REST API로 구성하도록 하겠습니다. 전 게시글에서 만든, Lambda들을 넣어주세요 리소스를 하나씩 추가해주겠습니다. 이제 method를 post로 구성해서 람다를 연결시켜주세요 이유는 잘 모르겠지만 애들도 사람인지라 이렇게 못 찾는 경우가 있습니다. 그럴 땐 람다 ARN을 복사해서 넣어주세요 만들어진 메소드 -> 통합 설정 -> 매핑 탬플릿에서 application/json -> 메서드 요청 패스스루 지정해주시면 됩니다. 마찬가지로 rest-api도 리소스를 만들어주겠습니다. 똑같이 메소드 POST에 람다 골라주시고, 이번엔 아래와 같이 설정해주세요 application/x-www-form-urlencoded ## The `substring(8)` returns the input with ever..
Slack으로 CICD 승인체계 구성하기 - 2. Lambda 앞선 글에 이어서 이제 위에서 2단계 ~ 4단계까지 구성을 하나씩 해보도록 하겠습니다. 먼저, 2단계를 수행해주는 람다함수를 만들어보겠습니다. Slack Interactive Component입니다. 슬랙채널에 버튼 같은 요소를 직접 작성하여 Slacker를 통해 구현하며, Slack Bot Token으로 인증하여 메세지를 채널에 전달합니다. 전 글에서 마지막에 본 Slack Bot Token을 환경변수에 저장해주도록 하겠습니다. 만약 보안상의 염려가 되신다면, KMS를 통해 암호화하신 후 사용하셔도 좋습니다. 이제 Layer입니다. Slacker 라이브러리를 사용하기 때문에 해당 라이브러리를 바로 Layer로 올려서 사용해주시면 됩니다. 소스코드는 아래와 같습니다. import os from slack..