Helm 배포시 SPRING_PROFILES_ACTIVE

Helm 배포시 SPRING_PROFILES_ACTIVE

생성일
Jul 23, 2025 02:13 AM
상위 항목
최종 편집 일시
Last updated July 23, 2025
태그
kubernates
SpringBoot
하위 항목
 
  1. Dockerfile의 ENTRYPOINT
    1. ENTRYPOINT ["sh", "-c", "java -jar admin.jar"]
      이 부분은 컨테이너가 켜질 때 “항상” 실행되는 커맨드만 지정한 거고, 그 안에 프로파일을 직접 넘기는 플래그는 없어요.
  1. ENV/Spring Boot 자동 프로파일 로딩
      • Spring Boot는 커맨드를 통해 Dspring.profiles.active 를 넘기지 않아도,
      • 프로세스 환경 변수 SPRING_PROFILES_ACTIVE 가 있으면 자동으로 spring.profiles.active 로 인식합니다.
      • 즉, java -jar admin.jar 만 실행해도, 만약 환경에
        • SPRING_PROFILES_ACTIVE=prod
          라는 변수가 있으면 Spring Boot가 알아서 prod 프로파일로 부팅합니다.
  1. Kubernetes Deployment에서 ENV 주입
    1. Helm 템플릿(또는 kubectl apply) 로 아래처럼 env: 블록을 추가하면,
      containers: - name: admin image: ... env: - name: SPRING_PROFILES_ACTIVE value: "{{ .Values.profile }}"
      → 컨테이너가 기동될 때 실제 프로세스 환경에 SPRING_PROFILES_ACTIVE 가 설정됩니다.
      → ENTRYPOINT 커맨드는 그 값을 그대로 물려받아서 java -jar ... 실행 시 Spring Boot가 인식하게 되는 거예요.
  1. 확인 방법
    1. kubectl exec -it <pod> -- env | grep SPRING_PROFILES_ACTIVE
      1. → 제대로 주입됐는지 확인
    2. kubectl logs <pod>
      1. → 부팅 로그 상단에
        The following profiles are active: dev
        처럼 뜨는지 확인
  1. 만약 자바 옵션으로 강제 전달하고 싶다면
    1. ENTRYPOINT를 다음처럼 바꿀 수도 있습니다.
      command: ["sh", "-c"] args: - java -Dspring.profiles.active=$SPRING_PROFILES_ACTIVE -jar admin.jar
      하지만 보통은 필요 없습니다. Spring Boot가 환경 변수를 자동으로 읽어요.

결론

  • Deployment의 env: 로 주입한 SPRING_PROFILES_ACTIVE 가 ENTRYPOINT 실행 시점에 이미 환경 변수로 설정되어 있고,
  • Spring Boot는 java -jar … 만으로도 그 환경 변수를 읽어 프로파일을 활성화합니다.
따라서 별도의 CMD/ENTRYPOINT 수정 없이 env: 만 잘 설정해 주시면 프로파일이 원하는 대로 반영될 거예요.