반응형
ToDo: 값 세팅 통일 + 필요없는 줄 삭제,.
ConfigMap
ConfigMap은 어플리케이션에 환경 변수 설정을 도와주는 리소스다.
우선 ConfigMap을 만들기 전에 Pod에 환경변수를 추가해보자.
Pod에 직접 설정하기
환경 변수를 설정하기 위해서는 ConfigMap 없이도 아래와 같이 사용 가능하다.
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: "2023-12-04T06:54:56Z"
labels:
name: webapp-color
name: webapp-color
namespace: default
resourceVersion: "752"
uid: edaafcc4-a237-48b8-bb77-f57ac44dd751
spec:
containers:
- env:
- name: APP_COLOR
value: pink
ConfigMap 활용하기
Pod에 직접 설정하지 않고 ConfigMap을 이용해서 값을 설정할 수 있다.
apiVersion: v1
data:
DB_HOST: SQL01.example.com
DB_NAME: SQL01
DB_PORT: "3306"
kind: ConfigMap
metadata:
creationTimestamp: "2023-12-04T06:58:14Z"
name: db-config
namespace: default
resourceVersion: "832"
uid: f63e655f-63cf-40c9-b3d0-501fe0b49a7e
이제 만들어진 ConfigMap을 Pod에서 가져와서 사용해보자.
ConfigMap에서 valueFrom으로 값 1개만 가져오기
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: registry.k8s.io/busybox
command: [ "/bin/echo", "$(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY)" ]
env:
- name: SPECIAL_LEVEL_KEY
valueFrom:
configMapKeyRef:
name: special-config
key: SPECIAL_LEVEL
ConfigMap에서 envFrom으로 값 전체 가져오기
valueFrom과 envFrom은 양식이 꽤 비슷하면서도 달라서 작성 시 유의해야한다.
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: registry.k8s.io/busybox
command: [ "/bin/sh", "-c", "env" ]
envFrom:
- configMapRef:
name: special-config
Spring Application과 결합하기
만약에 Spring Application에서 k8s 환경 변수를 추가하게 되면 application.yaml or properties 파일에 추가되는 형태로 동작한다.
추가되는 형태 말고도 Spring Application에서 application.yaml 파일을 아래와 같이 대체하는 방법도 존재한다.
Case 1. application.yaml 대체
kind: ConfigMap
apiVersion: v1
metadata:
name: demo
data:
application.yaml: |-
pool:
size:
core: 1
max:16
Case 2. 특정 값 overwrite
kind: ConfigMap
apiVersion: v1
metadata:
name: demo
data:
pool.size.core: 1
pool.size.max: 16
Case 3. 개발 환경 별로 다른 상태값 부여하기
kind: ConfigMap
apiVersion: v1
metadata:
name: demo
data:
application.yml: |-
greeting:
message: Say Hello to the World
farewell:
message: Say Goodbye
---
spring:
profiles: development
greeting:
message: Say Hello to the Developers
farewell:
message: Say Goodbye to the Developers
---
spring:
profiles: production
greeting:
message: Say Hello to the Ops
ConfigMap 생성하기
k create configmap webapp-config-map --from-literal=APP_COLOR=darkblue --from-literal=APP_OTHER=disregard
Secret 생성하기
configMap을 Secret으로도 대체할 수 있다.
(참고로 가이드문서에서 secretRef를 사용한 것을 보려면 URI에 ko를 추가해야한다)
k create secret generic db-secret --from-literal=DB_Host=sql01 --from-literal=DB_User=root --from-literal=DB_Password=password123
apiVersion: v1
kind: Pod
metadata:
labels:
name: webapp-pod
name: webapp-pod
namespace: default
spec:
containers:
- image: kodekloud/simple-webapp-mysql
imagePullPolicy: Always
name: webapp
envFrom:
- secretRef:
name: db-secret
728x90
'☸️ Kubernetes' 카테고리의 다른 글
[Kubernetes] Cluster Upgrade (0) | 2024.01.03 |
---|---|
[Kubernetes] CNI와 Kube Proxy (0) | 2023.12.28 |
[Kubernetes] Logging 알아보기 (1) | 2023.11.30 |
[kubernetes] SC에 대한 개념 이해하기 (0) | 2023.11.30 |
[kubernetes] PV, PVC를 Pod에 연결하기 (0) | 2023.11.30 |