[CI/CD] GCP VM Deploy Guide with Jenkins CI/CD(2)
Stan Cloud
---
GCP VM Deploy Guide with Jenkins CI/CD
- Agenda
- Configuring GCP Flask App for CI/CD deployment
- CI/CD Architecture
- Configure Jenkins Multibranch Pipeline
- Pipeline Settings
- Prerequisites
- New Credentials
- Options related to MultiBranch Pipeline creation
- Integrating with the Source Code Repository
- Next Actions
- Teams Webhook with Jenkins Configuration
- Jenkins Pipeline Script
- Reference Link
- Configuring GCP Flask App for CI/CD deployment
- CI/CD Architecture
- Configure Jenkins Multibranch Pipeline
- Pipeline Settings
- Prerequisites
- New Credentials
- Options related to MultiBranch Pipeline creation
- Integrating with the Source Code Repository
- Teams Webhook with Jenkins Configuration
- Jenkins Pipeline Script
Configuring GCP Flask App for CI/CD deployment
GCP에서 CI/CD 배포를 위해 사전에 아래와 같이 Resource 생성을 진행하였습니다.
Resource 생성간에 필요한 Reference Link는 아래에 참조로 걸어두었으니 확인 부탁드립니다.
Resource 생성간에 필요한 Reference Link는 아래에 참조로 걸어두었으니 확인 부탁드립니다.
- Load Balancer(HTTP)
- VPC(Virtual Private Cloud)
- Custom Subnet
- 10.x.x.x/25
- Firewall
- HTTP
- Source IP Ranges
- Primary Subnet(10.x.x.x/25)
- Load Balancer Health Check
- Source IP Ranges
- 35.191.0.0/16
- 130.211.0.0/22
- SSH
- Source IP Ranges
- 35.235.240.0/20
- Managed Instance Group(DEV/PROD)
- Instance Template(DEV/PROD)
- Cloud DNS
- prd/dev domain
CI/CD Architecture
Configure Jenkins Multibranch Pipeline
Architecture 구성이 완료되었으니, Jenkins로 Multibranch Pipeline 구성을 진행해보겠습니다.
Multibranch Pipeline 구성에 앞서, Github Repository 생성이 필요합니다.
(*필자는 Github Repo를 사전에 생성해두었으며, Repo 생성에 대해선 Reference Link 참고 부탁드립니다.)
(*필자는 Github Repo를 사전에 생성해두었으며, Repo 생성에 대해선 Reference Link 참고 부탁드립니다.)
Pipeline Settings
- Prerequisites
- Dashboard > Manage Jenkins > Credentials
- Pipeline 구성 전에 Jenkins에서 사용할 Credentials 생성이 필요합니다.
- 위 이미지에서 확인하실수 있듯이, Credentials을 추가 해줍니다.
- New Credentials
- 필자는 Jenkins가 github repo에 접근할수 있도록 Jenkins의 SSH Key 등록 및 Google Cloud Service Account Key를 등록해줬습니다.
- Credentials의 경우, 목적에 따라 선택도 가능하니 참고하여 생성해주시면 될 것 같습니다.
- Options related to MultiBranch Pipeline creation
- Dashboard > New Item > Multibranch Pipeline
- New Item을 통해 Multibranch Pipeline을 생성해줍니다.
- Dashboard > Jenkins_MultiBranch_Pipeline_GCP > Configuration
- Multibranch Pipeline 구성 이후 git과 연동을 위해 Branch Source등 각각 설정값들에 대해 기입해줘야 합니다.
- 아래 이미지에서 보실수 있는 General 설정에 대해 설명드리겠습니다.
- Branch Sources
- Overview
- Jenkins Multibranch Pipeline에서 Branch Sources는 다양한 Source로 부터 Branch 정보를 가져오는 옵션입니다.
- Branch Sources 설정을 통해 Jenkins는 지정된 소스에서 Branch 정보를 주기적으로 업데이트하고, Multibranch Pipeline을 통해 Project의 여러 Branch에 대한 Auto Build & Deployment를 관리할수 있게 됩니다.
- Git, GitHub, Bitbucket, 기타 다른 SCM등이 제공됩니다.
- Behaviours
- Discover Branches
- GItHub Repo와 연결이 정상적으로 동작했다면, 전체 Branch를 Read 합니다.
- Discover Tags
- 각 Branch들의 Tag도 가져오는 설정입니다.
- Property Strategy
- Pipeline Project에서 속성(Property)을 관리하고 설정하는 옵션입니다.
- All branches get the same properties
- 모든 Branch가 동일한 속성을 공유하게끔 설정하는 옵션입니다.
- Build Configuration
- Build Mode에 대한 설정을 할 수 있으며, 필자는 Jenkinsfile로 Pipeline Script를 구성해서 Build & Deploy를 해볼 예정입니다.
- Scan Multibranch Pipeline Triggers
- Periodically if not otherwise run
- 일정한 주기적으로 Pipeline을 Scan해서 새로운 Branch나 Jenkinsfile의 변경을 확인해줍니다.
- Scan by Webhook
- Code Repository(Git,Gitlab,Bitbucket..)와 연결된 Webhook을 사용해서 변경사항을 실시간으로 감지하는 옵션입니다.
- 현재는 Trigger Token값을 통해 GitHub과 Integration 시켜둔 상태입니다.
- Integrating with the Source Code Repository
- Jenkins에서 GitHub Integration을 설정하기 위해 아래의 절차를 진행했습니다.
- GitHub Plugin Install
- GItHub Repo Add Deploy Key
- Jenkins 계정이 사용하는 ssh-key를 추가하여 Allow Write Access를 Check 해줍니다.
- Jenkins Job(Pipeline)구성시 Credentials를 위에 설정한 Key로 지정하시면 됩니다.
- Github Webhook
- Jenkins와 GitHub간에 Webhook 설정을 진행하였습니다.
- Payload URL의 경우, 아래와 같이 지정하시면 됩니다.
- https://JENKINS_URL/multibranch-webhook-trigger/invoke?token=[TRIGGER_TOKEN_VALUE]
- 위 3가지 설정을 통해, Jenkins와 GitrHub 간의 통합이 설정되어 GitHub Repository의 변경사항을 자동으로 감지하고, Jenkins 작업을 Trigger 할수 있게 됐습니다.
Next Actions
해당 글을 통해 Jenkins Multibranch Pipeline에 대한 기본 설정을 알아봤습니다.
다음 글에서는 Jenkins에서 배포 진행시 Teams로 Webhook 던지는것에 대한 설정 관련한 내용과
Jenkins Pipeline Script의 각 Stage에 대한 설명을 통해 GCP에 배포되는 과정을 설명하고자 합니다.끝으로 이 포스팅을 보시는 분들이 관련 정보를 얻으시는데 도움이 되었으면 합니다.
Reference Link
댓글 쓰기
댓글 쓰기