Pulumi
- Okunuşu
- pyulumi
Kısaca
Pulumi, bulut kaynaklarının TypeScript, Python, Go, C# ya da Java gibi genel amaçlı dillerle tanımlandığı açık kaynaklı bir kod olarak altyapı aracıdır.
Pulumi nedir?
Pulumi, aynı adlı şirket tarafından ilk kez 2018'de yayımlanan bir kod olarak altyapı aracıdır. Terraform gibi ağlar, veritabanları, depolama bucket'ları ve Kubernetes nesneleri gibi bulut kaynaklarını Git'te tutulan koddan oluşturur ve günceller. Fark dildedir: bir yapılandırma dili yerine TypeScript, JavaScript, Python, Go, C#, Java ya da YAML ile sıradan programlar yazarsınız; son sürümler Terraform'un dili olan HCL ile yazılmış programları da çalıştırabilir.
pulumi up programı çalıştırır, ama new aws.s3.Bucket(...) gibi bir nesne oluşturmak buluta doğrudan çağrı yapmaz; yalnızca kaynağı istenen durumun bir parçası olarak kaydeder. Pulumi'nin motoru bunu son dağıtımdan sonra kaydedilen durumla karşılaştırır, neyin oluşturulacağını, değişeceğini ya da silineceğini gösteren bir önizleme sunar ve değişiklikleri AWS, Azure, Google Cloud, Kubernetes ve çok daha fazlası için eklentiler olan provider'lar aracılığıyla yapar. Durum (state), şirketin barındırılan servisi Pulumi Cloud'da ya da S3 bucket'ı gibi sizin yönettiğiniz bir backend'de saklanır. Altyapının geliştirme ve production gibi her kopyası, kendi yapılandırması olan ayrı bir stack'tir.
Altyapıyı genel amaçlı bir dille yazmak, geliştiricilerin zaten kullandığı araçları da beraberinde getirir: kopyalanmış bloklar yerine döngüler ve fonksiyonlar, yeniden kullanılabilir bileşenler için sınıflar ve paketler, editörde otomatik tamamlama ve tip denetimi, sıradan birim test framework'leri. Madalyonun öbür yüzü, bir altyapı programının da her kod kadar karmaşıklaşabilmesidir; bu yüzden aynı incelemelere ve kurallara ihtiyaç duyar.
Pulumi en çok Terraform ile karşılaştırılır. İkisi de sonuç olarak bildirimseldir (declarative): state tutar, değişiklikleri önizler ve gerçek kaynakları istenenlere uydurur; Pulumi Terraform provider'larını bile kullanabilir. Asıl farklar altyapıyı nasıl tarif ettiğiniz, yani genel amaçlı bir dille mi yoksa HCL ile mi yazdığınız, ve lisanstır: Pulumi'nin motoru Apache 2.0 lisanslı açık kaynaktır, Terraform ise 2023'ten beri Business Source License kullanır.
Önemli noktalar
- Pulumi, genel amaçlı programlama dillerini kullanan bir kod olarak altyapı aracıdır.
- Programlar kaynakları kaydeder; motor farkları önizler ve uygular.
- State, Pulumi Cloud'da ya da kendi yönettiğiniz bir backend'de durur; her ortam için bir stack vardır.
- Provider'lar onu AWS'ye, Azure'a, Google Cloud'a, Kubernetes'e ve daha fazlasına bağlar.
- Terraform'la karşılaştırıldığında asıl fark fikirde değil, dildedir.
Örnek
import * as aws from "@pulumi/aws";
// An ordinary loop: one bucket per environment
const environments = ["staging", "production"];
export const bucketNames = environments.map((env) => {
const bucket = new aws.s3.Bucket(`assets-${env}`, {
tags: { Environment: env },
});
return bucket.bucket; // the generated bucket name
});
// pulumi preview -> shows what would be created
// pulumi up -> creates both bucketsSık sorulan sorular
Pulumi ile Terraform arasındaki fark nedir?
İkisi de state tutan, değişiklikleri önizleyen ve uygulayan kod olarak altyapı araçlarıdır. Terraform kendi yapılandırma dili olan HCL ile çalışır; Pulumi ise aynı altyapıyı TypeScript ya da Python gibi genel amaçlı dillerle tarif etmenizi sağlar.
Pulumi ücretsiz mi?
Pulumi CLI ve SDK'ları Apache 2.0 lisanslı açık kaynaktır ve ücretsiz kullanılır; state'i istediğiniz yerde saklayabilirsiniz. State, secret'lar ve ekip özellikleri için barındırılan servis olan Pulumi Cloud'un ücretsiz bir katmanı ve ücretli planları vardır.
Pulumi stack nedir?
Bir Pulumi programının bağımsız bir örneğidir; genellikle geliştirme, staging ve production gibi her ortam için bir tane bulunur. Her stack'in kendi yapılandırma değerleri ve kendi state'i vardır.
İlgili sayfalar
- TerraformDevOps ve Bulut, s. 58Terraform, kod olarak altyapı aracıdır; bulut kaynaklarını yapılandırma dosyalarında tarif edersiniz, tek komut onları buna göre oluşturur ya da günceller.
- Kod Olarak AltyapıDevOps ve Bulut, s. 30Kod olarak altyapı, sunucuları, ağları ve diğer altyapıyı araçların otomatik uyguladığı, sürüm kontrolündeki dosyalarda tanımlama pratiğidir.
- Yapılandırma YönetimiDevOps ve Bulut, s. 60Yapılandırma yönetimi, sunucuların ve yazılımın istenen durumunu kodla tanımlama ve araçlarla bunu otomatik olarak uygulayıp koruma pratiğidir.
- TypeScriptWeb Geliştirme, s. 61TypeScript, JavaScript üzerine statik tipler ekleyerek birçok hatayı kod çalışmadan yakalayan ve düz JavaScript'e derlenen bir programlama dilidir.
- AWSDevOps ve Bulut, s. 2AWS (Amazon Web Services), Amazon'un bulut platformudur; sunucu, depolama, veritabanı ve çok daha fazlası için kullandıkça ödenen 200'den fazla servis sunar.
- KubernetesDevOps ve Bulut, s. 33Kubernetes, konteynerli uygulamaların bir makine kümesi üzerinde dağıtılmasını, ölçeklenmesini ve yönetilmesini otomatikleştiren açık kaynaklı bir sistemdir.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin