Öğretici: Azure Container Apps'te Python web uygulaması dağıtmaya yönelik genel bakış kavramlarını öğrenin
Bu öğretici serisinde, bir Python web uygulamasını kapsayıcıya alma ve azure container apps
Azure'da bulutta yerel ve kapsayıcılı Python web uygulamaları oluşturmak ve dağıtmak için çeşitli seçenekler vardır. Bu öğretici serisi Azure Container Apps'i kapsar. Container Apps, özellikle kapsayıcılara dağıtılan birçok mikro hizmeti kapsayan uygulamalar için genel amaçlı kapsayıcılar çalıştırmak için iyidir.
Bu öğretici serisinde bir kapsayıcı oluşturacaksınız. Bir Python web uygulamasını Azure App Service'e kapsayıcı olarak dağıtmak için bkz. MongoDBile Azure'da Kapsayıcılı Python web uygulaması
Bu öğretici serisindeki yordamlar şu görevleri tamamlamanız için size yol gösterir:
- Python web uygulamasından Docker görüntüsü oluşturun ve görüntüyü Azure Container Registryiçinde depolayın.
- Docker görüntüsünü barındırmak için Azure Container Apps
yapılandırın. - GitHub deponuzda yapılan değişikliklerle tetiklenen yeni bir Docker görüntüsüyle kapsayıcıyı güncelleştirmek için GitHub Actions
ayarlayın. Bu adım isteğe bağlıdır. - Python web uygulamasının sürekli entegrasyonu ve teslimi (CI/CD) için Azure'da kurulum yapın.
Serinin bu ilk bölümünde, Azure Container Apps'te Python web uygulaması dağıtmaya yönelik temel kavramları öğreneceksiniz.
Hizmete genel bakış
Aşağıdaki diyagramda bu öğretici serisinde yerel ortamınızı, GitHub depolarınızı ve Azure hizmetlerinizi nasıl kullanacağınız gösterilmektedir.
Diyagram şu bileşenleri içerir:
-
Azure Container Apps, sunucusuz bir platformda mikro hizmetleri ve kapsayıcılı uygulamaları çalıştırmanızı sağlar. Sunucusuz platform, kapsayıcıları en az yapılandırmayla çalıştırmanın avantajlarından yararlandığınız anlamına gelir. Azure Container Apps ile uygulamalarınız HTTP trafiği, olay odaklı işleme veya CPU veya bellek yükü gibi özelliklere göre dinamik olarak ölçeklendirilebilir.
Container Apps, Azure Container Registry'den Docker görüntülerini çeker. Kapsayıcı görüntülerine yapılan değişiklikler, dağıtılan kapsayıcıda bir güncelleştirme tetikler. Ayrıca GitHub Actions'ı güncelleştirmeleri tetikleye yapılandırabilirsiniz.
Azure Container Registry
: Azure Container Registry, Azure'da Docker görüntüleriyle çalışmanızı sağlar. Container Registry, Azure'daki dağıtımlarınıza yakın olduğundan erişim denetiminiz vardır. Docker görüntülerine erişimi denetlemek için Microsoft Entra gruplarınızı ve izinlerinizi kullanabilirsiniz.
Bu öğretici serisinde kayıt defteri kaynağı Azure Container Registry'dir. Ancak küçük değişikliklerle Docker Hub'ı veya özel bir kayıt defterini de kullanabilirsiniz.
PostgreSQL için Azure Veritabanı
: Örnek kod, uygulama verilerini bir PostgreSQL veritabanında depolar. Kapsayıcı uygulaması, kullanıcı tarafından atanan yönetilen kimlikkullanarak PostgreSQL'e bağlanır. Bağlantı bilgileri, açıkça yapılandırılan ortam değişkenlerinde veya Bir Azure hizmet bağlayıcısıile depolanır.
-
Bu öğretici serisinin örnek kodu, forkladığınız ve yerel olarak klonladığınız bir GitHub deposundadır. GitHub Actionsile CI/CD iş akışı ayarlamak için bir GitHub hesabınız olmalıdır.
Örnek kod deposundan kapsayıcı görüntüsünü derlemek için yerel olarak veya Azure Cloud Shell
çalışıyorsanız, GitHub hesabı olmadan bu öğretici serisini takip etmeye devam edebilirsiniz.
Revizyonlar ve CI/CD
Kod değişiklikleri yapmak ve bunları bir kapsayıcıya göndermek için değişikliklerinizle yeni bir Docker görüntüsü oluşturursunuz. Ardından görüntüyü Container Registry'ye gönderir ve kapsayıcı uygulamanın yeni bir revizyonu oluşturursunuz.
Bu işlemi otomatikleştirmek için öğretici serisindeki isteğe bağlı bir adım, GitHub Actions kullanarak CI/CD işlem hattı oluşturmayı gösterir. GitHub deponuza yeni bir komit gönderildiğinde boru hattı kodunuzu otomatik olarak derler ve Container Apps'e dağıtır.
Kimlik doğrulaması ve güvenlik
Bu öğretici serisinde doğrudan Azure'da bir Docker kapsayıcı görüntüsü oluşturacak ve bunu Azure Container Apps'e dağıtacaksınız. Container Apps, Azure sanal ağıtarafından desteklenen ortamıbağlamında çalışır. Sanal ağlar, Azure'daki özel ağınız için temel bir yapı taşıdır. Container Apps, girişi etkinleştirerek kapsayıcı uygulamanızı genel web'de kullanıma sunmanızı sağlar.
CI/CD'yi ayarlamak için Azure Container Apps'i GitHub hesabınız için OAuth uygulaması yetkilendirmeniz gerekir. OAuth uygulaması olarak, Container Apps deponuza Azure kaynakları ve bunları güncelleştirmek için işlerle ilgili bilgiler içeren bir GitHub Actions iş akışı dosyası yazar. İş akışı, Container Apps için rol tabanlı erişim ve Azure Container Registry için kullanıcı adı ve parola ile bir Microsoft Entra hizmet sorumlusunun (veya mevcut bir hizmet sorumlusunun) kimlik bilgilerini kullanarak Azure kaynaklarını güncelleştirir. Kimlik bilgileri GitHub deponuzda güvenli bir şekilde depolanır.
Son olarak, bu öğretici serisindeki örnek web uygulaması verileri bir PostgreSQL veritabanında depolar. Örnek kod, bir bağlantı dizesi aracılığıyla PostgreSQL'e bağlanır. Uygulama Azure'da çalışırken, kullanıcı tarafından atanan yönetilen kimliği kullanarak PostgreSQL veritabanına bağlanır. Kod, çalışma zamanı sırasında bağlantı dizesindeki parolayı bir Microsoft Entra erişim belirteci ile dinamik olarak güncelleştirmek için DefaultAzureCredential
kullanır. Bu mekanizma, bağlantı dizesinde veya ortam değişkeninde parolayı sabit kodlama gereksinimini önler ve ek bir güvenlik katmanı sağlar.
Öğretici serisi, yönetilen kimliği oluşturma ve veritabanına erişebilmesi ve veritabanına güncelleştirilebilmesi için uygun bir PostgreSQL rolü ve izinleri verme konusunda size yol gösterir. Container Apps yapılandırması sırasında öğretici serisi, uygulamada yönetilen kimliği yapılandırma ve veritabanı için bağlantı bilgilerini içeren ortam değişkenlerini ayarlama konusunda size yol gösterir. Aynı şeyi gerçekleştirmek için bir Azure hizmet bağlayıcısı da kullanabilirsiniz.
Önkoşullar
Bu öğretici serisini tamamlamak için şunları yapmanız gerekir:
Oluşturabileceğiniz bir Azure hesabı:
- Azure Container Registry örneği.
- Azure Container Apps ortamı.
- PostgreSQL için Azure Veritabanı örneği.
Kullandığınız araca bağlı olarak Visual Studio Code veya Azure CLI:
- Visual Studio Code için Container Apps uzantısıgerekir.
- Azure CLI'yi Azure Cloud Shellaracılığıyla kullanabilirsiniz.
Python paketleri:
- PostgreSQL'e bağlanmak için psycopg2-binary.
- Flask veya Django web çerçevesi olarak.
Örnek uygulama
Python örnek uygulaması, PostgreSQL'de restoran ve gözden geçirme verilerini kaydeden bir restoran gözden geçirme uygulamasıdır. Öğretici serisinin sonunda, Azure Container Apps'te dağıtılan ve çalıştırılan ve aşağıdaki ekran görüntüsüne benzeyen bir restoran gözden geçirme uygulamasına sahip olacaksınız.