Aracılığıyla paylaş


Öğ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:

Ö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.

  1. 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-idolan bir appId 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 olarak AZURE_CLIENT_ID kullanılacak değeri daha sonra kaydedin.

  2. 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. Yeni objectId , şeklindedir assignee-object-id.

    Bu komut farklı objectId bir JSON çıkışı oluşturur ve sonraki adımda kullanılacaktır. Yeni objectId , şeklindedir assignee-object-id.

    appOwnerTenantId daha sonra kullanmak üzere öğesini GitHub gizli dizisi AZURE_TENANT_ID olarak kopyalayın.

     az ad sp create --id $appId
    
  3. 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şturulan assignee-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
    
  4. 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ştirinAPPLICATION-OBJECT-ID.
    • Daha sonra başvurmak için için CREDENTIAL-NAME bir değer ayarlayın.
    • öğesini subjectayarlayı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 veya repo: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.
    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"
        ]
    }
    

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.

  1. GitHub'da deponuza gidin.

  2. Gezinti menüsünde Ayarlar gidin.

  3. Güvenlik > Gizli Dizileri ve değişkenler Eylemler'i> seçin.

    Gizli dizi ekleme ekran görüntüsü

  4. Yeni depo gizli dizisi'ni seçin.

  5. , AZURE_TENANT_IDve AZURE_SUBSCRIPTION_IDiçin AZURE_CLIENT_IDgizli 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
  6. Gizli dizi ekle'yi seçerek her gizli diziyi kaydedin.

SQL Server gizli dizisi ekleme

için deponuzda SQL_SERVER_ADMIN_PASSWORDyeni 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:

  1. azuredeploy.yaml Dosyayı .github/workflows deponuzda açın.

  2. değerini AZURE_RESOURCE_GROUP kaynak grubu adınızla güncelleştirin.

  3. ve SQL_SERVER_NAME değerlerini WEB_APP_NAME web uygulaması adınız ve SQL Server adınızla güncelleştirin.

  4. Eylemler'e gidin ve İş akışını çalıştır'ı seçin.

    Kaynak eklemek için GitHub Actions iş akışını çalıştırın.

  5. Eylemler sayfasında yeşil onay işaretini denetleyerek eyleminizin başarıyla çalıştığını doğrulayın.

    Kaynak oluşturma işleminin başarılı bir şekilde çalıştırılması.

Kapsayıcı kayıt defteri ve SQL gizli dizileri ekleme

  1. Azure portalında yeni oluşturduğunuz Azure Container Registry'yi kaynak grubunuzda açın.

  2. Erişim anahtarları'na gidin ve kullanıcı adı ve parola değerlerini kopyalayın.

  3. için yeni GitHub gizli dizileri ACR_USERNAME ve ACR_PASSWORD deponuzda parola oluşturun.

  4. Azure portalında Azure SQL veritabanınızı açın. Bağlan ion dizelerini açın ve değeri kopyalayın.

  5. için SQL_CONNECTION_STRINGyeni bir gizli dizi oluşturun. değerini ile SQL_SERVER_ADMIN_PASSWORDdeğ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:

  1. Dosyanızı build-deploy.yaml .github/workflows deponuzda açın.

  2. için AZURE_RESOURCE_GROUP ortam değişkenlerinin ve WEB_APP_NAME içindekilerle azuredeploy.yamleşleşip eşleşmediğini doğrulayın.

  3. ACR_LOGIN_SERVER Azure Container Registry oturum açma sunucunuzun değerini güncelleştirin.

Sonraki adımlar