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.
Bu makale, Azure Container Apps
Bu öğreticide siz:
- GitHub Actions iş akışı kullanarak kapsayıcı uygulaması için sürekli dağıtımı yapılandırın.
- GitHub Actions iş akışını tetikleme amacıyla örnek deponun bir kopyasında değişiklik yapın.
- Sürekli dağıtımı yapılandırmayla ilgili karşılaşabileceğiniz sorunları giderin.
- Öğretici serisini bitirdiğinizde ihtiyacınız olmayan kaynakları kaldırın.
Sürekli dağıtım, uygulama geliştirme iş akışınızın otomasyonu olan DevOps sürekli tümleştirme ve sürekli teslim (CI/CD) uygulamasıyla ilgilidir.
Aşağıdaki diyagramda bu öğreticideki görevler vurgulanır.
Önkoşullar
Sürekli dağıtımı ayarlamak için şunları yapmanız gerekir:
Önceki öğreticide oluşturduğunuz kaynaklar (ve yapılandırmaları),Azure Container Registry örneği ve Azure Container Apps içindeki bir kapsayıcı uygulamasını içerir.
Örnek kodun (Django veya Flask) çatallanmasını yaptığınız ve Azure Container Apps'ten bağlanabileceğiniz bir GitHub hesabı. (Çatallama yerine örnek kodu indirdiyseniz yerel deponuzu GitHub hesabınıza göndermeyi unutmayın.)
İsteğe bağlı olarak, geliştirme ortamınızda yüklü Git kullanarak kod değişiklikleri yapabilir ve GitHub'daki deponuza gönderebilirsiniz. Alternatif olarak, değişiklikleri doğrudan GitHub'da yapabilirsiniz.
Kapsayıcı için sürekli dağıtımı yapılandırma
Önceki öğreticide, Azure Container Apps'te bir kapsayıcı uygulaması oluşturup yapılandırmıştınız. Yapılandırmanın bir bölümü, Bir Azure Container Registry örneğinden Docker görüntüsü çekiyordu. Kapsayıcı görüntüsü, kapsayıcı uygulamasını ilk kez ayarladığınızda olduğu gibibir kapsayıcı
Bu bölümde, GitHub Actions iş akışını kullanarak sürekli dağıtım ayarlarsınız. Sürekli dağıtımda, tetikleyici temelinde yeni bir Docker görüntüsü ve kapsayıcı revizyonu oluşturulur. Bu öğreticideki tetikleyici, çekme isteği gibi deponuzun ana dalında meydana gelen herhangi bir değişikliktir. İş akışı tetiklendiğinde yeni bir Docker görüntüsü oluşturur, bunu Azure Container Registry örneğine gönderir ve kapsayıcı uygulamasını yeni görüntüyü kullanarak yeni bir düzeltmeye güncelleştirir.
Azure CLI komutlarını Azure Cloud Shell veya Azure CLI yüklü bir iş istasyonunda çalıştırabilirsiniz.
Windows bilgisayarda Git Bash kabuğunda komut çalıştırıyorsanız devam etmeden önce aşağıdaki komutu girin:
export MSYS_NO_PATHCONV=1
hizmet sorumlusu oluşturmak için az ad sp create-for-rbac komutunu kullanın:
az ad sp create-for-rbac \ --name <app-name> \ --role Contributor \ --scopes "/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>"Komutta şöyle:
-
<uygulama adı>, hizmet sorumlusu için isteğe bağlı bir görünen addır.
--nameseçeneğini bırakırsanız, görünen ad olarak bir GUID oluşturulur. -
<abonelik kimliği>, Azure'da aboneliğinizi benzersiz olarak tanımlayan GUID'dir. Abonelik kimliğinizi bilmiyorsanız az account show komutunu çalıştırabilir ve çıktıdaki
idözelliğinden kopyalayabilirsiniz. -
<kaynak grubu-adı>, Azure Container Apps kapsayıcısını içeren bir kaynak grubunun adıdır. Rol tabanlı erişim denetimi (RBAC), kaynak grubu düzeyindedir. Önceki öğreticideki adımları izlediyseniz kaynak grubunun adı
pythoncontainer-rg.
Sonraki adım için bu komutun çıkışını kaydedin. Özellikle, istemci kimliğini (
appIdözelliği), istemci sırrını (passwordözelliği) ve kiracı kimliğini (tenantözelliği) kaydedin.-
<uygulama adı>, hizmet sorumlusu için isteğe bağlı bir görünen addır.
GitHub Actions'ı yapılandırmak için az containerapp github-action add komutunu kullanın.
az containerapp github-action add \ --resource-group <resource-group-name> \ --name python-container-app \ --repo-url <https://github.com/userid/repo> \ --branch main \ --registry-url <registry-name>.azurecr.io \ --service-principal-client-id <client-id> \ --service-principal-tenant-id <tenant-id> \ --service-principal-client-secret <client-secret> \ --login-with-githubKomutta şöyle:
-
<kaynak grubu-adı> kaynak grubunun adıdır. Bu öğreticide, işlem
pythoncontainer-rgolarak gösterilmektedir. -
<https://github.com/userid/repo>, GitHub deponuzun URL'sidir. Bu öğreticide ya
https://github.com/userid/msdocs-python-django-azure-container-appsya dahttps://github.com/userid/msdocs-python-flask-azure-container-apps. Bu URL'lerde GitHub kullanıcı kimliğinizuserid'dır. - <kayıt defteri-adı>, önceki öğreticide oluşturduğunuz mevcut Azure Container Registry örneği veya kullanabileceğiniz örnektir.
-
<client-id>, önceki
appIdkomutundanaz ad sp create-for-rbacözelliğinin değeridir. Kimlik,00000000-0000-0000-0000-00000000biçimindeki bir GUID'dir. -
<tenant-id>, önceki
tenantkomutundakiaz ad sp create-for-rbacözelliğinin değeridir. Kimlik ayrıca istemci kimliğine benzer bir GUID'dir. -
<istemci gizli anahtarı>, önceki
passwordkomutundanaz ad sp create-for-rbacözelliğinin değeridir.
-
<kaynak grubu-adı> kaynak grubunun adıdır. Bu öğreticide, işlem
Sürekli dağıtım yapılandırmasında hizmet sorumlusu GitHub Actions'ın Azure kaynaklarına erişmesine ve bunları değiştirmesine olanak tanır. Hizmet sorumlusuna atanan roller kaynaklara erişimi kısıtlar. Hizmet sorumlusuna, kapsayıcı uygulamanın bulunduğu kaynak grubunda yerleşik Katılımcı rolü atanmıştır.
Portalın adımlarını izlediyseniz, hizmet sorumlusu sizin için otomatik olarak oluşturulur. Azure CLI adımlarını izlediyseniz, sürekli dağıtımı yapılandırmadan önce hizmet sorumlusunu açıkça oluşturdunuz.
GitHub Actions ile web uygulamasını yeniden dağıtma
Bu bölümde, örnek deponun çatallanmış kopyasında bir değişiklik yapacaksınız. Bundan sonra, değişikliğin web sitesine otomatik olarak dağıtıldığını onaylayabilirsiniz.
Henüz yapmadıysanız örnek deposunun fork'unu oluşturun (Django veya Flask). Kodunuzu doğrudan GitHub'dan veya geliştirme ortamınızda Gitkullanarak bir komut satırından değiştirebilirsiniz.
Örnek depo çatalınıza gidin ve ana dalından başlayın.
Değişiklik yapın:
- /templates/base.html dosyasına gidin. (Django için yol restaurant_review/templates/restaurant_review/base.html.)
-
Düzenle seçin ve
Azure Restaurant ReviewifadesiniAzure Restaurant Review - Redeployedolarak değiştirin.
Düzenlemekte olduğunuz sayfanın alt kısmında Doğrudan ana dalda değişiklik yap seçili olduğundan emin olun. Ardından Değişiklikleri Onayla düğmesini seçin.
İşleme, GitHub Actions iş akışını başlatıyor.
Not
Bu kılavuz, doğrudan ana dalında değişiklik yapmayı gösterir. Tipik yazılım iş akışlarında, ana dışında bir dalda değişiklik yapar ve ardından değişikliği anaile birleştirmek için bir pull request oluşturursunuz. Çekme talepleri iş akışını da başlatıyor.
GitHub Actions'i anlama
İş akışı geçmişini görüntüleme
İş akışı geçmişini görüntülemeniz gerekiyorsa aşağıdaki yordamlardan birini kullanın.
GitHub'da, örnek repository forkunuza gidin ve Eylemler sekmesini açın.
İş akışı sırları
Depoya eklenen .github/workflows/<iş akışı adı>.yml iş akışı dosyası, iş akışının derleme ve kapsayıcı uygulama güncelleme görevleri için gerekli olan kimlik bilgileri için yer tutucular içerir. Kimlik bilgileri deponun Ayarları alanında, Güvenlik>Gizli Dizileri ve değişkenleri>Eylemleraltında şifrelenmiş olarak depolanır.
Kimlik bilgileri değişirse, burada güncelleştirebilirsiniz. Örneğin, Azure Container Registry parolaları yeniden oluşturulursa, REGISTRY_PASSWORD değerini güncelleştirmeniz gerekir. Daha fazla bilgi için GitHub belgelerinde Şifrelenmiş sırlar bölümüne bakın.
OAuth yetkili uygulamaları
Sürekli dağıtımı ayarlarken, Azure Container Apps'i GitHub hesabınız için yetkili bir OAuth uygulaması olarak belirlersiniz. Container Apps, GitHub Actions YAML dosyası oluşturmak için yetkili erişimi kullanarak .github/workflows/<iş akışı-adı>.ymldosyasını oluşturur. Integrations>Applicationsaltında, yetkili uygulamalarınızı görüntüleyebilir ve hesabınızdaki izinleri iptal edebilirsiniz.
Sorun Giderme
Azure CLI aracılığıyla hizmet sorumlusu ayarlarken hata alıyorsunuz
Bu bölüm, Azure CLI az ad sp create-for-rba komutunu kullanarak hizmet sorumlusu ayarlarken oluşan hataları gidermenize yardımcı olabilir.
"InvalidSchema: Bağlantı bağdaştırıcısı bulunamadı" hata iletisiyle karşılaşırsanız:
Çalıştırdığınız komut kabuğunu kontrol edin. Bash kabuğu kullanıyorsanız
MSYS_NO_PATHCONVdeğişkenleriniexport MSYS_NO_PATHCONV=1olarak ayarlayın.Daha fazla bilgi için GitHub sorunu ve'e bakın: Git Bash'ten Azure CLI ile hizmet ilkesi oluşturulamıyor.
"Eğer 'Birden fazla uygulama aynı görünen ada sahip' hatasını alırsanız:"
- Hizmet sorumlusu için ad zaten alınmış. Başka bir ad seçin veya
--nameargümanını kaldırın. Bir GUID, görünen ad olarak otomatik olarak oluşturulacaktır.
GitHub Actions iş akışı başarısız oldu
bir iş akışının durumunu denetlemek için deponun Eylemler sekmesine gidin:
- Başarısız bir iş akışı varsa iş akışı dosyasını inceleyin. İki iş olmalıdır: oluşturma ve yayınlama. Başarısız bir iş için, sorunları aramak için işin görevlerinin çıktısını denetleyin.
- "TLS el sıkışması zaman aşımı" ifadesini içeren bir hata iletisi alırsanız, iş akışını elle çalıştırın. Depodaki Eylemler sekmesinde, Otomatik dağıtımı tetikle seçeneğini seçerek zaman aşımının geçici bir sorun olup olmadığını kontrol edin.
- Bu öğreticide gösterildiği gibi kapsayıcı uygulaması için sürekli dağıtım ayarlarsanız, iş akışı dosyası (.github/workflows/<iş-akışı-adı>.yml) sizin yerinize otomatik olarak oluşturulur. Bu öğretici için bu dosyayı değiştirmeniz gerekmez. Bunu yaptıysanız değişikliklerinizi geri alın ve iş akışını deneyin.
Web sitesi ana dalda birleştirdiğiniz değişiklikleri göstermiyor
GitHub'da:
- GitHub Actions iş akışının çalıştığını kontrol edin ve değişikliği iş akışını tetikleyen dala işlediğinizden emin olun.
Azure portalında:
Dalda değişiklik yaptıktan sonra zaman damgasıyla yeni bir Docker görüntüsü oluşturulup oluşturulmadığını görmek için Azure Container Registry örneğini denetleyin.
Bir programlama hatası olup olmadığını görmek için kapsayıcı uygulamasının günlüklerini denetleyin:
- Kapsayıcı uygulamasına gidin ve ardından Düzeltme Yönetimi'ne gidin. <Etkin kapsayıcı>'ya gidin. Düzeltme ayrıntıları'na gidin. Konsol günlükleri'ne gidin.
- Sütunların gösterilecek sırasını seçin: Saat Oluşturuldu, Stream_sve Log_s.
- Günlükleri en sonlara göre sıralayın ve
stderrsütununda Pythonstdoutve iletilerini arayın. Pythonprintçıkışıstdoutmesajlardır.
Azure CLI'da:
- az containerapp logs show komutunu kullanın.
Sürekli dağıtımı durdurmak istiyorsunuz
Sürekli dağıtımı durdurmak, kapsayıcı uygulamanızın deponuzun bağlantısını kesmek anlamına gelir.
Azure portalında:
- Kapsayıcı uygulamasına git. Hizmet menüsünde, Sürekli dağıtım'i seçin ve ardından Bağlantıyı kesöğesini seçin.
Azure CLI'da:
- az container app github-action remove komutunu kullanın.
Bağlantıyı kestikten sonra:
- .github/workflows/<iş akışı adı>.yml dosyası deponuzdan kaldırılır.
- Gizli anahtarlar depodan kaldırılmaz.
- Azure Container Apps, GitHub hesabınız için yetkili bir OAuth uygulaması olarak kalır.
- Azure'da, kapsayıcı, son dağıtılan kapsayıcı olarak kalır. Yeni kapsayıcı düzeltmelerinin en son görüntüyü alması için kapsayıcı uygulamasını Azure Container Registry örneğine yeniden bağlayabilirsiniz.
- Azure'da, oluşturduğunuz ve sürekli dağıtım için kullandığınız hizmet sorumluları silinmez.
Kaynakları kaldırma
Öğretici serisiyle işiniz bittiyse ve ek maliyetler doğurmak istemiyorsanız, kullandığınız kaynakları kaldırın.
Kaynak grubunu kaldırmak gruptaki tüm kaynakları kaldırır ve kaynakları kaldırmanın en hızlı yoludur. Kaynak gruplarının nasıl kaldırılacağına ilişkin bir örnek için bkz. Kapsayıcı öğretici temizleme.
İlgili içerik
Bu öğretici üzerinde çalışmayı planlıyorsanız, uygulayabileceğiniz bazı sonraki adımlar şunlardır:
- Azure Container Apps'de ölçeklendirme kuralları ayarlama
- Azure Container Apps'te özel etki alanı adlarını ve sertifikalarını bağlama
- Azure Container Apps'te bir uygulamayı izleme