summaryrefslogtreecommitdiff
path: root/doc/user/clusters/cost_management.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/user/clusters/cost_management.md')
-rw-r--r--doc/user/clusters/cost_management.md74
1 files changed, 74 insertions, 0 deletions
diff --git a/doc/user/clusters/cost_management.md b/doc/user/clusters/cost_management.md
new file mode 100644
index 00000000000..f13be15c6bc
--- /dev/null
+++ b/doc/user/clusters/cost_management.md
@@ -0,0 +1,74 @@
+---
+stage: Configure
+group: Configure
+info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers
+---
+
+# Cluster cost management **(ULTIMATE)**
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/216737) in [GitLab Ultimate](https://about.gitlab.com/pricing/) 13.5.
+
+Cluster cost management provides insights into cluster resource usage. GitLab provides an example
+[`kubecost-cost-model`](https://gitlab.com/gitlab-examples/kubecost-cost-model/)
+project that uses GitLab's Prometheus integration and
+[Kubecost's `cost-model`](https://github.com/kubecost/cost-model) to provide cluster cost
+insights within GitLab:
+
+![Example dashboard](img/kubecost_v13_5.png)
+
+## Configure cluster cost management
+
+To get started with cluster cost management, you need [Maintainer](../permissions.md)
+permissions in a project or group.
+
+1. Clone the [`kubecost-cost-model`](https://gitlab.com/gitlab-examples/kubecost-cost-model/)
+ example repository, which contains minor modifications to the upstream Kubecost
+ `cost-model` project:
+ - Configures your Prometheus endpoint to the GitLab-managed Prometheus. You may
+ need to change this value if you use a non-managed Prometheus.
+ - Adds the necessary annotations to the deployment manifest to be scraped by
+ GitLab-managed Prometheus.
+ - Changes the Google Pricing API access key to GitLab's access key.
+ - Contains definitions for a custom GitLab Metrics dashboard to show the cost insights.
+1. Connect GitLab with Prometheus, depending on your configuration:
+ - *If Prometheus is already configured,* navigate to **Settings > Integrations > Prometheus**
+ to provide the API endpoint of your Prometheus server.
+ - *For GitLab-managed Prometheus,* navigate to your cluster's **Details** page,
+ select the **Applications** tab, and install Prometheus. The integration is
+ auto-configured for you.
+1. Set up the Prometheus integration on the cloned example project.
+1. Add the Kubecost `cost-model` to your cluster:
+ - *For non-managed clusters*, deploy it with GitLab CI/CD.
+ - *To deploy it manually*, use the following commands:
+
+ ```shell
+ kubectl create namespace cost-model
+ kubectl apply -f kubernetes/ --namespace cost-model
+ ```
+
+To access the cost insights, navigate to **Operations > Metrics** and select
+the `default_costs.yml` dashboard. You can [customize](#customize-the-cost-dashboard)
+this dashboard.
+
+### Customize the cost dashboard
+
+You can customize the cost dashboard by editing the `.gitlab/dashboards/default_costs.yml`
+file or creating similar dashboard configuration files. To learn more, read about
+[customizing dashboards in our documentation](/ee/operations/metrics/dashboards/).
+
+#### Available metrics
+
+Metrics contain both instance and node labels. The instance label will be deprecated in a future version.
+
+- `node_cpu_hourly_cost` - Hourly cost per vCPU on this node.
+- `node_gpu_hourly_cost` - Hourly cost per GPU on this node.
+- `node_ram_hourly_cost` - Hourly cost per gigabyte of memory on this node.
+- `node_total_hourly_cost` - Total node cost per hour.
+- `container_cpu_allocation` - Average number of CPUs requested/used over the previous minute.
+- `container_gpu_allocation` - Average number of GPUs requested over the previous minute.
+- `container_memory_allocation_bytes` - Average bytes of RAM requested/used over the previous minute.
+- `pod_pvc_allocation` - Bytes provisioned for a PVC attached to a pod.
+- `pv_hourly_cost` - Hourly cost per GB on a persistent volume.
+
+Some examples are provided in the
+[`kubecost-cost-model` repository](https://gitlab.com/gitlab-examples/kubecost-cost-model/-/blob/master/PROMETHEUS.md#example-queries).