Öğretici: App Service özel kapsayıcısına dağıtmak ve veritabanına bağlanmak için GitHub Actions'ı kullanma
Bu öğreticide, Azure SQL Veritabanı arka ucuyla kapsayıcılı bir ASP.NET Core uygulaması dağıtmak için GitHub Actions iş akışı ayarlama işleminde size yol gösterilir. İşiniz bittiğinde Azure'da çalışan ve SQL Veritabanı bağlı bir ASP.NET uygulamanız vardır. İlk olarak ARM şablonu GitHub Actions iş akışıyla Azure kaynakları oluşturacaksınız.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Azure Resource Manager şablonu (ARM şablonu) ile Azure'a kaynak eklemek için GitHub Actions iş akışı kullanma
- GitHub Actions iş akışını kullanarak en son web uygulaması değişiklikleriyle kapsayıcı oluşturma
Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.
Önkoşullar
Bu öğreticiyi tamamlamak için şunları yapmanız gerekir:
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- Bir GitHub hesabı. Hesabınız yoksa ücretsiz olarak kaydolun.
- Resource Manager şablonlarınızı ve iş akışı dosyalarınızı depolamak için bir GitHub deposu. Bir depo oluşturmak için bkz . Yeni depo oluşturma.
Örneği indirme
Azure Örnekleri deposunda örnek projenin çatalını oluşturma.
https://github.com/Azure-Samples/dotnetcore-containerized-sqldb-ghactions/
Bir kaynak grubu oluştur
Adresinde Azure Cloud Shell'i https://shell.azure.comaçın. Azure CLI'yi yerel olarak yüklediyseniz alternatif olarak kullanabilirsiniz. (Cloud Shell hakkında daha fazla bilgi için bkz. Cloud Shell'e Genel Bakış.)
az group create --name {resource-group-name} --location {resource-group-location}
Dağıtım kimlik bilgileri oluşturma
OpenID Bağlan, kısa süreli belirteçler kullanan bir kimlik doğrulama yöntemidir. GitHub Actions ile OpenID Bağlan ayarlamak, sağlamlaştırılmış güvenlik sunan daha karmaşık bir işlemdir.
Mevcut bir uygulamanız yoksa kaynaklara erişebilen yeni bir Microsoft Entra uygulaması ve hizmet sorumlusu kaydedin.
az ad app create --display-name myApp
Bu komut, JSON çıkışını sizin
client-id
olan birappId
ile oluşturur.objectId
veAPPLICATION-OBJECT-ID
, Graph API çağrılarıyla federasyon kimlik bilgileri oluşturmak için kullanılır. GitHub gizli dizisi olarakAZURE_CLIENT_ID
kullanılacak değeri daha sonra kaydedin.Hizmet sorumlusu oluşturma. değerini
$appID
JSON çıkışınızdaki appId değeriyle değiştirin. Bu komut, sonraki adımda farklıobjectId
bir JSON çıkışı oluşturur. YeniobjectId
, şeklindedirassignee-object-id
.Bu komut farklı
objectId
bir JSON çıkışı oluşturur ve sonraki adımda kullanılacaktır. YeniobjectId
, şeklindedirassignee-object-id
.appOwnerTenantId
daha sonra kullanmak üzere öğesini GitHub gizli dizisiAZURE_TENANT_ID
olarak kopyalayın.az ad sp create --id $appId
Aboneliğe ve nesneye göre yeni bir rol ataması oluşturun. Varsayılan olarak, rol ataması varsayılan aboneliğinize bağlanır. değerini abonelik kimliğiniz,
$resourceGroupName
kaynak grubu adınız ve$assigneeObjectId
oluşturulanassignee-object-id
(yeni oluşturulan hizmet sorumlusu nesne kimliği) ile değiştirin$subscriptionId
.az role assignment create --role contributor --subscription $subscriptionId --assignee-object-id $assigneeObjectId --assignee-principal-type ServicePrincipal --scope /subscriptions/$subscriptionId/resourceGroups/$resourceGroupName
Microsoft Entra uygulamanız için yeni bir federasyon kimliği kimlik bilgisi oluşturmak için aşağıdaki komutu çalıştırın.
- değerini Microsoft Entra uygulamanız için objectId (uygulama oluşturulurken oluşturulur) ile değiştirin
APPLICATION-OBJECT-ID
. - Daha sonra başvurmak için için
CREDENTIAL-NAME
bir değer ayarlayın. - öğesini
subject
ayarlayın. Bunun değeri, iş akışınıza bağlı olarak GitHub tarafından tanımlanır:- GitHub Actions ortamınızdaki işler:
repo:< Organization/Repository >:environment:< Name >
- Bir ortama bağlı olmayan işler için, iş akışını tetiklerken kullanılan başvuru yolunu temel alan dal/etiket için başvuru yolunu ekleyin:
repo:< Organization/Repository >:ref:< ref path>
. Örneğin,repo:n-username/ node_express:ref:refs/heads/my-branch
veyarepo:n-username/ node_express:ref:refs/tags/my-tag
. - Çekme isteği olayı tarafından tetiklenen iş akışları için:
repo:< Organization/Repository >:pull_request
.
- GitHub Actions ortamınızdaki işler:
az ad app federated-credential create --id <APPLICATION-OBJECT-ID> --parameters credential.json ("credential.json" contains the following content) { "name": "<CREDENTIAL-NAME>", "issuer": "https://token.actions.githubusercontent.com", "subject": "repo:octo-org/octo-repo:environment:Production", "description": "Testing", "audiences": [ "api://AzureADTokenExchange" ] }
- değerini Microsoft Entra uygulamanız için objectId (uygulama oluşturulurken oluşturulur) ile değiştirin
Azure portalında active directory uygulaması, hizmet sorumlusu ve federasyon kimlik bilgileri oluşturmayı öğrenmek için bkz. GitHub ve Azure Bağlan.
GitHub gizli dizisini kimlik doğrulaması için yapılandırma
Oturum açma eylemine uygulamanızın İstemci Kimliğini, Kiracı Kimliğini ve Abonelik Kimliğini sağlamanız gerekir. Bu değerler doğrudan iş akışında sağlanabilir veya GitHub gizli dizilerinde depolanabilir ve iş akışınızda başvurulabilir. Değerleri GitHub gizli dizileri olarak kaydetmek daha güvenli bir seçenektir.
Gezinti menüsünde Ayarlar gidin.
Güvenlik > Gizli Dizileri ve değişkenler Eylemler'i> seçin.
Yeni depo gizli dizisi'ni seçin.
,
AZURE_TENANT_ID
veAZURE_SUBSCRIPTION_ID
içinAZURE_CLIENT_ID
gizli diziler oluşturun. GitHub gizli dizileriniz için Microsoft Entra uygulamanızdaki şu değerleri kullanın:GitHub gizli dizisi Microsoft Entra uygulaması AZURE_CLIENT_ID Uygulama (istemci) kimliği AZURE_TENANT_ID Dizin (kiracı) kimliği AZURE_SUBSCRIPTION_ID Subscription ID Gizli dizi ekle'yi seçerek her gizli diziyi kaydedin.
SQL Server gizli dizisi ekleme
için deponuzda SQL_SERVER_ADMIN_PASSWORD
yeni bir gizli dizi oluşturun. Bu gizli dizi, parola güvenliği için Azure standartlarına uyan herhangi bir parola olabilir. Bu parolaya yeniden erişemeyeceksiniz, bu nedenle parolayı ayrı olarak kaydedin.
Azure kaynakları oluşturma
Azure kaynakları oluşturma iş akışı, kaynakları Azure'a dağıtmak için bir ARM şablonu çalıştırır. İş akışı:
- Kullanıma Alma eylemiyle kaynak kodu kullanıma alır.
- Azure Oturum Açma eylemiyle Azure'da oturum açar ve ortam ile Azure kaynak bilgilerini toplar.
- Azure Resource Manager Dağıtma eylemiyle kaynakları dağıtır.
Azure kaynakları oluşturma iş akışını çalıştırmak için:
azuredeploy.yaml
Dosyayı.github/workflows
deponuzda açın.değerini
AZURE_RESOURCE_GROUP
kaynak grubu adınızla güncelleştirin.ve
SQL_SERVER_NAME
değerleriniWEB_APP_NAME
web uygulaması adınız ve SQL Server adınızla güncelleştirin.Eylemler'e gidin ve İş akışını çalıştır'ı seçin.
Eylemler sayfasında yeşil onay işaretini denetleyerek eyleminizin başarıyla çalıştığını doğrulayın.
Kapsayıcı kayıt defteri ve SQL gizli dizileri ekleme
Azure portalında yeni oluşturduğunuz Azure Container Registry'yi kaynak grubunuzda açın.
Erişim anahtarları'na gidin ve kullanıcı adı ve parola değerlerini kopyalayın.
için yeni GitHub gizli dizileri
ACR_USERNAME
veACR_PASSWORD
deponuzda parola oluşturun.Azure portalında Azure SQL veritabanınızı açın. Bağlan ion dizelerini açın ve değeri kopyalayın.
için
SQL_CONNECTION_STRING
yeni bir gizli dizi oluşturun. değerini ileSQL_SERVER_ADMIN_PASSWORD
değiştirin{your_password}
.
Görüntünüzü oluşturma, gönderme ve dağıtma
Derleme, gönderme ve dağıtma iş akışı, en son uygulama değişikliklerini içeren bir kapsayıcı oluşturur, kapsayıcıyı Azure Container Registry'ye gönderir ve web uygulaması hazırlama yuvasını gönderilen en son kapsayıcıya işaret eden şekilde güncelleştirir. İş akışı bir derleme ve dağıtım işini kapsayıcır:
- Derleme işi, Kullanıma Alma eylemiyle kaynak kodu kullanıma alır. Ardından iş Docker oturum açma eylemini ve özel betiği kullanarak Azure Container Registry ile kimlik doğrulaması yapar, kapsayıcı görüntüsü oluşturur ve Azure Container Registry'ye dağıtır.
- Dağıtım işi, Azure Oturum Açma eylemiyle Azure'da oturum açar ve ortam ile Azure kaynak bilgilerini toplar. İş daha sonra Web App Ayarlar Azure Uygulaması Service Ayarlar eylemiyle güncelleştirir ve Azure Web Dağıtımı eylemiyle app service hazırlama yuvasına dağıtılır. Son olarak, iş SQL veritabanını güncelleştirmek için özel bir betik çalıştırır ve hazırlama yuvasını üretime değiştirir.
Derlemeyi, göndermeyi ve iş akışını dağıtmayı çalıştırmak için:
Dosyanızı
build-deploy.yaml
.github/workflows
deponuzda açın.için
AZURE_RESOURCE_GROUP
ortam değişkenlerinin veWEB_APP_NAME
içindekilerleazuredeploy.yaml
eşleşip eşleşmediğini doğrulayın.ACR_LOGIN_SERVER
Azure Container Registry oturum açma sunucunuzun değerini güncelleştirin.
Sonraki adımlar
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin