Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Go için Azure SDK yönetim kitaplıklarını kullanarak Azure kaynaklarını program aracılığıyla sağlamayı, yapılandırmayı ve yönetmeyi öğrenin. Yaygın denetim düzlemi iş akışları arasında kaynak grupları oluşturma, depolama ve ağ altyapısını yönetme ve oluşturma, başlatma, durdurma, yeniden boyutlandırma, güncelleştirme ve silme gibi sanal makine (VM) yaşam döngüsü işlemlerinin işlenmesi yer alır. Yönetim kitaplıklarının Go için Azure SDK nasıl sığacaklarına ilişkin daha üst düzey bir giriş istiyorsanız, Go için Azure SDK yönetim kitaplıklarının Overview ile başlayın. Bu makale, hizmetler arasında yeniden kullandığınız Go denetim düzlemi desenlerine odaklanır ve çalışma zamanı yolu kaynak yönetiminden hizmet verileriyle çalışmaya geçtiğinde veri düzlemi kılavuzuna bağlanır.
Azure kontrol düzlemi nedir?
Azure denetim düzlemi, Azure kaynaklarını oluşturma, güncelleştirme, yapılandırma ve silme gibi yaşam döngüsünü denetleen API'ler kümesidir. Azure portalında, Azure CLI veya kod olarak altyapı aracında gerçekleştirdiğiniz her işlem sonuçta bu denetim düzlemi API'lerini çağırır.
go için Azure SDK, arm* altında github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/ paketleri ailesi aracılığıyla kontrol düzlemini kullanıma sunar. Her paket bir Azure kaynak sağlayıcısına eşlenir ve tutarlı bir desen izler:
-
azidentitypaketini kullanarak kimlik doğrulaması yapın. - Yönetmek istediğiniz kaynak için yazılan bir istemci oluşturun.
- Kaynakları oluşturmak, okumak, güncelleştirmek veya silmek için istemcideki yöntemleri çağırın.
- Yoklamaları kullanarak uzun süre çalışan işlemleri işleyin.
Go denetim düzlemi otomasyonu için yaygın senaryolar şunlardır:
- Dağıtım işlem hatları için altyapı sağlama
- Oluşturma, güncelleştirme, silme, başlatma, durdurma ve yeniden boyutlandırma gibi VM yaşam döngüsü işlemlerini yönetme
- Platform ekipleri için özel CLI'ler ve operatörler oluşturma
- GitOps stili altyapı senkronizasyonunu uygulamak
- Uyumluluk denetimi ve kayma algılamayı otomatikleştirme
Kimlik Doğrulaması
Tüm yönetim işlemleri, azidentity paketinden kimliği doğrulanmış bir kimlik bilgisi gerektirir. Paket yerel geliştirme, CI/CD işlem hatları ve Azure'de çalışan üretim iş yükleri dahil olmak üzere her ortam için kimlik bilgisi türleri sağlar. Tüm kimlik bilgileri türleri aynı azcore.TokenCredential arabirimi uygular, böylece istemci kodunu değiştirmeden bunları değiştirebilirsiniz.
Kimlik bilgilerini aldıktan sonra paket için bir istemci fabrikası oluşturun ve ardından ihtiyacınız olan tipli istemciyi isteyin.
// Create credential that auto-discovers authentication (Azure CLI, env vars, managed identity)
cred, err := azidentity.NewDefaultAzureCredential(nil)
// Construct a client factory, then the typed client for management operations
clientFactory, err := armresources.NewClientFactory(subscriptionID, cred, nil)
rgClient := clientFactory.NewResourceGroupsClient()
Geçerli arm* paket belgeleri genellikle istemci fabrika desenini gösterir çünkü ilgili istemciler için paylaşılan yapılandırmayı merkezileştirir. Çoğu paket doğrudan New<ResourceType>Client(subscriptionID, credential, options) oluşturucuları da kullanıma sunar, ancak NewClientFactory(...).New<ResourceType>Client() pkg.go.dev en sık göreceğiniz düzendir. Yerel geliştirme için DefaultAzureCredential genellikle Azure CLI oturum açma işleminizi alır. CI/CD ve dağıtılan iş yüklerinde, istemci kodunuzun geri kalanını değiştirmeden ortam tabanlı kimlik bilgilerine veya yönetilen kimliğe geçebilirsiniz.
Kimlik bilgisi türleri ve en iyi yöntemler hakkında tam kılavuz için Azure SDK for Go ile Kimlik Doğrulama ve azidentity paketi belgelerine bakın.
İstemci paketleri ve türü belirtilmiş istemciler
Yönetim paketleri github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/<service>/arm<service> altındadır. Kimlik paketini ve yalnızca arm* kullanmayı planladığınız paketleri yükleyin. Örneğin, yalnızca VM'leri ve kaynak gruplarını yönetiyorsanız, yalnızca armcompute ve armresources gereklidir. Her paket, bu hizmetteki kaynaklar için istemciler içerir. Örneğin, sanal makineler, armcompute diskler, görüntüler ve ilgili işlem kaynakları için istemcileri vardır.
Tek bir yönetim paketi genellikle birkaç istemci içerir ve her istemci tek bir kaynak türüne veya işlem grubuna odaklanır. Örneğin, sanal makineler, armcompute diskler, görüntüler ve ilgili kaynaklar için istemcileri içerir. Bir hizmet paketini seçtikten sonra, bir istemci fabrikası oluşturun ve yönetmek istediğiniz kaynaklarla eşleşen yazılan istemcileri oluşturmak için bu fabrikayı yeniden kullanın.
clientFactory, err := armcompute.NewClientFactory(subscriptionID, cred, nil)
if err != nil {
return err
}
vmClient := clientFactory.NewVirtualMachinesClient()
Bu paket ve istemci fabrika düzeni tüm modüllerde resourcemanager tutarlıdır. pkg.go.dev tararken veya aracıdan bir görev için doğru istemciyi bulmasını istediğinizde kullanışlı bir kısayoldur.
Uzun süreli işlemler
Küme oluşturma, kaynak gruplarını silme ve altyapıyı yükseltme gibi birçok yönetim işlemi zaman uyumsuz olarak çalışır. Ön ekli Begin yöntemler, sunucu tarafı çalışmayı başlatır ve hemen bir poller döndürür. Kodunuz beklemeye veya başka bir iş yapmaya devam etmeye karar verebilir:
// Start an asynchronous operation (returns immediately)
poller, err := client.BeginCreateOrUpdate(ctx, resourceGroupName, parameters, nil)
if err != nil {
return err
}
// Block until the operation completes or fails
result, err := poller.PollUntilDone(ctx, nil)
if err != nil {
return err
}
Başarılı bir Begin* çağrısı yalnızca Azure'un isteği kabul ettiği anlamına gelir. Poller çalışırken işlem daha sonra yine başarısız olabilir. Bu nedenle hem ilk çağrı hem de PollUntilDone hata işlemeyi gerektirir. En basit akışı istediğinizde kullanın PollUntilDone . Özel bekleme mantığı veya ilerleme raporlamaya ihtiyacınız olduğunda poller.Poll ve poller.Done kullanın.
Desenler hakkında daha fazla bilgi için, Go için Azure SDK'daki Common kullanım desenlerine bakın.
Hata yönetimi
Yönetim işlemleri, belirli hata kodları için inceleyebileceğiniz yapılandırılmış hatalar döndürür:
import "github.com/Azure/azure-sdk-for-go/sdk/azcore"
// Check if the error is an Azure service error with structured details
var respErr *azcore.ResponseError
if errors.As(err, &respErr) {
fmt.Printf("Error code: %s\n", respErr.ErrorCode)
fmt.Printf("Status code: %d\n", respErr.StatusCode)
}
Çoğu CreateOrUpdate işlem idempotenttir. Bunları mevcut bir kaynakta çağırmak başarısız olmak yerine kaynağı güncelleştirir.
Kaynak sağlama örneği
Bu örnekte ortak denetim düzlemi deseni gösterilmektedir: kimlik doğrulaması, etiketler ve zaman aşımı ile bir kaynak oluşturma ve sonucu denetleme. Kimlik bilgileri, bağlam ve abonelik kimliği düzeni tüm istemciler için geçerli olduğundan, bu düzeni tüm arm* yönetim işlemleri için şablon olarak kullanın.
package main
import (
"context"
"fmt"
"log"
"os"
"time"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources"
)
func main() {
// Read subscription ID from environment (avoid hardcoding)
subscriptionID := os.Getenv("AZURE_SUBSCRIPTION_ID")
if subscriptionID == "" {
log.Fatal("AZURE_SUBSCRIPTION_ID not set")
}
// Create credential that auto-discovers authentication
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to create credential: %v", err)
}
// Set a timeout for the entire operation (prevents hanging indefinitely)
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute)
defer cancel()
// Create a client factory for this management package
clientFactory, err := armresources.NewClientFactory(subscriptionID, cred, nil)
if err != nil {
log.Fatalf("failed to create client factory: %v", err)
}
// Create the typed client for resource groups
rgClient := clientFactory.NewResourceGroupsClient()
// Many ARM models use pointer fields for optional values.
resp, err := rgClient.CreateOrUpdate(ctx, "example-rg", armresources.ResourceGroup{
Location: to.Ptr("eastus"),
Tags: map[string]*string{
"env": to.Ptr("dev"),
"team": to.Ptr("platform"),
},
}, nil)
if err != nil {
log.Fatalf("failed to create or update resource group: %v", err)
}
fmt.Printf("resource group %s ready in %s\n", *resp.Name, *resp.Location)
}
Kaynak grupları
armresources paketi, Azure temel kuruluş kapsayıcıları olan kaynak gruplarını yönetir. Her Azure kaynağı bir kaynak grubu içinde bulunur ve bu da bunu herhangi bir sağlama iş akışı için başlangıç noktası haline getirir.
Kaynak gruplarını konum ve etiketlerle oluşturmak ve güncelleştirmek, abonelik genelinde grupları listelemek ve tüm kapsanan kaynaklarla birlikte grupları silmek için kullanın. Kaynak grubu oluşturma eş zamanlı ve idempotenttir. Silme işlemi zaman uyumsuz ve kalıcıdır.
Kaynak gruplarının listelenmesi önemli bir denetim düzlemi deseni de sağlar: birçok okuma işlemi çağrıyıcılar kullanır. Kaynak gruplarını veya diğer büyük ARM koleksiyonlarını listelediğinizde, bir sayfalayıcı oluşturun ve pager.More() döndürene kadar false üzerinde yineleyin.
pager := rgClient.NewListPager(nil)
for pager.More() {
page, err := pager.NextPage(ctx)
if err != nil {
return err
}
for _, group := range page.ResourceGroupListResult.Value {
fmt.Println(*group.Name)
}
}
Kaynak grubu yönetim kodu örneği.
Başlangıç kılavuzu için armresources paketi belgelerine bakın.
Sanal makineler
VM yönetimi çoğunlukla yaşam döngüsü işi olduğundan armcompute paketi kurallı bir denetim düzlemi örneğidir: VM oluşturma veya güncelleştirme, başlatma veya durdurma, yeniden boyutlandırma ve silme. Go'da, bu iş akışları kaynak grubu örneğinde gösterilen aynı DefaultAzureCredential, context.Context ve istemci fabrika desenini kullanır, dolayısıyla bu düzen uygulandıktan sonra kimlik doğrulama yaklaşımınızı değiştirmeden hesaplama işlemleri genelinde uygulayabilirsiniz.
Hızlı bir başlangıç noktasına ihtiyacınız varsa, işlem istemcisi fabrikasını oluşturun ve ardından türüne özgü VM istemcisini talep edin:
clientFactory, err := armcompute.NewClientFactory(subscriptionID, cred, nil)
if err != nil {
return err
}
vmClient := clientFactory.NewVirtualMachinesClient()
Tam VM örnekleri ve işleme özgü yönergeler için mevcut virtual makine yönetimi örnekleri ve armcompute paketi belgelerine bakın. Bu makaledeki büyük VM şablonlarını çoğaltmak yerine tam istek modelleri ve uzun operasyon ayrıntıları için referansları kullanın.
Key Vault
armkeyvault paketi Azure Key Vault örneklerin yaşam döngüsünü yönetir. Bu paket, kasa altyapısı için kontrol düzlemini yönetir. Gizlilikleri, anahtarları ve sertifikaları okumak ve yazmak için ayrı azsecrets, azkeys, ve azcertificates veri düzlemi paketlerini kullanın.
Kasaları uygun SKU ve güvenlik ayarları ile yapılandırmak, geçici silme ve kalıcı silme korumalarını sağlamak için bu paketi kullanın. Ayrıca sorumlular için erişim ilkelerini yönetebilir, ağ erişimini ve özel uç noktaları yapılandırabilir ve tanılama günlüğünü etkinleştirebilirsiniz. Güvenli depolama sağlamayı uygulama başlatma iş akışlarıyla tümleştirebilirsiniz.
Key Vault yönetim kodu örneği.
Çalışma zamanı Key Vault istemcileri için bkz. Veri düzlemi operasyonları için Go için Azure SDK'yı kullanın.
Başlangıç kılavuzu için armkeyvault package belgelerine bakın.
AKS kümeleri
armcontainerservice paketi, tüm yaşam döngüleri boyunca Azure Kubernetes Service kümeleri yönetir.
Yapılandırılabilir ağ, Kubernetes sürümü ve yönetilen kimlik ile kümeler oluşturmak için bu paketi kullanın. Düğüm havuzları ekleyebilir ve ölçeklendirebilir, denetim düzlemi ve düğüm sürümlerini yükseltebilir, Azure İlkesi ve izleme gibi eklentileri etkinleştirebilir ve işletimsel panolar için küme durumunu sorgulayabilirsiniz. Tüm küme işlemleri uzun süre çalışır ve poller desenini izler.
Başlangıç kılavuzu için armcontainerservice package belgelerine bakın.
RBAC ve yetkilendirme
armauthorization paketi Azure Role-Based Access Control yönetir. Abonelikler ve kaynak grupları arasında en az ayrıcalıklı erişim ilkelerini otomatikleştirmek için bunu kullanın.
Yerleşik rolleri listelemek ve aramak, herhangi bir kapsamda sorumlulara (kullanıcılar, hizmet sorumluları, yönetilen kimlikler veya gruplar) roller atamak, ayrıntılı izinlerle özel rol tanımları oluşturmak ve uyumluluk raporlama ve kayma algılama için atamaları denetlemek için bunu kullanın. Kişiler yerine gruplara roller atayın ve mümkün olduğunca yerleşik rolleri kullanın.
Başlangıç kılavuzu için armauthorization package belgelerine bakın.
Sanal ağlar ve ağ güvenliği
armnetwork paketi Azure sanal ağ altyapısını yönetir.
Sanal ağlar ve alt ağlar oluşturmak, gelen ve giden kuralları olan ağ güvenlik gruplarını yapılandırmak, PaaS hizmetleri için özel uç noktalar ayarlamak, bölgeler arasında ağ eşlemesini otomatikleştirmek ve merkez-uç topolojilerini program aracılığıyla uygulamak için bunu kullanın.
Başlangıç kılavuzu için armnetwork paketi belgelerine bakın.
Konteyner kaydı
armcontainerregistry paketi Azure Container Registry örneklerini yönetir.
Uygun SKU ve coğrafi çoğaltma ile kayıt defterlerini sağlamak, kimlik doğrulamasını (yönetici, hizmet sorumlusu veya yönetilen kimlik) yapılandırmak, CI/CD için webhook'ları yönetmek, güvenlik açığı taramasını etkinleştirmek ve görüntülere tutma politikaları uygulamak için bunu kullanın. Azure Kubernetes Services'i genellikle Kapsayıcı Kayıt Defteri ile birlikte kullanırsınız. İlk olarak, kayıt defterini sağlayın ve ardından küme oluşturma sırasında bu kayıt defterine başvurun.
Container Kayıt defteri yönetim kodu örneği.
Başlangıç kılavuzu için armcontainer kayıt defteri paketi belgelerine bakın.
Depolama hesapları
armstorage paketi Azure Depolama hesaplarını yönetir.
Doğru performans katmanı ve yedekliliğe sahip depolama hesapları oluşturmak, erişim anahtarlarını ve paylaşılan erişim imzalarını yönetmek, blob yaşam döngüsü ilkelerini yapılandırmak ve tanılama günlüğünü ayarlamak için bu hesabı kullanın. Depolama hesapları birçok uygulama için ortak bir bağımlılıktır, bu nedenle sağlama ve yapılandırmalarını otomatikleştirmek yaygın bir denetim düzlemi senaryosudur.
Depolama hesabı yönetim kodu örneği.
Başlangıç kılavuzu için armstorage paketi belgelerine bakın.
Sonraki Adımlar
- Go yönetim kitaplıkları için Azure SDK Genel bakış
- Veri düzlemi işlemleri için Go için Azure SDK kullanın
- Go kimlik doğrulaması için Azure SDK
- GitHub üzerinde Go dili için Azure SDK örnekleri