
Infracost Nedir ?
Infracost, altyapı kodu (Infrastructure as Code – IaC) kullanan ekiplerin, bulut altyapı değişikliklerinin maliyet etkisini kod yazım aşamasında görmesini sağlayan açık kaynaklı bir maliyet analiz aracıdır.
Özellikle Terraform ile tanımlanan kaynakların aylık tahmini bulut maliyetlerini hesaplayarak, geliştiricilerin ve DevOps ekiplerinin maliyet odaklı kararlar almasına yardımcı olur. CI/CD süreçlerine kolayca entegre edilebilen Infracost, pull request’ler üzerinde yapılan değişikliklerin bütçeye etkisini otomatik olarak raporlayarak daha alt yapının kurulum yapılmadan önce maliyetini görebilmenizi sağlar maliyet sürprizlerinin önüne geçer ve FinOps süreçlerini geliştirir.
Infracost kurulumu
bu sistemi kullanabilmemiz için https://www.infracost.io/ adresine giderek bir hesap oluşturacağız ve bu hesaptan bir api key alarak makinemize tanımlayacağız böylecek en güncel fiyat bilgilerini kodumuz çekerek bize en net maliyet bilgilerini veriyor olacak.
portala login oluyoruz ve ilk 3 adımı tamamlıyoruz 4. adım git reponuzdaki kodları analiz ettirmek için TF dosyalarınızı reponuza atıp içerisinde aşağıdaki kodu eklemenizi gerektiriyor.
Biz bu çaışmada sadece cli üzerinden anlizler yapacağız git reposuyla ilgili bir analiz yapmayacağız bu sebeple bu adımı tamamlamadım. Gir reposundaki Tf kodunu analiz etmeyuecekseniz bu şekilde kalabilir.
sağ üst bölümdeki “Settings→Org Settings” menüsüne gidiyoruz.
API Menüsünde bize verdiği token bilgisini bir yere not ediyoruz.
Agent Kurulumu
Bu “https://www.infracost.io/docs/#quick-start” adres üzerinden diğer sistemler için pratik kurulum metotlarını takip ederek agentımızı makinemize yüklüyoruz.
#Mac cihazlar brew install infracost #Windows cihazlar powershell ile choco install infracost #Linux # Downloads the CLI based on your OS/arch and puts it in /usr/local/bin curl -fsSL https://raw.githubusercontent.com/infracost/infracost/master/scripts/install.sh | sh
versiyon kontrolü yapıyoruz.
infracost –version #Infracost v0.10.42 |
---|
Dashboard’dan “Settingz–> Organization settins–>API Token–>CLI and CI/CD token” API Key oluşturp kopyaladığımız key i aşağıdaki komutla cli a aktarıyoruz.
Burada 2 yöntemle de bu işlemi yapabilirsiniz ben yöntem 1 ile ilerliyorum.
Yöntem-1
#infracost configure set api_key <senin_api_keyin> infracost configure set api_key ico-EiPnvbjExiGvXBtiM1sKLWXXXXXXXXXX |
---|
Yöntem 2
#Sadece kullanılan session da geçerli olur key export INFRACOST_API_KEY=”ico-EiPnvbjExiGvXBtiM1sKLXXXXXXXXXXXX”#Key i kalıcı olarak locale yazar echo ‘export INFRACOST_API_KEY=”ico-EiPnvbjExiGvXBtiM1sXXXXXXXXXXXX”‘ >> ~/.zshrc source ~/.zshrc |
---|
işlem sonucunu görüntülemek için API key i kontrol ediyorum.
infracost configure get api_key |
---|
cli ile logn oluyoruz.
infracost auth login |
---|
Bu adım bizi browser a yönlendirecek ve login olduğumuz bilgisi aşağıdaki gibi karşımıza gelecek.
buraya kadar geldiyseniz artık infra cost yapılandırması tamamladı demektir.
Terrafrom Cost report oluşturma
Ben örnek bir Terraform dizinine giriyorum burada VPC oluşturmak için gerekli Terraform kodları yer alıyor.
serdar@sbMacBook aws-vpc % ├── backend.tf ├── eip.tf ├── main.tf ├── outputs.tf ├── provider.tf ├── README.md ├── terraform.tfvars ├── variables.tf └── versions.tf
Terraform komutlarını çalıştırıyorum.
terraform init #Terraform planı infracost un okuyabileceği formata çeviriyorum. terraform plan -out=tfplan infracost breakdown --path . --format table
Bu çıktıdan sonra aşağıdaki komutu çalıştırarak Terraform ile kuracağınız sistemin maliyetini görebilirsiniz.
#analizi yaptırmak için infracost breakdown –path=tfplaninfracost breakdown –path . –format table |
---|
serdar@sbMacBook 002-aws-vpc % infracost breakdown --path=tfplan INFO Autodetected 1 Terraform plan binary file project across 1 root module INFO Found Terraform plan binary file project tfplan at directory tfplan Project:/002-aws-vpc/tfplan Name Monthly Qty Unit Monthly Cost module.vpc.aws_nat_gateway.this[0] ├─ NAT gateway 730 hours $37.96 └─ Data processed Monthly cost depends on usage: $0.052 per GB OVERALL TOTAL $37.96 *Usage costs can be estimated by updating Infracost Cloud settings, see docs for other options. ────────────────────────────────── 34 cloud resources were detected: ∙ 1 was estimated ∙ 33 were free ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━┓ ┃ Project ┃ Baseline cost ┃ Usage cost* ┃ Total cost ┃ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━╋━━━━━━━━━━━━┫ ┃#########################/002-aws-vpc/tfplan ┃ $38 ┃ - ┃ $38 ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━┻━━━━━━━━━━━━┛ serdar@sbMacBook 002-aws-vpc %
#Html format rapor almak için
infracost breakdown –path . –format html > cost-report.html |
---|
Raporu infracost Web e gönderme
localde aldığımız bu raporlar infracost portala yansımazlar bunun için kodlarınızı ya Github gibi repolara gönderip infracost ile entegrasyon yapmalısınız. yada pc nizden manuel olarak göndermelisiniz.
Aşağıdaki komutla raporumuzu json formatına çeviriyoruz.
infracost breakdown –path . –format json –out-file infracost-output.json |
---|
Bu dosyayı aşağıdaki komutla infraDashboard a gönderiyoruz.
infracost upload –path infracost-output.json |
---|
Visibility→Reports menüsüne giderek raporu artık dashboard üzerinde de görebilirsiniz.
Iac üzerinden maliyet analizinin nasıl yapılacağını bu makalede anlattım bu yöntemle daha maliyetleriniz oluşmadan büyük bir oranda net hesaplamalar yaparak maliyetlerinizi çıkarabilirsiniz.
Bir başka makalede görüşmek üzere
SERDAR BAYRAM