GreenKube follows the 12-Factor App methodology — all configuration is driven by environment variables. When deployed via Helm, these are set through values.yaml.
Parameter Description Default image.repositoryDocker image repository greenkube/greenkubeimage.tagImage tag 0.2.0image.pullPolicyImage pull policy IfNotPresent
Parameter Description Default config.db.typeStorage backend: postgres, sqlite, elasticsearch postgresconfig.db.pathSQLite file path (if type is sqlite) /data/greenkube_data.dbconfig.db.schemaPostgreSQL schema public
Parameter Description Default config.cloudProviderCloud provider: aws, gcp, azure, ovh, scaleway awsconfig.defaultZoneFallback carbon zone (ISO country code) FRconfig.defaultIntensityDefault grid intensity (gCO₂e/kWh) when API unavailable 500.0config.normalizationGranularityIntensity lookup granularity: hour, day, none hourconfig.defaults.puePower Usage Effectiveness factor 1.3config.defaults.instance.vcoresDefault vCPU count for unknown instances 1config.defaults.instance.minWattsDefault min watts per vCPU 1.0config.defaults.instance.maxWattsDefault max watts per vCPU 10.0
Parameter Description Default config.prometheus.urlPrometheus URL (empty = auto-discovery) ""config.prometheus.verifyCertsVerify TLS certificates trueconfig.prometheus.queryRangeStepRange query step interval 5mconfig.prometheus.queryRangeMaxSamplesMax data points per range query 10000config.prometheus.nodeInstanceLabelNode label for instance type label_node_kubernetes_io_instance_type
Parameter Description Default config.opencost.urlOpenCost URL (empty = auto-discovery) ""config.opencost.verifyCertsVerify TLS certificates true
Parameter Description Default config.nodeAnalysisIntervalInterval for node analysis 5mconfig.nodeDataMaxAgeDaysMax age for historical node data 30
Parameter Description Default config.api.enabledEnable the API server trueconfig.api.hostAPI listen address 0.0.0.0config.api.portAPI listen port 8000
Parameter Description Default config.recommendations.lookbackDaysDays of data for analysis 7config.recommendations.rightsizingCpuThresholdCPU usage ratio triggering rightsizing 0.3config.recommendations.rightsizingMemoryThresholdMemory usage ratio triggering rightsizing 0.3config.recommendations.rightsizingHeadroomSafety headroom multiplier 1.2config.recommendations.zombieCostThresholdCost threshold for zombie detection ($) 0.01config.recommendations.zombieEnergyThresholdEnergy threshold for zombie detection (J) 1000config.recommendations.autoscalingCvThresholdCV threshold for autoscaling suggestion 0.7config.recommendations.autoscalingSpikeRatioMax/avg ratio for spike detection 3.0config.recommendations.carbonAwareThresholdIntensity ratio for carbon-aware scheduling 1.5config.recommendations.nodeUtilizationThresholdNode utilization threshold 0.2config.recommendSystemNamespacesInclude system namespaces in recommendations false
Parameter Description Default secrets.electricityMapsTokenElectricity Maps API token dummy_tokensecrets.boaviztaTokenBoavizta API token ""secrets.dbConnectionStringPostgreSQL connection string ""secrets.prometheus.usernamePrometheus basic auth username ""secrets.prometheus.passwordPrometheus basic auth password ""secrets.prometheus.bearerTokenPrometheus bearer token ""
Parameter Description Default postgres.enabledDeploy bundled PostgreSQL truepostgres.image.repositoryPostgreSQL image postgrespostgres.image.tagPostgreSQL version 17-alpinepostgres.auth.usernameDatabase username greenkubepostgres.auth.passwordDatabase password greenkube_passwordpostgres.auth.databaseDatabase name greenkubepostgres.persistence.enabledEnable persistent storage truepostgres.persistence.sizeStorage size 1Gi
Parameter Description Default resources.requests.cpuCPU request 100mresources.requests.memoryMemory request 128Miresources.limits.cpuCPU limit 500mresources.limits.memoryMemory limit 512Mi
When running outside Helm (Docker, source), use these environment variables:
Variable Description Default DB_TYPEpostgres, sqlite, elasticsearchpostgresDB_CONNECTION_STRINGPostgreSQL connection URL — DB_PATHSQLite file path /data/greenkube_data.dbELASTICSEARCH_HOSTSElasticsearch endpoint(s) — PROMETHEUS_URLPrometheus server URL Auto-discovery OPENCOST_URLOpenCost server URL Auto-discovery ELECTRICITY_MAPS_TOKENElectricity Maps API token — BOAVIZTA_TOKENBoavizta API token — CLOUD_PROVIDERaws, gcp, azure, ovh, scalewayawsDEFAULT_ZONEFallback carbon zone FRDEFAULT_INTENSITYFallback grid intensity (gCO₂e/kWh) 500.0LOG_LEVELLogging level INFONORMALIZATION_GRANULARITYhour, day, nonehourPROMETHEUS_QUERY_RANGE_STEPRange query step 5mNODE_ANALYSIS_INTERVALNode analysis interval 5mNODE_DATA_MAX_AGE_DAYSMax node data age 30API_HOSTAPI listen address 0.0.0.0API_PORTAPI listen port 8000RECOMMENDATION_LOOKBACK_DAYSRecommendation lookback 7RIGHTSIZING_CPU_THRESHOLDCPU rightsizing threshold 0.3ZOMBIE_COST_THRESHOLDZombie detection cost ($) 0.01
Tip
GreenKube works without an Electricity Maps token. When no token is provided, the DEFAULT_INTENSITY value (default: 500 gCO₂e/kWh) is used for all zones. For accurate, zone-specific carbon data, get a free token at electricitymaps.com .