Skip to main content
Global
AIMenta
Blog

APAC Cloud Cost Optimization Guide 2026: Infracost, OpenCost, and Kubecost for Kubernetes FinOps

A practitioner guide for APAC platform and FinOps teams managing Kubernetes cloud spend in 2026 — covering Infracost for shift-left Terraform cost estimation surfacing infrastructure spend impact in GitHub and GitLab pull requests, OpenCost for CNCF open-source Kubernetes cost allocation attributing cloud spend to namespaces and deployments in real time, and Kubecost for multi-cluster FinOps with rightsizing recommendations, budget governance, and RBAC-scoped APAC team cost visibility.

AE By AIMenta Editorial Team ·

The APAC Cloud Cost Visibility Gap

APAC engineering teams running Kubernetes workloads on AWS, Google Cloud, or Azure face a consistent financial operations challenge: cloud bills arrive at the end of the month with thousands of line items at the resource level, but APAC engineering decisions — which services to run, how to size them, which infrastructure to add — are made weeks earlier in Terraform pull requests and Kubernetes YAML files.

The gap between APAC engineering decisions and their financial consequences produces three chronic problems:

APAC infrastructure cost surprises: An APAC engineer upgrades a database instance in a Terraform PR — a reasonable technical decision — without knowing it adds $800/month to the APAC cloud bill.

Unknown per-service APAC Kubernetes cost: APAC cloud bills show EC2/GKE node costs, not which APAC services running on those nodes consume how much. APAC teams can't optimize what they can't measure at the service level.

APAC FinOps without APAC engineering leverage: APAC finance teams see the aggregate APAC cloud spend; APAC engineering teams make the decisions that drive it. Without shared cost visibility, APAC optimization conversations lack specific APAC action items.

Three tools address different stages of the APAC cloud cost lifecycle:

Infracost — shift-left cost estimation: surfaces APAC cost impact of Terraform changes in pull requests, before they're applied.

OpenCost — real-time Kubernetes cost allocation: attributes running APAC cloud spend to namespaces, deployments, and teams.

Kubecost — multi-cluster FinOps: adds rightsizing recommendations, multi-cluster aggregation, and budget governance on top of OpenCost.


Infracost: APAC Cloud Cost Shift Left

The APAC Terraform PR without Infracost

Without Infracost — APAC Terraform PR:

Engineer: "Upgrading APAC payment RDS from db.t3.medium to db.r6g.xlarge
           for better performance. Reviewed and LGTM."

APAC Reviewer: "Looks good, merging."

30 days later — APAC cloud bill:
  APAC payment RDS: $847/month (was $85/month with db.t3.medium)
  → $762/month APAC cost increase undetected at review time
With Infracost — APAC Terraform PR (automated PR comment):

Infracost Cloud Cost Estimate:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Project: apac-payments-infrastructure

 Name                              Monthly Qty  Unit    Price    Monthly
─────────────────────────────────────────────────────────────────────────
 aws_db_instance.apac_payment_rds
   ├─ Database instance (modified)        730  hours  $1.152    $840.96
   └─ Storage (modified)                   20  GB        $0.115   $2.30
─────────────────────────────────────────────────────────────────────────
 TOTAL MONTHLY COST                                            +$762.04

APAC cost diff: +$762/month vs current

Infracost GitHub Actions setup

# .github/workflows/infracost.yml — APAC PR cost estimation
name: APAC Infracost Cloud Cost Estimate

on:
  pull_request:
    paths:
      - 'terraform/**'

jobs:
  infracost:
    name: APAC Infracost
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write

    steps:
      - uses: actions/checkout@v4

      - name: Setup Infracost
        uses: infracost/actions/setup@v3
        with:
          api-key: ${{ secrets.INFRACOST_API_KEY }}

      # Generate APAC Terraform plan (required for accurate cost diff)
      - name: APAC Terraform plan
        run: |
          cd terraform/apac-infrastructure
          terraform init -backend-config="bucket=apac-terraform-state"
          terraform plan -out=apac-tfplan.json
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

      # Generate APAC Infracost cost estimate from plan
      - name: APAC Infracost diff
        run: |
          infracost diff \
            --path terraform/apac-infrastructure \
            --terraform-plan-flags="-out=apac-tfplan.json" \
            --format=json \
            --out-file=/tmp/apac-infracost.json

      # Post APAC cost diff as PR comment
      - name: Post APAC Infracost comment
        run: |
          infracost comment github \
            --path=/tmp/apac-infracost.json \
            --repo=$GITHUB_REPOSITORY \
            --github-token=${{ secrets.GITHUB_TOKEN }} \
            --pull-request=${{ github.event.pull_request.number }} \
            --behavior=update

Infracost budget policies (Infracost Cloud)

# infracost.yml — APAC budget policy: block PRs exceeding threshold
version: 0.1
policies:
  - name: apac-cost-budget
    description: "Block APAC PRs adding more than $500/month of infrastructure"
    type: percentage_threshold
    percentage_threshold: 25    # Alert if APAC cost increases >25%
    actions:
      - type: block              # Block merge if APAC threshold exceeded
        comment_markdown: |
          ## APAC Cost Budget Policy Failed
          This APAC Terraform change increases monthly costs by {{ .PercentageChange }}%
          ({{ .CostDiff }}), exceeding the APAC 25% threshold.
          Approval required from APAC FinOps team before merging.

OpenCost: CNCF Kubernetes Cost Allocation

Installing OpenCost in APAC clusters

# Install OpenCost in APAC cluster (Helm)
helm repo add opencost https://opencost.github.io/opencost-helm-chart
helm repo update

helm install opencost opencost/opencost \
  --namespace opencost \
  --create-namespace \
  --set opencost.exporter.cloudProviderApiKey="APAC_AWS_PRICING_API_KEY" \
  --set opencost.prometheus.internal.serviceName=kube-prometheus-stack-prometheus \
  --set opencost.prometheus.internal.namespaceName=monitoring

# Verify APAC OpenCost is running
kubectl get pods -n opencost
# NAME                       READY   STATUS    RESTARTS
# opencost-7d9b8c4f5-xkn2p   2/2     Running   0

Querying APAC cost allocation

# Port-forward APAC OpenCost API
kubectl port-forward -n opencost svc/opencost 9090:9090

# APAC namespace cost allocation for the past 7 days
curl "http://localhost:9090/allocation?window=7d&aggregate=namespace" | \
  python3 -c "
import sys, json
data = json.load(sys.stdin)
for ns, cost in data['data'][0].items():
    print(f'{ns}: \${cost[\"totalCost\"]:.2f}/7d  (CPU: \${cost[\"cpuCost\"]:.2f}, RAM: \${cost[\"ramCost\"]:.2f})')
"
# Output:
# apac-payments: $1,240.30/7d  (CPU: $890.20, RAM: $350.10)
# apac-kyc: $380.50/7d  (CPU: $280.00, RAM: $100.50)
# apac-notification: $145.20/7d  (CPU: $95.00, RAM: $50.20)
# monitoring: $280.40/7d  (CPU: $180.00, RAM: $100.40)

OpenCost Prometheus metrics for APAC Grafana dashboards

# prometheus-opencost-scrape.yaml — scrape APAC OpenCost metrics
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: opencost
  namespace: opencost
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: opencost
  endpoints:
    - port: http
      interval: 1m
      path: /metrics
APAC OpenCost Prometheus metrics available for Grafana:
  opencost_node_total_hourly_cost     — APAC node cost per hour
  opencost_pod_namespace_cpu_cost     — CPU cost by APAC namespace
  opencost_pod_namespace_memory_cost  — RAM cost by APAC namespace
  opencost_namespace_cost_total       — Total APAC namespace cost (monthly)
  opencost_deployment_cost_total      — Cost by APAC deployment

Kubecost: Multi-Cluster APAC FinOps

Where Kubecost extends OpenCost

OpenCost provides:
  ✓ Real-time APAC namespace/deployment cost allocation
  ✓ Prometheus metric export for APAC Grafana
  ✓ AWS/GCP/Azure node pricing integration
  ✗ Savings recommendations (rightsizing, idle resources)
  ✗ Multi-cluster APAC cost aggregation
  ✗ Budget governance and APAC team RBAC cost views

Kubecost adds (commercial):
  + Rightsizing recommendations for APAC over-provisioned workloads
  + Multi-cluster APAC cost federation (50+ APAC clusters in one view)
  + APAC namespace budget alerts and anomaly detection
  + RBAC-scoped APAC cost visibility per team
  + Actual APAC cloud bill reconciliation

Kubecost savings recommendations

APAC Kubernetes Cluster Cost Report — Kubecost Savings Opportunities

Rightsizing Recommendations:
  Service                    Current Request  Actual Usage  Savings/Month
  apac-kyc-service (CPU)     4.0 cores        0.3 cores     $187/month
  apac-fraud-api (Memory)    8 Gi             1.2 Gi        $95/month
  apac-notification (CPU)    2.0 cores        0.1 cores     $140/month
  Total rightsizing savings:                               $422/month

Idle Resources:
  apac-ml-worker (0 requests for 14 days)                 $280/month
  apac-legacy-crm-db (8 connections/day avg)              $145/month
  Total idle resource savings:                            $425/month

Reserved Instance Opportunities:
  3 m5.xlarge APAC nodes running 100% for 6+ months
  → 1-year reserved: $680/month savings vs on-demand

Total APAC cluster savings opportunity: $1,527/month

APAC Cloud Cost Tool Selection

APAC Cost Problem                    → Tool        → Why

APAC Terraform cost surprise         → Infracost   PR comments surface APAC cost
(unexpected infrastructure spend)     →             impact before merge and apply

APAC developers unaware of cost      → Infracost   Shift-left: APAC engineers see
impact of their Terraform changes      →             cost in the PR, at decision time

APAC "which service costs what?"     → OpenCost    CNCF free allocation — namespace
(single APAC cluster)                  →             and deployment APAC cost breakdown

APAC multi-cluster cost visibility   → Kubecost    Federated view aggregates APAC
(5-50 APAC Kubernetes clusters)        →             costs across all APAC clusters

APAC over-provisioned workloads      → Kubecost    Rightsizing recommendations
(CPU/memory request >> actual use)     →             identify APAC waste automatically

APAC FinOps without commercial tools → OpenCost    CNCF open-source; Prometheus
(budget for open-source only)          →             metrics to APAC Grafana free

APAC team budget governance          → Kubecost    Namespace budget alerts and RBAC
(multi-team APAC Kubernetes clusters)  →             APAC team-scoped cost views

Related APAC Platform Engineering Resources

For the Terraform infrastructure that Infracost estimates costs for, see the APAC infrastructure-as-code guide covering Terraform, Pulumi, and OpenTofu.

For the Kubernetes platform that OpenCost and Kubecost monitor costs on, see the APAC Kubernetes platform engineering essentials guide covering vCluster, External Secrets, and ExternalDNS.

For the observability stack that stores OpenCost Prometheus metrics for APAC Grafana dashboards, see the APAC AIOps guide covering Dynatrace, PagerDuty, and Datadog.

Beyond this insight

Cross-reference our practice depth.

If this article matches your stage of thinking, the underlying capabilities ship across all six pillars, ten verticals, and nine Asian markets.

Keep reading

Related reading

Want this applied to your firm?

We use these frameworks daily in client engagements. Let's see what they look like for your stage and market.