1️⃣ 개요
Job은 일회성 또는 반복되지 않는 특정 작업을 실행하는 데 활용됩니다.
이러한 작업은 보통 환경 변수, 설정 파일, 인증 정보 등을 필요로 하며,
이를 하드코딩하지 않고 외부 리소스(ConfigMap, Secret) 로 분리하는 것이 좋습니다.
이번 글에서는 Job이 ConfigMap, Secret과 연동하여 실행 환경을 외부화하는 구성 전략을 소개합니다.
2️⃣ 환경 외부화가 필요한 이유
항목 | 이유 |
설정 관리 일관성 | Job 외부에서 설정 값을 변경 가능 |
보안 강화 | 민감 정보는 Secret으로 관리 |
재사용성 향상 | 동일한 Job 템플릿을 다른 설정으로 재사용 |
운영 안정성 | 설정 누락이나 오타 방지 |
✅ 설정을 외부화하면 Job이 더 유연하고 재사용 가능한 리소스가 됩니다.
3️⃣ ConfigMap을 환경 변수로 주입하는 예제
apiVersion: v1
kind: ConfigMap
metadata:
name: job-config # 설정을 담은 ConfigMap
data:
ENV: production
REGION: ap-northeast-2
---
apiVersion: batch/v1
kind: Job
metadata:
name: env-config-job
spec:
template:
spec:
restartPolicy: Never
containers:
- name: print-env
image: busybox
command:
- sh
- -c
- |
echo "환경: $ENV, 지역: $REGION"; sleep 5
envFrom:
- configMapRef:
name: job-config # ConfigMap의 모든 key-value를 env로 주입
📌 설명 요약
• ConfigMap에서 정의한 key들이 환경 변수로 주입됩니다.
• $ENV, $REGION 변수는 Job 실행 시 참조됩니다.
4️⃣ Secret을 환경 변수로 주입하는 예제
apiVersion: v1
kind: Secret
metadata:
name: job-secret
type: Opaque
data:
DB_PASSWORD: c2VjdXJlcGFzc3dvcmQ= # "securepassword"를 base64 인코딩한 값
---
apiVersion: batch/v1
kind: Job
metadata:
name: secret-env-job
spec:
template:
spec:
restartPolicy: Never
containers:
- name: db-job
image: busybox
command:
- sh
- -c
- |
echo "🔐 DB 접속 비밀번호는 $DB_PASSWORD"; sleep 5
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: job-secret
key: DB_PASSWORD
📌 설명 요약
• DB_PASSWORD는 Secret으로부터 주입되며,
• Pod 내에서는 일반 환경 변수처럼 사용할 수 있습니다.
5️⃣ ConfigMap을 볼륨으로 마운트하여 사용하는 예제
apiVersion: v1
kind: ConfigMap
metadata:
name: script-config
data:
script.sh: |
echo "📜 Job 실행 스크립트 시작"
echo "이 스크립트는 ConfigMap으로 관리됩니다."
---
apiVersion: batch/v1
kind: Job
metadata:
name: script-mount-job
spec:
template:
spec:
restartPolicy: Never
containers:
- name: run-script
image: busybox
command:
- sh
- /opt/script/script.sh
volumeMounts:
- name: script-volume
mountPath: /opt/script
volumes:
- name: script-volume
configMap:
name: script-config
defaultMode: 0755 # 실행 권한 부여
📌 설명 요약
• ConfigMap의 script.sh 파일이 /opt/script/script.sh 경로에 마운트됩니다.
• 실행 권한을 주어 직접 실행 가능한 스크립트로 사용할 수 있습니다.
6️⃣ 운영 팁
목적 | 적용 방식 |
실행 환경 통합 관리 | 모든 환경 변수는 ConfigMap으로 관리 |
민감 정보 분리 | DB 비밀번호, 토큰 등은 Secret으로 이동 |
Job 템플릿 재사용 | 설정만 다르게 주입하여 다양한 작업 실행 |
스크립트 통합 관리 | ConfigMap으로 bash 스크립트를 일괄 관리 |
🔥 7️⃣ 결론
✔ Job은 외부 설정 리소스와 연동함으로써 더욱 유연하고 안전하게 구성할 수 있습니다.
✔ 설정은 ConfigMap, 민감한 값은 Secret, 스크립트는 ConfigMap + volumeMount 방식이 일반적입니다.
✔ 이러한 외부화를 통해 Job 템플릿을 다양한 목적에 재사용할 수 있으며, 보안과 관리 측면에서 효율이 높아집니다.
'Kubernetes > Kubernetes Advanced' 카테고리의 다른 글
📌 [CronJob 심화편 #1] CronJob의 시간 설정 전략: 정확한 스케줄링을 위한 Cron 표현식 가이드 (0) | 2025.03.25 |
---|---|
📌 [Job 심화편 #7] Job의 CronJob 전환 전략: 반복성 여부에 따른 리소스 선택 기준 (0) | 2025.03.25 |
📌 [Job 심화편 #6] Job 리소스의 컨트롤러 상태 분석: 완료되지 않은 Job의 정리 기준 (0) | 2025.03.25 |
📌 [Job 심화편 #5] Job 로그 수집 전략: 실행 완료 후 로그 유실 방지하기 (0) | 2025.03.25 |
📌 [Job 심화편 #4] Job의 completions, parallelism 조합을 통한 병렬 처리 패턴 구성 (0) | 2025.03.25 |