-
[OKD + SpringBoot gradle 프로젝트] ConfigMaps와 Secrets에 환경변수 선언 후 사용하기개발기록 2023. 6. 5. 13:46반응형728x90
개요
정적인 변수를 OKD(4버전대)의 ConfigMap에 선언하고 Spring Boot에서 가져다쓰는 방법을 기록한다.
OKD
ConfigMaps
우선 OKD 좌측 탭에서 ConfigMaps에서 해당하는 모듈(Pod)의 configmap을 클릭한다.
해당 configmap의 YAML(이하 야믈)파일에서 data부분에 관리할 변수를 key, value형태로 선언한다.
kind: ConfigMap apiVersion: v1 metadata: ...(생략)... name: test-name-env-configmap namespace: test-namespace data: google-credentials-path: https://test
Secrets
OKD 좌측 탭에서 Secrets를 클릭한다.
우측 상단쪽에 있는 Create을 누른 후 From YAML을 선택한다.
apiVersion: v1 kind: Secret metadata: name: test-name-secret namespace: test-namespace type: Opaque data: username: YWRtaW4=
configmap처럼 data에 key, value 쌍으로 넣지만 value에는 base64인코딩을 한 상태로 넣어준다.
cf. 참고로 생성 후 클릭하면 추가적인 필드들이 자동으로 생성되어있다.
kind: Secret apiVersion: v1 metadata: name: test-name-secret namespace: test-namespace selfLink: /api/v1/namespaces/test-namespace/secrets/test-name-secret uid: a83cc03b-82c2-4c4c-9f8e-0e921ae72379 resourceVersion: '228181658' creationTimestamp: '2023-06-07T00:52:59Z' managedFields: - manager: ...(이하생략)... data: user-name: YWRtaW4= type: Opaque
Deployments
OKD 좌측 탭에서 Deployments에서 해당하는 모듈을 클릭한다.
해당 모듈의 야믈파일에서 env 하위에 configmap에서 선언한 변수값과 Spring Boot에서 사용할 변수명을 매핑시켜둔다.
kind: Deployment apiVersion: apps/v1 metadata: name: test-name namespace: test-namespace spec: selector: matchLabels: app: test-name template: metadata: labels: app: test-name spec: containers: ...(생략)... env: - name: GOOGLE_CREDENTIALS_PATH valueFrom: configMapKeyRef: name: test-name-env-configmap key: google-credentials-path - name: USER_NAME valueFrom: secretKeyRef: name: test-name-secret key: user-name ...(이하 생략)...
1. configmap과 namespace를 맞춰준다.
2. env 하위에 name은 Spring Boot에서 사용할 변수명이다.
3. valueFrom은 configmap에 선언한 변수인지 secret에 선언한 변수인지에 따라 configMapKeyRef 또는 secretKeyRef를 쓴다.
4. configMapKeyRef(또는 secretKeyRef) 하위의 name은 configmap에서 선언한 name으로 맞춰준다.
5. key는 configmap에서 선언한 key값을 쓴다.
Spring Boot
application.properties
# Google translate private key google.credentials.path=${GOOGLE_CREDENTIALS_PATH}
이러면 Spring Boot 내에서 가져다 쓸 수 있게 된다.
cf. 자바 코드 내에서 가져다 쓸 때에는 아래 예시처럼 선언 후 쓸 수 있다.
@Value("${google.credentials.path}") private String credentialsPath;
레퍼런스
https://aws-diary.tistory.com/131
728x90'개발기록' 카테고리의 다른 글
[OKD + SpringBoot gradle 프로젝트] value.yaml에 ConfigMaps와 Secrets 선언 후 사용하기 (0) 2023.08.08 [구글 번역 API] Google Cloud Translation API 사용하기 (0) 2023.04.13 [멀티모듈] Spring Boot gradle프로젝트 멀티모듈구조에서 모듈추가하기 (0) 2023.04.06 [에러] gradle 프로젝트에서 모듈 추가 후 삭제 시 마주친 에러 (0) 2023.04.06 [RSA] Java와 C# 간 RSA 공개키 호환 코드 (0) 2023.03.07