Düzenle

Aracılığıyla paylaş


Azure Geliştirici CLI hakkında SSS

Bu makalede Azure Geliştirici CLI'sı hakkında sık sorulan sorular yanıtlanmaktadır.

Genel

Azure Geliştirici CLI'sini nasıl kaldırırım?

İlk yükleme şeklinize bağlı olarak azd kaldırmak için farklı seçenekler vardır. Ayrıntılar için yükleme sayfasını ziyaret edin.

Azure Geliştirici CLI'sı ile Azure CLI arasındaki fark nedir?

Azure Geliştirici CLI () ve Azure CLI () komut satırı araçlarıdır, ancak farklı görevleri gerçekleştirmenize yardımcı olur.

azd üst düzey geliştirici iş akışına odaklanır. azd, Azure kaynaklarını sağlamanın/yönetmenin dışında bulut bileşenlerini, yerel geliştirme yapılandırmasını ve işlem hattı otomasyonlarını eksiksiz bir çözüm olarak birleştirmeye yardımcı olur.

Azure CLI, sanal makineler, sanal ağlar ve depolama gibi Azure altyapısını oluşturmaya ve yönetmeye yönelik bir denetim düzlemi aracıdır. Azure CLI, belirli yönetim görevleri için ayrıntılı komutlar etrafında tasarlanmıştır.

Ortam adı nedir?

Azure Geliştirici CLI'sı, Azure Geliştirici CLI şablonları tarafından kullanılan AZURE_ENV_NAME ortam değişkenini ayarlamak için bir ortam adı kullanır. AZURE_ENV_NAME, Azure kaynak grubu adının ön ekini eklemek için de kullanılır. Her ortamın kendi yapılandırma kümesi olduğundan, Azure Geliştirici CLI tüm yapılandırma dosyalarını ortam dizinlerinde depolar.

├── .Azure                          [This directory displays after you run add init or azd up]
│   ├── <your environment1>         [A directory to store all environment-related configurations]
│   │   ├── .env                    [Contains environment variables]
│   │   └── main.parameters.json    [A parameter file]
│   └── <your environment2>         [A directory to store all environment-related configurations]
│   │   ├── .env                    [Contains environment variables]
│   │   └── main.parameters.json    [A parameter file]
│   └──config.json 

Birden fazla ortam ayarlayabilir miyim?

Evet. Çeşitli ortamlar (geliştirme, test, üretim gibi) ayarlayabilirsiniz. Bu ortamları yönetmek için azd env kullanabilirsiniz.

Ortam yapılandırması (.env) dosyası nerede depolanır?

.env dosya yolu <your-project-directory-name>\.azure\<your-environment-name>\.env.

.env dosyası nasıl kullanılır?

Azure Geliştirici CLI'sinde azd komutları ortam yapılandırması için .env dosyasına başvurur. azd deploy gibi komutlar da .env dosyasını veritabanı bağlantı dizesi ve Azure Key Vault uç noktası ile güncelleştirir.

Codespaces'da 'azd up' çalıştırdım. Yerel bir geliştirme ortamında çalışmama devam edebilir miyim?

Evet. Geliştirme çalışmalarına yerel olarak devam edebilirsiniz.

  1. Şablon projesini yerel makinenize kopyalamak için azd init -t <template repo> çalıştırın.
  2. Codespaces kullanılarak oluşturulan mevcut env dosyasını aşağı çekmek için azd env refreshçalıştırın. Öncekiyle aynı ortam adını, aboneliği ve konumu sağladığından emin olun.

azure.yaml dosyası nasıl kullanılır?

azure.yaml dosyası, şablona dahil edilen Azure kaynaklarının uygulamalarını ve türlerini açıklar.

'secretOrRandomPassword' işlevinin davranışı nedir?

secretOrRandomPassword işlevi, anahtar kasası adı ve gizli dizi parametreleri sağlanıyorsa Azure Key Vault'tan bir gizli dizi alır. Bu parametreler sağlanmamışsa veya gizli dizi alınamıyorsa, işlev bunun yerine kullanmak üzere rastgele oluşturulmuş bir parola döndürür.

Aşağıdaki örnek, bir secretOrRandomPassword dosyasındaki main.parameters.json yaygın kullanım örneğini gösterir. ${AZURE_KEY_VAULT_NAME} ve sqlAdminPassword değişkenleri Key Vault ve gizli dizi adları için parametre olarak geçirilir. Değer alınamıyorsa, bunun yerine rastgele bir parola oluşturulur.

  "sqlAdminPassword": {
    "value": "$(secretOrRandomPassword ${AZURE_KEY_VAULT_NAME} sqlAdminPassword)"
  } 

secretOrRandomPassword çıktısı, gelecekteki çalıştırmalar için Bicep kullanılarak Key Vault'a da kaydedilmelidir. Dağıtımlar arasında aynı gizli dizilerin alınması ve yeniden kullanılmasının, sürekli olarak yeni değerler oluşturulurken ortaya çıkarabilecek hataları veya istenmeyen davranışları önleyebileceği. Key Vault oluşturmak ve oluşturulan gizli diziyi bu kasada depolamak için aşağıdaki Bicep kodunu kullanın. Bu modüllerin tam örnek kodunu Azure Developer CLI GitHub deposundagörüntüleyebilirsiniz.

module keyVault './core/security/keyvault.bicep' = {
  name: 'keyvault'
  scope: resourceGroup
  params: {
    name: '${take(prefix, 17)}-vault'
    location: location
    tags: tags
    principalId: principalId
  }
}

module keyVaultSecrets './core/security/keyvault-secret.bicep' = {
  name: 'keyvault-secret-sqlAdminPassword'
  scope: resourceGroup
  params: {
    keyVaultName: keyVault.outputs.name
    name: 'sqlAdminPassword'
    secretValue: sqlAdminPassword
  }
}]

Bu Bicep kurulumu, gizli dizilerinizi yönetmek için aşağıdaki iş akışını etkinleştirir:

  1. Belirtilen gizli dizi varsa, secretOrRandomPassword işlevi kullanılarak Key Vault'tan alınır.
  2. Gizli dizi yoksa bir Key Vault oluşturulur ve rastgele oluşturulan gizli dizi içinde depolanır.
  3. Gelecekteki dağıtımlarda secretOrRandomPassword yöntemi, depolanan gizli diziyi Key Vault'ta mevcut olduğu için alır. Key Vault zaten varsa yeniden oluşturulmayacak, ancak aynı gizli dizi değeri bir sonraki çalıştırma için yeniden depolanacaktır.

Ücretsiz Azure Aboneliği'ni kullanabilir miyim?

Evet, ancak her Azure konumunun yalnızca bir dağıtımı olabilir. Seçili Azure konumunu zaten kullandıysanız dağıtım hatasını görürsünüz:

InvalidTemplateDeployment: The template deployment '<env_name>' isn't valid according to the validation procedure. The tracking ID is '<tracking_id>'. See inner errors for details.

Sorunu çözmek için farklı bir Azure konumu seçebilirsiniz.

Azure App Service ile barındırılan uygulamam bir "Aldatıcı site ileride" uyarısı tetikliyor. Nasıl düzeltebilirim?

Bunun nedeni kaynakları adlandırma yöntemimiz olabilir.

'Azure Dev' tarafından yazılan şablonlarımız kaynağın adını yapılandırmaya olanak sağlar. Bunu yapmak için, main.parameters.json klasöründeki infra bir girdi ekleyebilirsiniz. Mesela:

  "webServiceName": {
  "value": "my-unique-name"
}

Bu giriş, uygulamanızı bir sonraki sağlamanızda "app-web-aj84u2adj" gibi rastgele bir değer yerine "my-unique-name" adlı yeni bir kaynak oluşturur. Azure portalını kullanarak eski kaynak grubunu el ile kaldırabilir veya önceki tüm dağıtımları kaldırmak için azd down çalıştırabilirsiniz. Kaynakları kaldırdıktan sonra, yeni adla yeniden oluşturmak için azd provision çalıştırın.

Bu adın genel olarak benzersiz olması gerekir, aksi takdirde kaynağı oluşturmaya çalışırken azd provision sırasında bir ARM hatası alırsınız.

Komut: azd provision

Komut hangi kaynakların sağ kullanılacağını nasıl biliyor?

Komut, Azure kaynaklarını sağlamak için <your-project-directory-name>/infra altında bulunan Bicep şablonlarını kullanır.

Azure'da hangi kaynakların sağlandığına nereden erişebilirim?

https://portal.azure.com gidin ve rg-<your-environment-name>olan kaynak grubunuzu arayın.

Azure hataları hakkında nasıl daha fazla bilgi bulabilirim?

Azure kaynaklarını sağlamak için <your-project-directory-name>/infraaltında bulunan Bicep şablonlarını kullanırız. Sorun varsa, CLI çıkışına hata iletisini ekleriz.

Ayrıca https://portal.azure.com gidip rg-<your-environment-name>olan kaynak grubunuzu arayabilirsiniz. Dağıtımlardan herhangi biri başarısız olursa daha fazla bilgi edinmek için hata bağlantısını seçin.

Diğer kaynaklar için bkz. Yaygın Azure dağıtım hatalarını giderme - Azure Resource Manager.

'azd provision' için bir günlük dosyası var mı?

Çok yakında. Bu özellik gelecekteki bir sürüm için planlanıyor.

Komut: azd deploy

Bu komutu yeniden çalıştırabilir miyim?

Evet.

azd, kodumun dağıtılacağı Azure kaynağını nasıl bulur?

Dağıtım sırasında azd önce azd-env-name ile etiketlenmiş ve ortamınızın adıyla eşleşen bir değere sahip grupları arayarak uygulamanızı oluşturan tüm kaynak gruplarını bulur. Ardından, bu kaynak gruplarının her birindeki tüm kaynakları numaralandırır ve azd-service-namehizmetinizin adıyla eşleşen bir değerle azure.yaml etiketli bir kaynak arar.

Kaynaklarda etiketlerin kullanılmasını önersek de, resourceName'daki azure.yaml özelliğini kullanarak açık bir kaynak adı da sağlayabilirsiniz. Bu durumda yukarıdaki mantık çalıştırılamaz.

Diğer hizmetleri atlarken projeme belirli hizmetleri nasıl dağıtacağım?

Projenizi dağıtırken, komutta hizmet adını belirterek (azd deploy api) veya yalnızca dağıtmak istediğiniz hizmetleri içeren bir alt klasöre giderek belirli hizmetleri dağıtmayı seçebilirsiniz. Bunu yaparken, diğer tüm hizmetler - Skippedolarak listelenir.

Hiçbir hizmeti atlamak istemiyorsanız, komutunu kök klasörden çalıştırdığınızdan veya --all bayrağını komutunuza eklediğinizden emin olun.

Komut: azd up

'azd up' komutunu yeniden çalıştırabilir miyim?

Evet. artımlı dağıtım modunu kullanırız.

'azd up' için günlük dosyasını nasıl bulabilirim?

Çok yakında. Bu özellik gelecekteki bir sürüm için planlanıyor.

Komut: azd işlem hattı

Azure hizmet sorumlusu nedir?

Azure hizmet sorumlusu, Azure kaynaklarına erişmek için uygulamalar, barındırılan hizmetler ve otomatik araçlarla kullanılmak üzere oluşturulmuş bir kimliktir. Bu erişim, hangi kaynaklara ve hangi düzeyde erişilebileceğini denetlemenizi sağlayan hizmet sorumlusuna atanan rollerle kısıtlanır. Azure'dan GitHub'a kimlik doğrulaması hakkında daha fazla bilgi için bkz. GitHub ve Azure'a bağlanma | Microsoft Docs.

'azd pipeline config' komutunu çalıştırmadan önce bir Azure hizmet sorumlusu oluşturmam gerekiyor mu?

Hayır. azd pipeline config komutu, Azure hizmet sorumlusu oluşturma ve gizli dizileri GitHub deponuzda depolamak için gerekli adımları gerçekleştirme işlemlerini gerçekleştirir.

GitHub'da depolanan tüm gizli diziler nelerdir?

Komut GitHub'da dört gizli dizi depolar: AZURE_CREDENTIALS, AZURE_ENV_NAME, AZURE_LOCATION ve AZURE_SUBSCRIPTION_ID. https://github.com/<your-github-account>/<your-repo>/secrets/actionsgiderek her gizli dizinin değerini geçersiz kılabilirsiniz.

OpenID Connect (OIDC) nedir ve destekleniyor mu?

OpenID Connectile iş akışlarınız kısa süreli belirteçleri doğrudan Azure'dan değiştirebilir.

GitHub Actions ve Azure Pipeline için varsayılan olarak OIDC destekleniyor olsa da (federasyonolarak ayarlanır), Azure DevOps veya Terraform için desteklenmez.

  • Azure DevOps için açıkça --auth-typefederated olarak çağırmak hataya neden olur.
  • Terraform için:
    • --auth-type tanımlanmamışsa, clientcredentials geri döner ve bir uyarıyla sonuçlanır.
    • --auth-type açıkça federatedolarak ayarlanırsa hataya neden olur.

GitHub Actions'ta depolanan Azure hizmet sorumlusunu nasıl sıfırlayabilirim?

https://github.com/<your-github-account>/<your-repo>settings/secrets/actionsgidin ve yeni hizmet sorumlusu için JSON nesnesinin tamamını kopyalayıp yapıştırarak AZURE_CREDENTIALS güncelleştirin. Mesela:

{
  "clientId": "<GUID>",
  "clientSecret": "<GUID>",
  "subscriptionId": "<GUID>",
  "tenantId": "<GUID>",
  (...)
}

GitHub Actions dosyası nerede depolanır?

GitHub Actions dosya yolu <your-project-directory-name>\.github\workflows\azure-dev.yml.

azure-dev.yml dosyasında yalnızca derleme adımındaki kodu dağıtabilir miyim?

Evet. run: azd up --no-prompt değerini run: azd deploy --no-promptile değiştirin.

'azd pipeline config' komutunu çalıştırdığımda tetiklediğim GitHub Actions işinin günlüğünü nerede bulabilirim?

https://github.com/<your-github-account>/<your-repo>/actionsgidin ve iş akışı çalıştırmasında günlük dosyasına bakın.

Yerel olarak kapsayıcı uygulaması oluşturma

Neden oluşturmakta olduğum kapsayıcı uygulamasını yerel olarak çalıştıramıyorum?

Kapsayıcı uygulamalarını yerel olarak oluştururken, uygulamanın azd auth loginile çalışması için kapsayıcıda AzureDeveloperCliCredential çalıştırmanız gerekir. Alternatif olarak, uygulamanızı AzureDeveloperCliCredentialyerine bir hizmet sorumlusu kullanacak şekilde yapılandırabilirsiniz.