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.3image.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.persistence.enabledEnable persistent storage for SQLite falseconfig.persistence.storageClassNameStorage class name (empty = default) ""config.persistence.accessModePVC access mode ReadWriteOnceconfig.persistence.sizePVC storage size 1Gi
Parameter Description Default config.cloudProviderCloud provider: aws, gcp, azure, ovh, scaleway, on-prem 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 8000config.corsOriginsAllowed CORS origins (comma-separated) *config.apiRateLimitRate limit for API endpoints (slowapi format) 60/minute
Parameter Description Default monitoring.serviceMonitor.enabledCreate a ServiceMonitor for Prometheus Operator truemonitoring.serviceMonitor.namespaceNamespace for the ServiceMonitor (must match Prometheus selector) monitoringmonitoring.serviceMonitor.intervalScrape interval 30smonitoring.networkPolicy.enabledCreate a NetworkPolicy allowing Prometheus to reach GreenKube truemonitoring.networkPolicy.prometheusNamespaceNamespace where Prometheus runs monitoring
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 ""secrets.boaviztaTokenBoavizta API token ""secrets.apiKeyBearer token for API authentication (empty = no auth) ""secrets.dbConnectionStringPostgreSQL connection string (only if not using bundled postgres) ""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 (auto-generated if empty) ""postgres.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, scaleway, on-premawsDEFAULT_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 8000GREENKUBE_API_KEYBearer token for API authentication (empty = no auth) — CORS_ORIGINSAllowed CORS origins (comma-separated) *RECOMMENDATION_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 .