kubernetes 환경변수

EBAB!·2023년 7월 25일
0

kubernetes

목록 보기
9/9

영구 볼륨만 선언했다면 어플리케이션에는 어찌됐든 하드 코딩을 통해 경로를 알려줄 수 밖에 없습니다.

이 때 deployment.yaml에서 환경 변수를 선언하여 컨테이너 내부에서 사용 가능하도록 설정이 가능합니다.

# [deployment.yaml]
.
.
      containers:
        - name: <container_name>
          image: <image_name> # ex. Sonjh/testimage:1
          env:
            - name: STORY_FOLDER
              valueFrom:
                configMapKeyRef:
                  name: <configmap-name> ex. data-store-env
                  key: <KEY> ex. folder
          volumeMounts:
            - mountPath: <mount-path> # ex. /app/story
              name: <volume-name>

위처럼 환경 변수를 선언할 수 있고, 컨테이너 내부의 앱에서는 환경변수를 사용해 코드를 짤 수 있습니다.
만약 앱의 저장소가 /app/story 였다면,
/app/{환경변수를 불러오는 코드.STORY_FOLDER}를 사용해볼수 있게 됩니다.

ConfigMaps

키-값 쌍을 ConfigMap이라는 yaml파일로 한 yaml파일에 정리해볼수 있습니다.
configmap유형의 yaml파일은 클러스터의 엔티티에 대한 별도의 파일이나 리소스에 키-값 쌍을 가질 수 있게 해줍니다.

# [environment.yaml]

apiVersion: v1
kind: ConfigMap
metadata:
  name: <configmap-name> # ex. data-store-env
data:
  key1: value1
  key2: value2
  folder: 'story'
  .
  .
  .

이 파일도 마찬가지로 kubectl apply -f environment.yaml을 통해 적용이 가능합니다.
이후 deployment.yaml에서 env 설정에서 다음으로 바꿔줍니다.

# [deployment.yaml]
.
.
      containers:
        - name: <container_name>
          image: <image_name> # ex. Sonjh/testimage:1
          env:
            - name: <KEY> # ex. STORY_FOLDER
              value: <VALUE> # ex. 'story'
          volumeMounts:
            - mountPath: <mount-path> # ex. /app/story
              name: <volume-name>

왜 사용하는가?

작성해야 할 부분이 더 많아져서 별로인 듯 보일 수 있습니다.

만약 위에서 환경변수가 바뀌게 된다면 deployment.yaml이 수정되므로 Pod가 재실행됩니다.
하지만 이제 환경변수를 수정할 때 environment.yaml만 수정하고 적용하므로 deployment를 재실행하지 않고 환경변수 수정이 이뤄질 수 있습니다!

profile
공부!

0개의 댓글