korean-docs
Helm 값 & 환경 변수

Helm Values 및 환경 변수

Wave가 사용하는 모든 환경 변수와 Helm values에 대한 레퍼런스입니다.

핵심 설정 파라미터

필수 환경 변수

VariableDescriptionDefaultRequired
WA_LICENSEWave 라이선스 키입니다. chart가 license Secret에서 값을 읽어 Core에 주입합니다. 직접 env var로 작성하지 말고 아래 license.key 또는 license.existingSecret Helm value로 설정하세요.-예 (Helm value로 설정)
WA_LOG_LEVEL로그 레벨 (info, debug, trace)info아니요
WA_API_SERVER_HOSTAPI 서버 호스트 주소0.0.0.0아니요
WA_API_SERVER_PORTAPI 서버 포트3024아니요
WA_KUBELET_METRICS_ENABLEDkubelet 메트릭 수집 활성화 여부true아니요
WA_CONFIG_MODE운영 모드입니다. console(기본값): web console로 설정합니다. crd: 운영 설정을 Custom Resource로 관리하며 콘솔은 읽기 전용이 됩니다. CRD Mode 참고.console아니요

라이선스 및 레지스트리 자격 증명

라이선스와 이미지 pull 자격 증명은 환경 변수가 아니라 Helm values로 설정합니다.

ValuePurposeDefault
license.key인라인으로 넣는 Wave 라이선스 키입니다.""
license.existingSecret라이선스를 담고 있는, 미리 만들어 둔 Secret 이름입니다(프로덕션에 권장하며 license.key보다 우선합니다).""
license.existingSecretKeyexistingSecret 안에서 라이선스를 담고 있는 key입니다.WA_LICENSE
ghcr.enabled / ghcr.dockerconfigjsonghcr.io/stclab-inc/*용 이미지 pull Secret을 생성합니다(base64 dockerconfigjson).false / ""
redhat.enabled / redhat.dockerconfigjsonregistry.connect.redhat.com용 이미지 pull Secret을 생성합니다(Red Hat 인증 이미지).false / ""
crds.installchart와 함께 wavek8s.com CRD 14개를 설치합니다. 클러스터 admin이나 ArgoCD가 별도로 관리한다면 false로 설정하세요.true

데이터 관리

VariableDescriptionDefault
WA_DATA_SAVE_DAYS데이터 보관 기간(일)14
WA_NODE_SNAPSHOT_DATA_SAVE_DAYS노드 스냅샷 보관 기간(일)90
WA_DATA_REMOVE_CRON_EXPRESSION데이터 정리 스케줄0 0 0 * * *
WA_DB_DIRECTORY데이터베이스 디렉터리 경로data
WA_METRICS_DIRECTORY메트릭 저장 경로data/metrics
WA_LOGS_DIRECTORY로그 저장 경로data/logs

Worker 주기

VariableDescriptionDefault (seconds)
WA_K8S_DEPLOYMENT_WORKER_INTERVAL_SECONDSDeployment 동기화 주기10
WA_K8S_STATEFULSET_WORKER_INTERVAL_SECONDSStatefulSet 동기화 주기10
WA_K8S_DAEMONSET_WORKER_INTERVAL_SECONDSDaemonSet 동기화 주기10
WA_AWS_ASG_WORKER_INTERVAL_SECONDSAWS Auto Scaling Group 동기화 주기10
WA_AWS_ECS_WORKER_INTERVAL_SECONDSAWS ECS 동기화 주기10
WA_OPENSTACK_IG_WORKER_INTERVAL_SECONDSOpenStack instance group 동기화 주기30

모니터링 및 메트릭

VariableDescriptionDefault
WA_STATS_CRON_EXPRESSION통계 수집 스케줄0 0 * * * *
WA_CLUSTER_STATUS_CRON_EXPRESSION클러스터 상태 점검 스케줄0 */5 * * * *
WA_K8S_WORKLOADS_DISABLED_CRON_EXPRESSION비활성화된 워크로드 점검0 */5 * * * *
WA_PROMETHEUS_EXPORTER_EXPIRY_CHECK_INTERVAL_SECONDSPrometheus exporter 점검0 0 * * * *
WA_PROMETHEUS_EXPORTER_EXPIRATION_SECONDSPrometheus 메트릭 만료 시간10800 (3시간)

예측 주기

VariableDescriptionDefault
WA_CLUSTER_STATUS_FORECAST_ENABLEDCluster Resource Forecast 활성화true
WA_CLUSTER_STATUS_FORECAST_HORIZON_DAYS클러스터 예측이 내다보는 기간(일)7
WA_CLUSTER_STATUS_FORECAST_INTERVAL_HOURS클러스터 예측 API 호출 주기(시간). Wave 3.4.5+.24
WA_PV_FORECAST_HORIZON_DAYSPV capacity forecast가 내다보는 기간(일)7
WA_PV_CAPACITY_FORECAST_TASK_INTERVAL_MINUTESPV capacity forecast 작업 실행 주기(분)1440 (24시간)
⚠️

Wave 3.4.5에서 예측 주기 두 개의 기본값이 바뀌었습니다. cluster-status cron은 5분마다 데이터를 수집하는데, 이전에는 매 tick마다 예측 API를 호출해서 intelligence 서비스를 포화시키고 Autopilot 예측을 타임아웃시킬 수 있었습니다. 이제 예측 호출은 WA_CLUSTER_STATUS_FORECAST_INTERVAL_HOURS(기본 24시간)로 제한되고, PV capacity forecast 작업 주기 기본값도 10분에서 1440분으로 올라갔습니다. 예측은 일 단위 기간을 내다보는 값이라 24시간 주기로도 정확도 손실이 없습니다. 특별한 이유와 intelligence 서비스의 여유가 있을 때만 낮추세요.

플랫폼 기능

VariableDescriptionDefault
WA_PLATFORM_K8SKubernetes 플랫폼 활성화true
WA_PLATFORM_AWSAWS 플랫폼 활성화true
WA_PLATFORM_OPENSTACKOpenStack 플랫폼 활성화true

기능 토글

Wave 3.4.0+. 각 백그라운드 작업을 배포 시점에 끌 수 있습니다. 작업을 끄면 아예 시작되지 않으므로, Core가 해당 데이터를 수집하거나 감지기를 돌리지 않고 그 기능의 CPU, 메모리, 스토리지 사용량도 사라집니다.

VariableDescriptionDefault
WA_AUTOPILOT_ENABLEDAutopilot 스케일링 작업true
WA_SMART_SIZING_ENABLEDSmart Sizing 작업true
WA_WAVE_FLOW_ENABLEDWave Flow(트래픽 보호) 작업true
WA_NF_ENABLEDNetFUNNEL 연동 작업true
WA_DIAGNOSIS_ENABLEDWave Diagnosis 그룹 게이트. 이걸 끄면 아래 Diagnosis 하위 작업은 각자의 플래그와 무관하게 전부 꺼집니다.true
WA_MEMORY_ANOMALY_DETECTION_ENABLEDmemory leak detection 및 OOM-kill 위험 감지 (Diagnosis 하위 작업)true
WA_POD_CONTAINER_FAILURES_ENABLEDPod/Container Failures 감지 (Diagnosis 하위 작업)true
WA_POD_SCHEDULING_DELAY_ENABLEDPod scheduling delay 감지 (Diagnosis 하위 작업)true
WA_IDLE_NODE_DETECTION_ENABLEDIdle node detection (Diagnosis 하위 작업)true
WA_PV_UNUSED_DETECTION_ENABLEDUnused PV detection (Diagnosis 하위 작업)true
WA_PV_FORECAST_ENABLEDPV capacity forecasting (Diagnosis 하위 작업)true
WA_PVC_AUTO_EXPANSION_ENABLEDPVC auto-expansion. 독립 게이트이며 WA_DIAGNOSIS_ENABLED묶이지 않습니다.true
WA_KARPENTER_ENABLEDWave Karpenter 기능false
WA_GPU_ENABLEDWave GPU 그룹 게이트false
WA_GPU_COST_TRACKING_ENABLEDGPU 비용 추적 (WA_GPU_ENABLED=true 필요)false
WA_GPU_WASTE_DETECTION_ENABLEDGPU 낭비 감지 (WA_GPU_ENABLED=true 필요)false

그룹 게이트는 하위 작업 플래그와 AND로 묶입니다. Diagnosis 하위 작업은 WA_DIAGNOSIS_ENABLED와 자기 플래그가 둘 다 true일 때만 동작합니다. GPU 그룹도 마찬가지입니다. WA_PVC_AUTO_EXPANSION_ENABLED만 예외인데, UI가 Diagnosis가 아니라 스토리지 PVC 탭에 있기 때문에 독립 게이트입니다.

꺼진 기능이 콘솔에서 보이는 모습. 메뉴 항목은 그대로 남아 있고, 페이지에는 어떤 환경 변수를 설정하면 다시 켜지는지 안내하는 패널이 표시됩니다. Wave Karpenter와 Wave GPU는 다릅니다. 꺼져 있으면 메뉴 항목 자체가 숨겨집니다.

WA_NF_ENABLED는 라이선스와 함께 적용됩니다. 라이선스가 NetFUNNEL을 허용하고 동시에 이 환경 변수가 true일 때만 사용할 수 있습니다. false로 두면 라이선스가 있는 클러스터에서도 NetFUNNEL이 꺼집니다.

고급 기능

VariableDescriptionDefault
WA_WAVE_SHAPER_MODULE_URLWave Shaper 모듈 이미지public.ecr.aws/wave-autoscale/wave-shaper:0.1.3
WA_EVENT_QUEUE_CHANNEL_CAPACITY이벤트 큐 용량64
WA_METRIC_STORE_SAVE_BATCH_WORKER_CNT메트릭 배치 worker 수50
WA_AWS_METERING_CRON_EXPRESSIONAWS metering 스케줄0 59 * * * *
WA_WATCH_DURATION_SECONDS업데이트 감시(watch) 기간5

구성 요소 설정

Autopilot 설정

VariableDescriptionDefault
WA_AUTOPILOT_SERVER_HOSTAutopilot 서버 호스트localhost
WA_AUTOPILOT_SERVER_PORTAutopilot 서버 포트3026

OpenStack 설정

VariableDescriptionDefault
WA_OPENSTACK_SERVER_HOSTOpenStack 서버 호스트localhost
WA_OPENSTACK_SERVER_PORTOpenStack 서버 포트3027

Karpenter 설정

Karpenter 기능을 사용하려면 Karpenter가 설치된 Amazon EKS 클러스터가 필요합니다. webhook 설정은 Spot Workload Placement에만 필요합니다.

Karpenter 설정 항목

ParameterDescriptionDefault
karpenter.enabledKarpenter ClusterRole과 Spot Placement MutatingWebhook 활성화false

Webhook TLS 설정

Variable / ParameterDescriptionDefault
webhooks.tls.enabled (WA_K8S_WEBHOOK_TLS_ENABLED)webhook TLS 활성화/비활성화false
webhooks.tls.port (WA_WEBHOOK_PORT)Webhook 서버 포트9443
webhooks.tls.certFile (WA_K8S_WEBHOOK_TLS_CERT_FILE)TLS 인증서 파일 경로/etc/tls/tls.crt
webhooks.tls.keyFile (WA_K8S_WEBHOOK_TLS_KEY_FILE)TLS 개인 키 파일 경로/etc/tls/tls.key
webhooks.tls.certManager.enabledcert-manager Issuer/Certificate 자동 생성true
webhooks.tls.certManager.duration인증서 유효 기간8760h (1년)
webhooks.tls.certManager.renewBefore만료 전 인증서 갱신 시점720h (30일)
webhooks.tls.secretNameTLS 인증서용 Kubernetes secret 이름wave-autoscale-webhook-tls

설정 예시

wa-values.yaml
# Karpenter Integration (EKS only)
karpenter:
  enabled: true
 
# Webhook TLS (required for Spot Workload Placement)
webhooks:
  tls:
    enabled: true
    port: 9443
    certManager:
      enabled: true
      duration: "8760h"
      renewBefore: "720h"
    secretName: "wave-autoscale-webhook-tls"

자세한 설정 방법은 Karpenter Getting Started 가이드를 참고하세요.

스토리지 설정

Persistent Volume 설정

spec:
  storageClassName: "gp3"  # AWS EKS example
  existingPvcName: ""       # Use existing PVC or leave empty for auto-creation

플랫폼별 StorageClass 예시

  • AWS EKS: gp3, gp2, io1
  • GKE: standard, standard-rwo, premium-rwo
  • Azure AKS: managed-premium, azurefile
  • 온프레미스: local-path, nfs, ceph-rbd

플랫폼별 설정

Red Hat OpenShift

openshift:
  waveAutoscale:
    scc:
      create: true  # Create custom SCC for core components
  waveAutoscaleAgent:
    scc:
      create: true  # Create custom SCC for agent DaemonSet

Fargate를 사용하는 AWS EKS

spec:
  core:
    nodeSelector:
      eks.amazonaws.com/compute-type: fargate

클러스터 권한

표준 설정

clusterRole:
  readOnly: false    # Full automation capabilities
  istioAdmin: false  # Set true for Istio service mesh integration

읽기 전용 모드

clusterRole:
  readOnly: true     # Limited to monitoring only
  istioAdmin: false

Resource Sizing Guidelines

Wave의 resource 요구량은 클러스터 크기에 비례해 늘어납니다(전체 클러스터 용량의 약 1%).

Cluster SizeTarget WorkloadsWA CoreIntelligenceWeb ConsoleTotal ResourcesStorage
2000 vCPUs200 workloads6 vCPU / 6GB9 vCPU / 9GB0.3 vCPU / 300MB15.3 vCPU / 15.3GB40GB
1000 vCPUs100 workloads3 vCPU / 3GB6 vCPU / 6GB0.3 vCPU / 300MB9.3 vCPU / 9.3GB20GB
500 vCPUs50 workloads2 vCPU / 2GB4 vCPU / 4GB0.3 vCPU / 300MB6.3 vCPU / 6.3GB10GB
300 vCPUs30 workloads1.5 vCPU / 1GB2 vCPU / 2GB0.3 vCPU / 300MB3.8 vCPU / 3.3GB6GB

참고: WA Metrics Agent는 노드당 0.1 vCPU / 50MB가 필요합니다(DaemonSet으로 배포됨).

전체 설정 예시

대부분의 설치는 라이선스, 이미지 pull 자격 증명, StorageClass만 있으면 됩니다. 공개된 chart가 이미 이미지 저장소, 태그, 기본 리소스를 설정해 두었기 때문입니다. 구성 요소별 값은 필요할 때만 override하세요.

# Image-pull secret for ghcr.io/stclab-inc/* (provided by the Wave team)
ghcr:
  enabled: true
  dockerconfigjson: "eyJhdXRocyI6eyJnaGNyLmlvIjp7...}}"
 
# License: inline, or reference a pre-created Secret via license.existingSecret
license:
  key: "YOUR-LICENSE-KEY-HERE"
 
# Install the 14 wavek8s.com CRDs with the chart (default true)
crds:
  install: true
 
# Cluster permissions
clusterRole:
  readOnly: false
  istioAdmin: true
 
# Per-component overrides (optional; the chart ships sensible defaults)
spec:
  core:
    image:
      repository: ghcr.io/stclab-inc/wave-autoscale-core
      tag: <version>
    env:
      - name: WA_LOG_LEVEL
        value: "info"
      - name: WA_DATA_SAVE_DAYS
        value: "30"
    resources:
      requests:
        cpu: "1500m"
        memory: "3Gi"
      limits:
        cpu: "1500m"
        memory: "3Gi"
 
  webConsole:
    image:
      repository: ghcr.io/stclab-inc/wave-autoscale-web-console
      tag: <version>
    resources:
      requests:
        cpu: "100m"
        memory: "100Mi"
 
  intelligence:
    image:
      repository: ghcr.io/stclab-inc/wave-autoscale-intelligence
      tag: <version>
    resources:
      requests:
        cpu: "500m"
        memory: "1Gi"
 
  agent:
    image:
      repository: ghcr.io/stclab-inc/wave-autoscale-agent
      tag: <version>
    resources:
      requests:
        cpu: "100m"
        memory: "50Mi"
 
  cadvisor:
    image:
      repository: gcr.io/cadvisor/cadvisor
      tag: v0.52.1
    resources:
      requests:
        cpu: "100m"
        memory: "200Mi"
 
  # Storage configuration
  storageClassName: "gp3"
  existingPvcName: ""
 
# Platform-specific settings (uncomment as needed)
# openshift:
#   waveAutoscale:
#     scc:
#       create: true
#   waveAutoscaleAgent:
#     scc:
#       create: true

검증 및 문제 해결

설치 전 체크리스트

  1. Kubernetes 버전 호환성을 확인합니다 (1.26 이상)
  2. 사이징 가이드라인에 따라 클러스터 리소스가 충분한지 확인합니다
  3. 라이선스 키가 유효한지 확인합니다
  4. StorageClass를 사용할 수 있는지 확인합니다
  5. 네트워크 정책이 구성 요소 간 통신을 허용하는지 확인합니다

자주 발생하는 설정 문제

라이선스 검증

kubectl logs -n wave-autoscale wave-autoscale-0 -c core | grep LICENSE

메트릭 수집

# Verify agent is collecting metrics
kubectl logs -n wave-autoscale -l app=wave-autoscale-agent | grep metrics

스토리지 문제

# Check PVC status
kubectl get pvc -n wave-autoscale

성능 튜닝

고부하 클러스터 (1000 vCPU 초과)

  • WA_METRIC_STORE_SAVE_BATCH_WORKER_CNT100으로 늘립니다
  • WA_EVENT_QUEUE_CHANNEL_CAPACITY128로 설정합니다
  • 워크로드 변동성에 맞춰 worker 주기를 조정합니다

리소스가 제한적인 환경

  • 스토리지 요구량을 줄이려면 WA_DATA_SAVE_DAYS7로 설정합니다
  • CPU 사용량을 줄이려면 worker 주기를 늘립니다
  • 모니터링 전용 배포라면 읽기 전용 모드를 고려하세요

보안 고려 사항

네트워크 정책

다음 통신을 허용하도록 네트워크 정책을 구성하세요:

  • 포트 3024~3027에서 Core 구성 요소 간 통신
  • Agent와 kubelet 간 통신 (포트 10250)
  • 필요하다면 Web Console(포트 3025)에 대한 외부 접근

RBAC 설정

Wave는 다음과 같은 RBAC 권한이 필요합니다:

  • 모든 Kubernetes 리소스에 대한 읽기 권한
  • 워크로드 리소스(Deployment, StatefulSet 등)에 대한 쓰기 권한
  • 노드와 pod로부터의 메트릭 수집

GPU Features (preview)

Wave의 GPU 기능은 프리뷰 기간 동안 feature flag로 제어됩니다. 아래 환경 변수로 활성화할 수 있습니다.

VariableDefaultDescription
WA_GPU_ENABLEDfalseWave GPU 기능을 위한 마스터 플래그입니다.
WA_GPU_COST_TRACKING_ENABLEDfalseGPU 비용 추적 작업을 활성화합니다.
WA_GPU_WASTE_DETECTION_ENABLEDfalseGPU 낭비 탐지 작업을 활성화합니다.
WA_GPU_COST_TRACKING_TASK_INTERVAL_MINUTES10비용 추적 작업 주기(분)입니다.
WA_GPU_WASTE_DETECTION_TASK_INTERVAL_MINUTES10낭비 탐지 작업 주기(분)입니다.

기능에 대한 자세한 내용은 Wave GPU 섹션을 참고하세요.