26J02g1

Young-Kyoo Kim·2일 전
apiVersion: batch/v1
kind: CronJob
metadata:
  name: finops-daily-pipeline
  namespace: devops-finops # 사내 관리용 네임스페이스 지정
  labels:
    app: finops-batch
    component: pipeline-engine
spec:
  # ⏰ 매일 새벽 3시 00분 실행 (KST 기준)
  schedule: "0 3 * * *"
  timeZone: "Asia/Seoul" # K8s 1.27+ 전용 native 타임존 설정
  
  # 동시 실행 방지 (이전 배치가 돌고 있으면 대기)
  concurrencyPolicy: Forbid
  # 작업 실패 시 보존할 내역 수
  successfulJobsHistoryLimit: 3
  failedJobsHistoryLimit: 5
  
  jobTemplate:
    spec:
      template:
        metadata:
          labels:
            app: finops-batch
        spec:
          # 컨테이너 가동 정책: 실패 시 팟을 새로 띄우지 않고 내부 컨테이너만 재시작
          restartPolicy: OnFailure
          
          containers:
          - name: pipeline-runner
            image: harbor.internal.zone/devops/finops-pipeline:v2 # v2 이미지 저격
            imagePullPolicy: IfNotPresent
            
            # ─── 🏃 step1 수집과 step2 정산을 체인(&&)으로 순차 기동 ───
            # 별도 인자를 주지 않으면 스크립트 내부 내장 로직에 의해 '전일(Yesterday) 전체'를 타겟팅합니다.
            command: ["/bin/sh", "-c"]
            args:
              - |
                echo "⏳ [1단계] Thanos 메트릭 수집 및 파티셔닝 시작..." && \
                python3 step1_prom_fetch.py --step 5m && \
                echo "⏳ [2단계] AIStor Tables 마감 정산 연산 시작..." && \
                python3 step2_pipeline.py --cluster ALL
            
            # ─── 🛡️ [자원 가드레일] 하이 카디널리티 대응 OOM 방어 규격 ───
            resources:
              requests:
                cpu: "4"
                memory: "16Gi"
              limits:
                cpu: "8"
                memory: "32Gi" # Pandas groupby 피크 버스트용 여유 공간
            
            # ─── 🌐 인프라 연결용 전역 환경변수 셋 ───
            env:
            - name: THANOS_QUERY_URL
              value: "http://thanos-query.monitoring.svc.cluster.local:80"
            - name: MINIO_ENDPOINT
              value: "http://minio-service.internal.zone:9000"
            - name: MINIO_ACCESS_KEY
              value: "admin"
            - name: MINIO_SECRET_KEY
              value: "password"
            - name: MINIO_RAW_BUCKET
              value: "devops-test"
            - name: MINIO_REPORT_BUCKET
              value: "devops-test"
            # 사내 전역 프록시가 걸려있을 경우, K8s 내부 서비스 통신 레이어가 튕겨나가지 않도록 명시
            - name: no_proxy
              value: ".cluster.local,.svc,localhost,127.0.0.1,10.96.0.0/12,10.244.0.0/16"

0개의 댓글