$ cd was
# 어플리케이션 빌드
$ gradle build
# 도커이미지 빌드
$ ./gradlew jib
jib를 사용한 이유: 도커 데몬없이 컨테이너 이미지 빌드를 쉽게 빌드할 수 있다는 점이 매력적으로 느껴져서 궁금했는데, 이번 기회에 사용함.
- 어플리케이션 log - host /logs 디렉터리에 적재
- 로그 설정: logback-spring.xml
- host /logs 디렉터리 적재: quickstart, template
- 정상 작동 api 구현, 10초마다 체크
- 정상 작동 api 구현: health probe enable
- 10초마다 체크: quickstart, template
perionSeconds 기본값이 10이기에 readiness는 작성 생략
- 3번 연속 체크 실패시, 어플리케이션 restart
- 종료 시 30초 이내 프로세스 종료 안될 시, SIGKILL 강제 종료
- server: appication.yaml
- k8s: quickstart, template
- 배포, scale in/out 유실 트래픽 방지
- 기 liveness, readiness 설정
- graceful shutdown setting: application.yaml
- k8s rolling update startegy: quickstart, template
- 어플리케이션 프로세스 uid:1000으로 실행
- DB kubernetes 실행, 재 실행시 변경된 데이터 유실 방지
- volume mount setting: quickstart, template
- volume: quickstart, template
pvc 설정 - 적절한 stroage를 연결하도록 유도
- 어플리케이션 - DB cluster domain 통신
- DB Headless svc: quickstart, template
- To DB URL: application.yaml, quickstart, template
어플리케이션 소스에서는 환경변수를 읽어들이도록 처리하고, 루트디렉터리의 .env에 따라 templating해서 manifest파일을 생성하도록 유도
- nginx-ingress-controller를 통해 어플리케이션 접속
- ingress: quickstart, template
nginx-ingress-controller svc가 외부로 어떻게 노출되어있는지를 몰라서 서비스를 포트포워드하고 접속하도록 README 작성함
- namespace default 사용
- manifests 모든 리소스에 default 네임스페이스 명시적으로 작성.
- README.md 파일 실행 방법 기술