Installing on STACKIT
OpenCost may be installed on Kubernetes clusters running on STACKIT, including the STACKIT Kubernetes Engine (SKE).
You will need to install Prometheus, create your OpenCost namespace, configure your cluster pricing and cloud costs, and then install OpenCost.
Install Prometheus
Prometheus is a prerequisite for OpenCost installation. OpenCost requires Prometheus for scraping metrics and data storage. For the installation of Prometheus please use the following command:
helm install prometheus --repo https://prometheus-community.github.io/helm-charts prometheus \
--namespace prometheus-system --create-namespace \
--set prometheus-pushgateway.enabled=false \
--set alertmanager.enabled=false \
-f https://raw.githubusercontent.com/opencost/opencost/develop/kubernetes/prometheus/extraScrapeConfigs.yaml
This will install Prometheus in the prometheus-system namespace with default settings for use with OpenCost.
If you wish to use a different Prometheus installation or work with another compatible technology, please refer to the Prometheus installation page.
Create the OpenCost Namespace
Create the opencost namespace for your installation:
kubectl create namespace opencost
Alternate namespaces may be used if necessary.
STACKIT Configuration
Cost Allocation
OpenCost will automatically detect STACKIT as the cloud service provider (CSP) on SKE clusters by detecting the node label node.stackit.cloud/ske. You can also set the CLOUD_PROVIDER environment variable to STACKIT to force detection.
When STACKIT is detected as the CSP, OpenCost retrieves VM, GPU, and storage pricing from the STACKIT PIM API. No API key is required to retrieve the public pricing data.
Pricing is fetched at startup and includes:
- VM flavors with per-hour cost, vCPU, and RAM
- GPU instances (NVIDIA A100, L40S, H100 HGX) with per-GPU cost
- Block storage with per-GB/hour cost by storage class
STACKIT Cloud Costs
The Cloud Costs feature is included in the stable releases as of 1.108.0. Please ensure you have the latest release to access this new feature.
To configure Cloud Costs for your STACKIT account, you need a STACKIT service account with cost reader permissions.
<YOUR-CUSTOMER-ACCOUNT-ID>is your STACKIT organization (customer account) ID.<YOUR-PROJECT-ID>is the STACKIT project ID for the project you want to monitor.- The service account key file provides authentication to the STACKIT Cost API.
Create the service account secret
kubectl create secret generic stackit-sa-key \
-n opencost \
--from-file=sa_key.json=/path/to/your/sa_key.json
Configure cloud-integration.json
{
"stackit": {
"costApi": [
{
"customerAccountId": "<YOUR-CUSTOMER-ACCOUNT-ID>",
"projectId": "<YOUR-PROJECT-ID>",
"serviceAccountKeyPath": "/var/secrets/sa_key.json"
}
]
}
}
Load the cloud-integration.json into a Kubernetes secret in your opencost namespace.
kubectl create secret generic cloud-costs --from-file=./cloud-integration.json --namespace opencost
Update your local OpenCost Helm values file to match the name of the secret and enable Cloud Costs:
opencost:
cloudIntegrationSecret: cloud-costs
cloudCost:
enabled: true
Mount the service account key
Add the following to your Helm values to make the key available to OpenCost:
extraVolumes:
- name: stackit-sa-key
secret:
secretName: stackit-sa-key
opencost:
exporter:
extraVolumeMounts:
- name: stackit-sa-key
mountPath: /var/secrets
readOnly: true
You may refer to the Cloud Costs documentation for configuring Cloud Costs for multiple accounts and cloud service providers.
Install OpenCost
Helm is the preferred installation method for OpenCost.
Using the OpenCost Helm Chart
You may check out the source for the OpenCost Helm Chart or you may install the Helm chart directly to your Kubernetes cluster. Review the values.yaml for the settings available for customization. With your custom settings in the Helm values file local.yaml, install OpenCost:
helm install opencost --repo https://opencost.github.io/opencost-helm-chart opencost \
--namespace opencost -f local.yaml
Updating OpenCost via Helm
Upgrading the Helm chart version or updating settings may be done with the following:
helm upgrade opencost --repo https://opencost.github.io/opencost-helm-chart opencost \
--namespace opencost -f local.yaml
Installing with the OpenCost Manifest
Installing from the OpenCost manifest is supported on STACKIT.
For basic Kubernetes Cost Allocations without Cloud Costs or any customizations you may use the OpenCost manifest. Prometheus is still required and the Helm chart installation is recommended for anything beyond this simple use case.
kubectl apply --namespace opencost -f https://raw.githubusercontent.com/opencost/opencost/develop/kubernetes/opencost.yaml

