Costos Kubernetes (add-on)Costos Kubernetes (add-on)
Costos Kubernetes muestra quién gasta qué dentro de sus clústeres — por clúster, namespace y workload — con los datos de facturación reales de cada nube, y detecta capacidad pagada que nadie usa. Cuesta US$35 / CLP 29.000 al mes por cuenta de nube con el add-on activo, en cualquier plan; en Enterprise viene incluido.
Costos Kubernetes mostra quem gasta o quê dentro dos seus clusters — por cluster, namespace e workload — com os dados de faturamento reais de cada nuvem, e detecta capacidade paga que ninguém usa. Custa US$35 / CLP 29.000 por mês por conta de nuvem com o add-on ativo, em qualquer plano; no Enterprise vem incluído.
Dónde está·menú lateral→Postura→Costos Kubernetes·Se contrata en Ajustes → Suite Shield, con activación por cuenta.
Onde fica·menu lateral→Postura→Costos Kubernetes·Contrata-se em Configurações → Suite Shield, com ativação por conta.
Qué entrega en cada nube (honesto)O que entrega em cada nuvem (honesto)
Los datos los genera su propia nube; Cloura solo los lee. Por eso el alcance difiere por proveedor y hay que decirlo tal cual:
Os dados são gerados pela sua própria nuvem; a Cloura apenas os lê. Por isso o alcance difere por provedor e é preciso dizer isso claramente:
- AWS (EKS) — costo por namespace, workload y pod (Split Cost Allocation Data + Data Export CUR 2.0 leído vía Athena), capacidad ociosa con el UnusedCost del propio billing, labels K8s propios (equipo / centro de costo), Fargate integrado y GPU por pod si el export la trae. Latencia: ~24 horas.
- AWS (EKS) — custo por namespace, workload e pod (Split Cost Allocation Data + Data Export CUR 2.0 lido via Athena), capacidade ociosa com o UnusedCost do próprio billing, labels K8s próprios (time / centro de custo), Fargate integrado e GPU por pod se o export a trouxer. Latência: ~24 horas.
- GCP (GKE) — costo por namespace y workload (detailed billing export en BigQuery + GKE cost allocation), workloads sin requests afirmados por el propio Google y labels k8s-label/*. No llega a pod. Latencia: hasta 3 días.
- GCP (GKE) — custo por namespace e workload (detailed billing export no BigQuery + GKE cost allocation), workloads sem requests afirmados pelo próprio Google e labels k8s-label/*. Não chega a pod. Latência: até 3 dias.
- Azure (AKS) — costo por clúster (el gasto real del node resource group) y ahorro detectado por Azure Advisor sobre los nodos. El costo por namespace solo existe en el portal de Azure (Microsoft no lo expone por API): Cloura verifica la cascada de elegibilidad —tier Standard/Premium, add-on cost-analysis, oferta EA o MCA— y le deja el deep-link a la vista Kubernetes del portal.
- Azure (AKS) — custo por cluster (o gasto real do node resource group) e economia detectada pelo Azure Advisor sobre os nós. O custo por namespace só existe no portal do Azure (a Microsoft não o expõe por API): a Cloura verifica a cascata de elegibilidade —tier Standard/Premium, add-on cost-analysis, oferta EA ou MCA— e deixa o deep-link para a vista Kubernetes do portal.
Activación por nube (Enablement as Code)Ativação por nuvem (Enablement as Code)
Igual que Fix-as-Code entrega el arreglo listo, estos bloques entregan la habilitación lista: usted los copia y los ejecuta en su nube — Cloura nunca escribe en ella. La misma guía aparece en la app, dentro de la sección Costos Kubernetes.
Assim como o Fix-as-Code entrega o conserto pronto, estes blocos entregam a habilitação pronta: você os copia e executa na sua nuvem — a Cloura nunca escreve nela. O mesmo guia aparece no app, dentro da seção Costos Kubernetes.
AWS · EKS
Requiere permisos de administración de Billing en la cuenta payer. Primero el paso manual: Billing → Cost Management preferences → Split Cost Allocation Data (habilitar para EKS). Luego el Data Export CUR 2.0 — en Terraform/OpenTofu:
Requer permissões de administração de Billing na conta payer. Primeiro o passo manual: Billing → Cost Management preferences → Split Cost Allocation Data (habilitar para EKS). Depois o Data Export CUR 2.0 — em Terraform/OpenTofu:
resource "aws_s3_bucket" "cur" {
bucket = "mi-bucket-cur-cloura" # elija un nombre propio
}
resource "aws_bcmdataexports_export" "cur2" {
export {
name = "cloura-cur2-k8s"
data_query {
query_statement = <<-SQL
SELECT line_item_resource_id, line_item_usage_start_date, resource_tags,
split_line_item_split_cost, split_line_item_unused_cost,
split_line_item_split_usage, split_line_item_actual_usage,
split_line_item_reserved_usage
FROM COST_AND_USAGE_REPORT
SQL
table_configurations = {
COST_AND_USAGE_REPORT = {
INCLUDE_RESOURCES = "TRUE"
INCLUDE_SPLIT_COST_ALLOCATION_DATA = "TRUE"
TIME_GRANULARITY = "HOURLY"
}
}
}
destination_configurations {
s3_destination {
s3_bucket = aws_s3_bucket.cur.bucket
s3_prefix = "cur2"
s3_region = "us-east-1"
s3_output_configurations {
output_type = "CUSTOM"
format = "PARQUET"
compression = "PARQUET"
overwrite = "OVERWRITE_REPORT"
}
}
}
refresh_cadence { frequency = "SYNCHRONOUS" }
}
}Al rol de solo lectura de Cloura hay que sumarle la lectura del export (Athena/Glue y el bucket; la
única escritura del contrato es el prefijo athena-results/, los resultados de la propia consulta). El
asistente de conexión de la app trae la política lista para copiar en dos formatos — CLI y Terraform/OpenTofu —
certificados equivalentes (mismo JSON resultante). Los datos aparecen ~24 h después.
Ao papel somente leitura da Cloura é preciso somar a leitura do export (Athena/Glue e o bucket; a
única escrita do contrato é o prefixo athena-results/, os resultados da própria consulta). O
assistente de conexão do app traz a política pronta para copiar em dois formatos — CLI e Terraform/OpenTofu —
certificados equivalentes (mesmo JSON resultante). Os dados aparecem ~24 h depois.
# Add-on Costos Kubernetes: el mismo grant que la pestana CLI, como IaC.
# Politica en linea ClouraK8sCostCUR sobre el rol ClouraReadOnly, acotada por ARN:
# la UNICA escritura es athena-results/ (los resultados de la propia consulta).
variable "cur_bucket" {
description = "Bucket del Data Export CUR 2.0 (el de cur_export.tf)"
type = string
}
data "aws_caller_identity" "actual" {}
locals {
acct = data.aws_caller_identity.actual.account_id
}
resource "aws_iam_role_policy" "cloura_k8s_cost_cur" {
name = "ClouraK8sCostCUR"
role = "ClouraReadOnly"
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Effect = "Allow"
Action = ["athena:StartQueryExecution", "athena:GetQueryExecution", "athena:GetQueryResults"]
Resource = "arn:aws:athena:us-east-1:${local.acct}:workgroup/primary"
},
{
Effect = "Allow"
Action = ["glue:GetDatabase", "glue:GetDatabases", "glue:GetTable", "glue:GetTables", "glue:GetPartitions"]
Resource = [
"arn:aws:glue:us-east-1:${local.acct}:catalog",
"arn:aws:glue:us-east-1:${local.acct}:database/*",
"arn:aws:glue:us-east-1:${local.acct}:table/*/*",
]
},
{
Effect = "Allow"
Action = ["s3:GetObject", "s3:ListBucket"]
Resource = ["arn:aws:s3:::${var.cur_bucket}", "arn:aws:s3:::${var.cur_bucket}/*"]
},
{
Effect = "Allow"
Action = "s3:PutObject"
Resource = "arn:aws:s3:::${var.cur_bucket}/athena-results/*"
},
]
})
}GCP · GKE
PROJECT_ID=$(gcloud config get-value project 2>/dev/null)
SA=cloura-readonly@$PROJECT_ID.iam.gserviceaccount.com
# 1) Cost allocation por namespace/workload en cada cluster GKE
gcloud container clusters update MI_CLUSTER --region MI_REGION --enable-cost-allocation
# 2) Dataset del detailed billing export + lectura para Cloura
bq mk --dataset --location=US $PROJECT_ID:billing_export
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SA" --role="roles/bigquery.jobUser"En Terraform, el toggle del clúster es cost_management_config { enabled = true } en
google_container_cluster. Paso manual honesto (~2 clics, no automatizable): el
Detailed usage cost export se activa en la consola de Billing hacia ese dataset. Al terminar, registre el
dataset en el campo del conector GCP de Cloura. Latencia: hasta 3 días.
No Terraform, o toggle do cluster é cost_management_config { enabled = true } em
google_container_cluster. Passo manual honesto (~2 cliques, não automatizável): o
Detailed usage cost export é ativado no console de Billing para esse dataset. Ao terminar, registre o
dataset no campo do conector GCP da Cloura. Latência: até 3 dias.
Azure · AKS
az aks update --resource-group MI_GRUPO --name MI_CLUSTER \
--tier standard --enable-cost-analysisEn Terraform: sku_tier = "Standard" y cost_analysis_enabled = true en
azurerm_kubernetes_cluster. Elegibilidad: tier Standard/Premium y oferta EA o MCA
(pay-as-you-go legacy y CSP no son elegibles — Cloura lo detecta y se lo dice en vez de dejar la vista vacía).
Recuerde: el add-on de Microsoft despliega un pod gestionado (~200 MB) en el clúster.
No Terraform: sku_tier = "Standard" e cost_analysis_enabled = true em
azurerm_kubernetes_cluster. Elegibilidade: tier Standard/Premium e oferta EA ou MCA
(pay-as-you-go legado e CSP não são elegíveis — a Cloura detecta isso e avisa em vez de deixar a vista vazia).
Lembre-se: o add-on da Microsoft implanta um pod gerenciado (~200 MB) no cluster.
Limitaciones, tal cualLimitações, como são
- Los datos de costo llegan con la latencia del billing de cada nube (~24 h en AWS, hasta 3 días en GCP); no es telemetría en vivo.
- Os dados de custo chegam com a latência do billing de cada nuvem (~24 h na AWS, até 3 dias no GCP); não é telemetria ao vivo.
- Azure no expone el costo por namespace por API: Cloura entrega el costo por clúster y el camino al portal, no promete lo que Microsoft no da.
- O Azure não expõe o custo por namespace por API: a Cloura entrega o custo por cluster e o caminho para o portal, não promete o que a Microsoft não dá.
- Cuando una fuente no se puede leer (permiso, export recién creado), Cloura lo dice y no afirma nada: nunca inventa un cero.
- Quando uma fonte não pode ser lida (permissão, export recém-criado), a Cloura avisa e não afirma nada: nunca inventa um zero.
- Fargate factura por recursos aprovisionados, no por uso: su "uso real" puede diferir de lo facturado y así se muestra.
- O Fargate fatura por recursos provisionados, não por uso: seu "uso real" pode diferir do faturado e é assim que aparece.