Azure App Service özel kapsayıcılarla sürekli dağıtım

Bu öğreticide, yönetilen Azure Container Registry depolarından veya Docker Hub 'ındanözel bir kapsayıcı görüntüsü için sürekli dağıtımı yapılandırırsınız.

1. dağıtım merkezi 'ne gidin

Azure Portal, App Service uygulamanızın yönetim sayfasına gidin.

sol menüden dağıtım merkezi > Ayarlar' ne tıklayın.

2. dağıtım kaynağını seçin

Dağıtım kaynağını seçin senaryonuza bağlıdır:

  • Kapsayıcı kayıt defteri , kapsayıcı kayıt defteriniz ve App SERVICE arasında CI/CD 'yi ayarlar.
  • GitHub eylemler seçeneği, kapsayıcı görüntünüz için kaynak kodunu GitHub olarak tuttuğunuz durumlarda sizin için kullanılır. GitHub deponuza yeni işlemeler tarafından tetiklenen dağıtım eylemi, docker build doğrudan kapsayıcı kayıt defterinizde çalıştırılabilir ve docker push sonra, yeni görüntüyü çalıştırmak için App Service uygulamanızı güncelleştirebilir. daha fazla bilgi için bkz. cı/CD GitHub eylemlerle çalışma.
  • Azure Pipelines ile cı/CD 'yi ayarlamak için, bkz. Azure Pipelines Azure Web uygulaması kapsayıcısı dağıtma.

Not

Docker Compose uygulama için Container Registry' ı seçin.

GitHub eylemler ' i seçerseniz, yetkilendir ' e tıklayın ve yetkilendirme istemlerini izleyin. daha önce GitHub zaten yetkilendirildiyseniz, hesabı değiştir' i tıklatarak farklı bir kullanıcının deposundan dağıtım yapabilirsiniz.

Azure hesabınıza GitHub yetkilendirdikten sonra, dağıtım yapılacak organizasyonu, depoyu ve dalı seçin .

2. kayıt defteri ayarlarını yapılandırma

3. kayıt defteri ayarlarını yapılandırma

Çok Kapsayıcılı (Docker Compose) bir uygulama dağıtmak için kapsayıcı türünde Docker Compose seçin .

Kapsayıcı türü açılan listesini görmüyorsanız kaynağa geri gidin ve Container Registry' yi seçin .

Kayıt defteri kaynağında, kapsayıcı kayıt defterinizin nerede olduğunu seçin . Azure Container Registry veya Docker Hub 'ı yoksa, özel kayıt defteri' ni seçin .

Not

Çok Kapsayıcılı (Docker Compose) uygulamanız birden fazla özel görüntü kullanıyorsa, özel görüntülerin aynı özel kayıt defterinde olduğundan ve aynı kullanıcı kimlik bilgileriyle erişilebildiğinden emin olun. Çok Kapsayıcılı uygulamanız yalnızca ortak görüntüleri kullanıyorsa, bazı görüntüler Docker Hub 'ında olmasa bile Docker Hub' ı seçin .

Seçiminizden eşleşen sekmeyi seçerek sonraki adımları izleyin.

Kayıt defteri açılan listesi, uygulamanızla aynı abonelikteki kayıt defterlerini görüntüler. İstediğiniz kayıt defterini seçin .

Not

Dağıtılacak resmi ve etiketi seçin . İsterseniz Başlangıç dosyasında başlangıç komutunu yazın .

Kapsayıcı türüne bağlı olarak sonraki adımı izleyin:

  • Docker Compose için, özel görüntüleriniz için kayıt defterini seçin . Docker Compose dosyanızıkarşıya yüklemek için Dosya Seç ' e tıklayın veya Docker Compose dosyanızın içeriğini config dosyasına yapıştırmanız yeterlidir.
  • Tek kapsayıcı için, dağıtılacak resmi ve etiketi seçin . İsterseniz Başlangıç dosyasında başlangıç komutunu yazın .

App Service, kapsayıcınızı başlatırken Başlangıç dosyasındaki dizeyi docker run komutun sonuna ( [COMMAND] [ARG...] kesim olarak) ekler.

3. CI/CD 'yi etkinleştirme

4. CI/CD 'yi etkinleştir

App Service, Azure Container Registry ve Docker Hub ile CI/CD tümleştirmesini destekler. Etkinleştirmek için sürekli dağıtımda Açık ' ı seçin .

Not

kaynakta GitHub eylemler ' i seçerseniz, cı/CD doğrudan GitHub eylemleri tarafından işlendiği için bu seçeneği kullanmayın. Bunun yerine, iş akışı dosyasını incelemek için Önizleme dosyası ' na Tıklabileceğiniz bir iş akışı yapılandırma bölümü görürsünüz. Azure, oluşturma ve dağıtma görevlerini işlemek için bu dosyayı seçtiğiniz GitHub kaynak deponuza kaydeder. daha fazla bilgi için bkz. cı/CD GitHub eylemlerle çalışma.

Bu seçeneği etkinleştirdiğinizde, App Service Azure Container Registry veya Docker Hub 'ında deponuza bir Web kancası ekler. Seçtiğiniz görüntü her güncelleştirildiğinde deponuzu bu Web kancasına nakleder docker push . Web kancası, App Service uygulamanızın docker pull güncelleştirilmiş görüntüyü almak için yeniden başlatılmasına ve çalışmasına neden olur.

Diğer özel kayıt defterleri için, Web kancasına el ile veya bir CI/CD işlem hattındaki adımla bir adım gönderebilirsiniz. Web kancası URL 'si ' nde, Web kancası URL 'sini almak için Kopyala düğmesine tıklayın .

Not

Çok Kapsayıcılı (Docker Compose) uygulamalar için destek sınırlıdır:

  • Azure Container Registry için App Service, seçilen kayıt defterinde kapsam olarak kayıt defteriyle bir Web kancası oluşturur. docker pushKayıt defterindeki bir depoya (Docker Compose dosyanız tarafından başvurulmayan olanlar dahil), bir uygulamanın yeniden başlatılmasını tetikler. Web kancasını daha dar bir kapsam olarak değiştirmek isteyebilirsiniz.
  • Docker Hub, kayıt defteri düzeyinde Web kancalarını desteklemez. Web kancalarını Docker Compose dosyanızda belirtilen görüntülere el ile eklemeniz gerekir.

4. ayarlarınızı kaydedin

5. ayarlarınızı kaydedin

Kaydet' e tıklayın.

cı/CD GitHub eylemlerle nasıl kullanılır

kaynakta GitHub eylemler ' i seçerseniz ( dağıtım kaynağı seç' i seçin), App Service cı/CD 'yi aşağıdaki yollarla ayarlar:

  • derleme ve dağıtım görevlerini App Service için GitHub deponuza bir GitHub eylemleri iş akışı dosyası mevduın.
  • özel kayıt defteriniz için kimlik bilgilerini GitHub gizli dizi olarak ekler. Oluşturulan iş akışı dosyası, özel kayıt defteriniz ile oturum açmak için Azure/Docker-Login eylemini çalıştırır ve ardından docker push bunu dağıtmak için çalışır.
  • uygulamanız için yayımlama profilini GitHub gizli dizi olarak ekler. Oluşturulan iş akışı dosyası App Service kimlik doğrulaması yapmak için bu parolayı kullanır, ardından güncelleştirilmiş görüntüyü yapılandırmak için Azure/webapps-Deploy eylemini çalıştırır ve bu, güncelleştirilmiş görüntüde çekme için bir uygulamanın yeniden başlatılmasını tetikler.
  • İş akışı çalıştırma günlüklerinden bilgileri yakalar ve uygulamanızın dağıtım merkezindeki Günlükler sekmesinde görüntüler.

GitHub eylemleri yapı sağlayıcısını aşağıdaki yollarla özelleştirebilirsiniz:

  • GitHub deponuzda oluşturulduktan sonra iş akışı dosyasını özelleştirin. daha fazla bilgi için bkz. GitHub eylemler için iş akışı sözdizimi. Bir uygulamanın yeniden başlatılmasını tetiklemek için iş akışının Azure/webapps-Deploy eylemiyle biteceğinden emin olun.
  • seçilen dal korunuyorsa, yapılandırma kaydedilmeden iş akışı dosyasının önizlemesini görmeye devam edebilir, sonra dosyayı ve gerekli GitHub gizli dizileri deponuza el ile eklemeniz gerekir. Bu yöntem, Azure portal günlük tümleştirmesi vermez.
  • Bir yayımlama profili yerine, Azure Active Directory bir hizmet sorumlusu kullanarak dağıtın.

Hizmet sorumlusu ile kimlik doğrulama

Bu isteğe bağlı yapılandırma, varsayılan kimlik doğrulamanın oluşturulan iş akışı dosyasındaki yayımlama profilleriyle yerini alır.

Azure CLI'de az ad SP Create-for-RBAC komutuyla bir hizmet sorumlusu oluşturun . Aşağıdaki örnekte,, <subscription-id> <group-name> ve <app-name> değerlerini kendi değerlerinizle değiştirin. Sonraki adımda, en üst düzey dahil olmak üzere tüm JSON çıkışını kaydedin {} .

az ad sp create-for-rbac --name "myAppDeployAuth" --role contributor \
                            --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name> \
                            --sdk-auth

Önemli

Güvenlik için, hizmet sorumlusu için gereken en düşük erişimi verin. Önceki örnekteki kapsam, kaynak grubunun tamamı değil, belirli App Service uygulamasıyla sınırlandırılmıştır.

GitHub, deponuza gidin ve Ayarlar > gizli dizileri ekleyin > yeni bir parola ekleyin. Azure CLı komutundan tüm JSON çıkışını gizli dizi değeri alanına yapıştırın . Gizli dizi gibi bir ad verin AZURE_CREDENTIALS .

Dağıtım Merkezi tarafından oluşturulan iş akışı dosyasında, azure/webapps-deploy Aşağıdaki örnekte olduğu gibi kodla adımları düzeltin:

- name: Sign in to Azure 
# Use the GitHub secret you added
- uses: azure/login@v1
    with:
    creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy to Azure Web App
# Remove publish-profile
- uses: azure/webapps-deploy@v2
    with:
    app-name: '<app-name>'
    slot-name: 'production'
    images: '<registry-server>/${{ secrets.AzureAppService_ContainerUsername_... }}/<image>:${{ github.sha }}'
    - name: Sign out of Azure
    run: |
    az logout

CLı ile otomatikleştirin

Kapsayıcı kayıt defterini ve Docker görüntüsünü yapılandırmak için az WebApp config Container set komutunu çalıştırın .

az webapp config container set --name <app-name> --resource-group <group-name> --docker-custom-image-name '<image>:<tag>' --docker-registry-server-url 'https://<registry-name>.azurecr.io' --docker-registry-server-user '<username>' --docker-registry-server-password '<password>'

Çok Kapsayıcılı (Docker Compose) bir uygulamayı yapılandırmak için, bir Docker Compose dosyayı yerel olarak hazırlayın ve ardından parametresiyle az WebApp config Container set komutunu çalıştırın --multicontainer-config-file . Docker Compose dosyanız özel görüntüler içeriyorsa, --docker-registry-server-* Önceki örnekte gösterildiği gibi parametreleri ekleyin.

az webapp config container set --resource-group <group-name> --name <app-name> --multicontainer-config-file <docker-compose-file>

Kapsayıcı kayıt defterinden uygulamanıza olan CI/CD 'yi yapılandırmak için az WebApp Deployment Container config --enable-cd parametresini parametresiyle çalıştırın. Komut, Web kancası URL 'sini çıkarır, ancak Web kancasını kayıt defterinizde el ile ayrı bir adımda oluşturmanız gerekir. Aşağıdaki örnek, uygulamanızda CI/CD 'yi sağlar ve ardından Azure Container Registry ' de Web kancasını oluşturmak için çıktıda Web kancası URL 'sini kullanır.

ci_cd_url=$(az webapp deployment container config --name <app-name> --resource-group <group-name> --enable-cd true --query CI_CD_URL --output tsv)

az acr webhook create --name <webhook-name> --registry <registry-name> --resource-group <group-name> --actions push --uri $ci_cd_url --scope '<image>:<tag>'

Diğer kaynaklar