Blockmonkey

EKS - 환경변수 관리 본문

Web Development/Back-end

EKS - 환경변수 관리

Blockmonkey 2025. 7. 21. 12:05
Kubernetes에서 환경변수를 관리하는 방법은 대표적으로 configMap 으로 value 파일에 평문 저장하여 사용하는 방법과, Secret 스크립트로 사용하는 방법이 있다.
P.S : EKS 서버 복구하는데, 위 값을 못찾아서 힘들었다. 😩

 

ConfigMap VS Secret 차이점 요약

항목 ConfigMap Secret

목적 일반 설정값 저장 민감 정보 저장 (API Key, 비번 등)
인코딩 평문 Base64 (단순 인코딩, 암호화 아님)
보안 접근 제어 약함 강함 (RBAC 등으로 접근 제어 가능)
파일 Mount 가능 (env, envFrom, volume) 가능 (env, envFrom, volume)
저장위치 script Master Node - etcl에 저장
  • ConfigMap
    • values.yaml 파일에 저장되어 환경변수 정보를 관리한다. (직관적)
    • 평문으로 저장
    • Git에 올라간다.
      • 따라서, Private Repository 인 경우에만 모두 올려도 된다.
  • Secret
    • Git에 올리지 않고 Kuberntes 내부에 Secert 파일로 관리
    • Base64를 통해 간단한 인코딩되어 저장된다.
      • 항시 4의 배수 길이
      • 즉, 맘만먹으면 디코딩할 수 있다.

Secret 사용법

  • 생성된 Secret 목록 전부 조회
$ kubectl get secrets --all-namespaces
  • Secret 생성
$ kubectl create secret generic [시크릿명] \\ --from-literal=KEY1=VALUE1 \\ --from-literal=KEY2=VALUE2 \\ -n [네임스페이스]
  • Secret 적용
# value.yaml 파일에 아래와 같은 형식으로 저장
deployment:
	...
  env:
    - name: MY_DB_HOST # 지정할 환경변수 Key Name
      valueFrom:
        secretKeyRef:
          name: secret-stg # 시크릿 명
          key: RDS_DB_HOST # Key 값
	  - name: DB_USERNAME # 지정할 환경변수 Key Name
      valueFrom:
        secretKeyRef:
          name: secret-stg  # 시크릿 명
          key: RDS_DB_USERNAME # Key 값

 

  • Secret 수정/삭제/적용
# 수정
$ kubectl edit secret {시크릿명} -n {네임스페이스}

# 삭제
$ kubectl delete secret {시크릿명} -n {네임스페이스}

# 생성 및 수정 후 적용
$ kubectl rollout restart deployment -n {네임스페이스}

 

 

Terminal에서 plian-text → Base64 인코딩

# plain text -> base64
echo -n 'your-plaintext-value' | base64

# base64 -> plain text
echo 'base64-encoded-value' | base64 --decode

'Web Development > Back-end' 카테고리의 다른 글

[DB] B-Tree vs B+Tree  (0) 2025.09.22
[Java] String & String Builder & StringBuffer  (0) 2025.09.11
EKS - Context  (0) 2025.07.21
EKS 사용하기  (3) 2025.07.21
동기 비동기 & 직렬 & 동시성에 대하여  (0) 2025.07.21