CI/CD중에 application.properties의 내용을 감추기위해서는,
Google Cloud Platform에서 제공하는 환경변수 등록을 사용해야 합니다.
CI/CD를 하기위해선, 깃허브 리파지토리와 연동을 해야하는데,
application.properties에 민감한정보들을 깃허브상에 올릴수가 없어,
난감한 상황이 발생합니다.
기존 application.properties에
server.port=8000
다음과같은 환경변수가 저장되어있다고 가정하고,
application.properties의 내용을 환경변수로 올리는 과정을 설명하도록 하겠습니다.
application.properties 변경
steps:
# gradle BUILD
- name: 'gradle:8.5.0-jdk17'
args:
- './gradlew'
- 'clean'
- 'build'
env:
- 'SERVER_PORT=${_SERVER_PORT}'
# docker BUILD
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '-t'
- 'asia-east1-docker.pkg.dev/goodong-graduation-project/goodong/goodong-api'
- '-f'
- '.deploy/Dockerfile'
- '.'
# docker PUSH
- name: 'gcr.io/cloud-builders/docker'
args:
- 'push'
- 'asia-east1-docker.pkg.dev/goodong-graduation-project/goodong/goodong-api:latest'
# CloudRun DEPLOY
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: gcloud
args:
- 'run'
- 'deploy'
- 'goodong-api'
- '--image'
- 'asia-east1-docker.pkg.dev/goodong-graduation-project/goodong/goodong-api'
- '--platform'
- 'managed'
- '--allow-unauthenticated'
- '--region'
- 'asia-east1'
env:
- 'SERVER_PORT=${_SERVER_PORT}'
images:
- 'asia-east1-docker.pkg.dev/goodong-graduation-project/goodong/goodong-api'
options:
logging: CLOUD_LOGGING_ONLY
gradle build시 , 해당 env가 필요합니다.
(docker build시에 env가 필요하지않는이유는 이미 gradle build시에 환경변수가 이미 .jar에 올라와있기때문입니다)
또한, deploy시에 , 해당 env가 또 필요합니다.
저는 여기서 이해하는데 힘들었는데,
또 env가 필요한이유는, GCP에서 CI 와 CD가 아예 독립적인것이기 떄문입니다.
CI는 그냥 컴파일 후, 도커이미지로 만드는 역할만을 수행합니다.
그과정에서 컴파일시에 환경변수가 필요합니다.
CD는 해당 도커이미지를 실행하는 역할만을 수행합니다.
그 과정에서 실제 실행에 필요한 환경변수가 필요합니다.
GCP Build 트리거에서 환경변수 설정
CI과정에서 필요한 환경변수를 이곳에 등록합니다.
GCP Cloud Run에서 환경변수 설정
CD에서 필요한 환경변수를 똑같이 적어줍니다.
'Cloud > GCP' 카테고리의 다른 글
[GCP] Cloud Build를 이용해, CI/CD 파이프라인 적용해보기 (0) | 2024.07.21 |
---|---|
[GCP] Google Cloud Run을 이용해 Spring Boot project배포 (0) | 2024.07.21 |