-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[INFRA] Git Submodule을 사용하여 AWS EC2에 위치한 설정을 관리하도록 변경 #744
Comments
Git Submodule 이란?Git submodule 공식문서를 참고했습니다. 주요 명령어
서브모듈 작업 전에는 위 명령어를 실행해야 합니다. 그래야 upstream의 변경내역을 가졀 수 있으니깐요. 알아야 하는 내용서브모듈 디렉토리는 git에서 다른 영역으로 관리합니다. 서브모듈 저장소에 변경이 생기면 본 저장소에도 변경 내역으로 감지됩니다. 서브모듈 디렉토리의 파일이 보이지는 않고, 서브모듈 디렉토리의 커밋 해시값 변경만 감지됩니다. 작업 방식서브모듈 저장소는 효율을 위해 pr 없이 push합니다. 다만 작업원래 작업 방식대로 작업 전에 본 저장소에서 issue를 발행하고, 작업에 대해 본 저장소에서 PR을 작성합니다. 서브모듈 저장소에 변경이 생기면 본 저장소에도 변경 내역으로 감지됩니다. 서브모듈 디렉토리의 파일이 보이지는 않고, 서브모듈 디렉토리의 커밋 해시값 변경만 감지됩니다. |
Private 저장소[email protected] 계정으로 생성한 Github 저장소에요. 공개 저장소에 저장할 경우 보안 문제가 생길 수 있는 데이터를 저장해요.. Read & Write 권한을 얻으려면 Collaborator 초대를 받아야 해요. 다음과 같이 브랜치를 구성했어요. 브랜치마다 용도가 달라요.
AS-IS다음과 같이 저장소 secret들이 등록되어 있어요. 이 secret들은 쓰기만 가능하고, 읽을 수 없다는 문제가 있어요. TO-BEGlobal Secret | 2024-code-zap-private에서 해당 secret들을 확인할 수 있어요.
또, 다음과 같이 환경별로 등록된 secret들도 확인할 수 있어요. |
작업 방식 변경1. Secret을 변경하는 경우
2. 서버 구성을 변경하는 경우
3. 팁Private 저장소에 push 되는 작업마다 PR을 작성할 필요 없어요. 인프라 작업을 위해 private 저장소에 여러 번의 push를 해도 돼요. Public 저장소 입장에서는 private 저장소에서 몇 번의 변경이 일어났든, 서브모듈 디렉토리의 해시값만 변경된 것으로 추적돼요. |
Spring yml 파일 위치 변경스프링 yml 파일들을 모두 AS-ISTO-BE변경 후에 아주 좋아지는 점이 두 개 있어요.
# compose.yml
## AS-IS
spring:
entrypoint: [
"java", "-jar",
"-Dspring.config.location=/app/application-prod.yml,/app/application-db/yml,/app/application-actuator.yml,/app/application-swagger.yml",
"-Dspring.profiles.active=${SPRING_PROFILE}",
"/app/code-zap.jar"
]
## TO-BE
spring:
entrypoint: [
"java", "-jar",
"-Dspring.profiles.active=${SPRING_PROFILE}",
"/app/code-zap.jar"
] 다음의 블로그 글을 참고해서 구성했어요. |
환경변수 주입개발 환경과 운영 환경에서 같은 설정을 사용하고, 환경에 따라 값만 달라지게 구성했어요.
cors:
allowed-origins: ${ALLOWED_ORIGINS}
allowed-origins-patterns: ${ALLOWED_ORIGINS_PATTERNS} 여기에 주입되는 이런 값들은 private 저장소 각 브랜치의 # backend_cd.yml
- name: Compose 환경변수 주입
working-directory: ${{ secrets.PROJECT_PATH }}
run: ${{ secrets.ENV_VARIABLES }} 각 저장소에 가서 어떤 값이 주입되는지 확인해볼까요? Develop Secret | 2024-code-zap-private Production Secret | 2024-code-zap-private 다음과 같은 스크립트가 무슨 뜻인지 궁금하죠?
위 스크립트는 여러 줄을 한 번에 출력하고 파일로 만들기 위해 저런 명령어를 사용했어요. 또, 도커 컴포즈는 명시하지 않아도 그래서 다음과 같은 설정이 가능해요. # compose.yml
spring:
environment:
TZ: ${TZ}
SPRING_PROFILE: ${SPRING_PROFILE}
MYSQL_READER_URL: ${MYSQL_READER_URL}
MYSQL_WRITER_URL: ${MYSQL_WRITER_URL}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
ALLOWED_ORIGINS: ${ALLOWED_ORIGINS}
ALLOWED_ORIGINS_PATTERNS: ${ALLOWED_ORIGINS_PATTERNS}
|
#725
개요
compose.yml
,nginx.conf
,application.yml
등의 설정 파일이 변경될 때마다 서버에 접속해야 합니다.요구사항
체크리스트
compose.yml
spring/application.yml
promtail/promtail-config.yml
nginx/nginx.conf
backend_cd.yml
workflow의Compose 환경변수 주입
작업으로 생성된 .env 파일을 올바르게 참조하는지 확인spring/application.yml
promtail/promtail-config.yml
The text was updated successfully, but these errors were encountered: