Hi, for this blog post , i will share my journey on enabling kubecost with cloud integration on my kubernetes cluster .
Prerequisite
1. Kubernetes cluster ; my case will be AKS
2. Azure AD SPN
3. Storage Account
4.Tools
4.1 Helm
4.2 Terraform(Optional)
5. Ingress Controller (Optional)
Step 1- Get kubecost running on your AKS cluster
There are few guide available even on microsoft document tation , but i will share on utilizing helm chart provider in terraform.
1.1 - Create a kubecost namespace
resource "kubernetes_namespace" "kubecost" {
metadata {
annotations = {
name = "kubecost-annotation"
}
name = "kubecost"
}
}
1.2 install the kubecost helm chart
resource "helm_release" "kubecost-helm" {
name = "kubecost"
repository = "https://kubecost.github.io/cost-analyzer/"
chart = "cost-analyzer"
namespace = kubernetes_namespace.kubecost.metadata[0].name
set {
name = "kubecostToken"
value = "aGVsbUBrdWJlY29zdC5jb20=xm343yadf98"
#value = "YWJkdWwubXVuaXI5NEBvdXRsb29rLmNvbQ==xm343yadf98"
}
}
For kubetoken , u may use either one as both are working as per my testing
Then u can apply the terraform code and if you want to add other parameter , you may add other like what has been done here - kubecost helm
set {
name = "kubecostProductConfigs.clusterName"
value = var.aks-name
}
set {
name = "ingress.enabled"
value = true
}
set {
name = "ingress.hosts"
value = "kubecost.munirtajudin.xyz"
}
#Set the currency
set {
name = "kubecostProductConfigs.currencyCode"
value = "USD"
}
#
# Set the region
set {
name = "kubecostProductConfigs.azureBillingRegion"
value = "US"
}
# Generate a secret based on the Azure configuration provided below
set {
name = "kubecostProductConfigs.createServiceKeySecret"
value = true
}
# Azure Subscription ID
set {
name = "kubecostProductConfigs.azureSubscriptionID"
value = var.sub-id
}
# Azure Client ID
set {
name = "kubecostProductConfigs.azureClientID"
value = var.client-id
}
# Azure Client Password
set {
name = "kubecostProductConfigs.azureClientPassword"
value = var.client-sec
}
# Azure Tenant ID
set {
name = "kubecostProductConfigs.azureTenantID"
value = var.tenant-id
}
you may do port forward to 9090 and access the kubecost dashboard. do give it a few minute because kubecost will take sometimes to collect the metric.
see you in part 2 where it will focus on enabling cloud integration with azure cost management.
thanks for reading and do provide feedback if any
No comments:
Post a Comment