(KULLANIMSIZ) Azure DevOps Services kullanarak Docker Swarm ile Azure Container Service'te çok kapsayıcılı bir uygulama dağıtmak için tam CI/CD işlem hattı
Uyarı
Azure Container Service (ACS) kullanım dışı bırakılıyor. ACS'ye yeni özellik veya işlevsellik eklenmiyor. Tüm API'ler, portal deneyimi, CLI komutları ve belgeleri kullanım dışı olarak işaretlenir.
Daha fazla bilgi için bkz. Azure.com'da Azure Container Service kullanımdan kaldırma duyurusu.
Aşağıdaki Azure Market çözümlerinden birini dağıtmanızı öneririz:
- Mesosphere DC/OS
Kubernetes kullanmak istiyorsanız bkz. Azure Kubernetes Service.
Bulut için modern uygulamalar geliştirirken karşılaşılan en büyük zorluklardan biri, bu uygulamaları sürekli olarak sunabilmektir. Bu makalede Docker Swarm, Azure Container Registry ve Azure Pipelines yönetimi ile Azure Container Service kullanarak tam sürekli tümleştirme ve dağıtım (CI/CD) işlem hattı uygulamayı öğreneceksiniz.
Amaç, bu uygulamayı Azure DevOps Services kullanarak bir Docker Swarm kümesinde sürekli teslim etmektir. Aşağıdaki şekilde bu sürekli teslim işlem hattı ayrıntılı olarak gösterilmiştir:
Adımların kısa bir açıklaması aşağıdadır:
- Kod değişiklikleri kaynak kod deposuna işlenir (burada, GitHub)
- GitHub, Azure DevOps Services'de derleme tetikler
- Azure DevOps Services kaynakların en son sürümünü alır ve uygulamayı oluşturan tüm görüntüleri oluşturur
- Azure DevOps Services her görüntüyü Azure Container Registry hizmeti kullanılarak oluşturulan bir Docker kayıt defterine gönderir
- Azure DevOps Services yeni bir sürümü tetikler
- Yayın, Azure kapsayıcı hizmeti kümesi ana düğümünde SSH kullanarak bazı komutları çalıştırır
- Kümedeki Docker Swarm görüntülerin en son sürümünü çeker
- Uygulamanın yeni sürümü Docker Compose kullanılarak dağıtılır
Önkoşullar
Bu öğreticiye başlamadan önce aşağıdaki görevleri tamamlamanız gerekir:
- Azure Container Service'te Swarm kümesi oluşturma
- Azure Container Service'teki Swarm kümesine bağlanma
- Azure kapsayıcı kayıt defteri oluşturma
- Azure DevOps Services bir kuruluş ve proje oluşturma
- GitHub deposunu GitHub hesabınıza çatal oluşturma
Not
Azure Container Service’teki Docker Swarm düzenleyicisi eski tek başına Swarm’u kullanır. Şu anda, tümleşik Swarm modu (Docker 1.12 ve daha sonraki sürümleri) Azure Container Service'te desteklenen bir düzenleyici değildir. Azure'da bir Swarm modu kümesi dağıtmak istiyorsanız, açık kaynaklı ACS Engine’i, topluluk tarafından desteklenen bir hızlı başlatma şablonunu veya Azure Marketi’ndeki bir Docker çözümünü kullanın.
Docker'ın yüklü olduğu bir Ubuntu (14.04 veya 16.04) makinesi de gerekir. Bu makine, Azure Pipelines işlemleri sırasında Azure DevOps Services tarafından kullanılır. Bu makineyi oluşturmanın bir yolu, Azure Market bulunan görüntüyü kullanmaktır.
1. Adım: Azure DevOps Services kuruluşunuzu yapılandırma
Bu bölümde, Azure DevOps Services kuruluşunuzu yapılandıracaksınız.
Azure DevOps Services Linux derleme aracısı yapılandırma
Docker görüntüleri oluşturmak ve bu görüntüleri bir Azure DevOps Services derlemesinden Azure kapsayıcı kayıt defterine göndermek için bir Linux aracısını kaydetmeniz gerekir. Şu yükleme seçenekleriniz vardır:
Docker Integration Azure DevOps Services uzantısını yükleme
Microsoft, Azure Pipelines işlemlerinde Docker ile çalışmak için Azure DevOps Services bir uzantı sağlar. Bu uzantı Azure DevOps Services Market'te kullanılabilir. Bu uzantıyı Azure DevOps Services kuruluşunuza eklemek için Yükle'ye tıklayın:
Kimlik bilgilerinizi kullanarak Azure DevOps Services kuruluşunuza bağlanmanız istenir.
Azure DevOps Services ve GitHub'a bağlanma
Azure DevOps Services projeniz ile GitHub hesabınız arasında bağlantı kurun.
Azure DevOps Services projenizde araç çubuğundaki Ayarlar simgesine tıklayın ve Hizmetler'i seçin.
Sol tarafta Yeni Hizmet Uç Noktası>GitHub'a tıklayın.
Azure DevOps Services GitHub hesabınızla çalışması için yetkilendirmek için Yetki ver'e tıklayın ve açılan pencerede yordamı izleyin.
Azure DevOps Services Azure kapsayıcı kayıt defterinize ve Azure Container Service kümenize bağlama
CI/CD işlem hattına girmeden önceki son adımlar, kapsayıcı kayıt defterinize ve Azure'daki Docker Swarm kümenize dış bağlantılar yapılandırmaktır.
Azure DevOps Services projenizin Hizmetler ayarlarına Docker Registry türünde bir hizmet uç noktası ekleyin.
Açılan pencerede, Azure kapsayıcı kayıt defterinizin URL'sini ve kimlik bilgilerini girin.
Docker Swarm kümesi için SSH türünde bir uç nokta ekleyin. Ardından Swarm kümenizin SSH bağlantı bilgilerini girin.
Tüm yapılandırma şimdi tamamlanır. Sonraki adımlarda, uygulamayı derleyen ve Docker Swarm kümesine dağıtan CI/CD işlem hattını oluşturursunuz.
2. Adım: Derleme işlem hattını oluşturma
Bu adımda, Azure DevOps Services projeniz için bir derleme işlem hattı ayarlar ve kapsayıcı görüntüleriniz için derleme iş akışını tanımlarsınız
İlk işlem hattı kurulumu
Derleme işlem hattı oluşturmak için Azure DevOps Services projenize bağlanın ve Derleme & Sürümü'ne tıklayın.
Derleme tanımları bölümünde + Yeni'ye tıklayın. Boş şablonu seçin.
Yeni derlemeyi bir GitHub depo kaynağıyla yapılandırın, Sürekli tümleştirme'yi işaretleyin ve Linux aracınızı kaydettiğiniz aracı kuyruğunuzu seçin. Derleme işlem hattını oluşturmak için Oluştur'a tıklayın.
Derleme Tanımları sayfasında önce Depo sekmesini açın ve derlemeyi önkoşullarda oluşturduğunuz MyShop projesinin çatalını kullanacak şekilde yapılandırın. Varsayılan dal olarak acs-docs'ı seçtiğinizden emin olun.
Tetikleyiciler sekmesinde, derlemeyi her işlemeden sonra tetiklenecek şekilde yapılandırın. Sürekli tümleştirme ve Toplu iş değişiklikleri'ne tıklayın.
Derleme iş akışını tanımlama
Sonraki adımlar derleme iş akışını tanımlar. MyShop uygulaması için derlemek üzere beş kapsayıcı görüntüsü vardır. Her görüntü, proje klasörlerinde bulunan Dockerfile kullanılarak oluşturulur:
- ProductsApi
- Ara sunucu
- RatingsApi
- RecommendationsApi
- ShopFront
Her görüntü için iki Docker adımı eklemeniz gerekir. Bunlardan biri görüntüyü oluşturmak ve diğeri görüntüyü Azure kapsayıcı kayıt defterine göndermek için kullanılır.
Derleme iş akışına bir adım eklemek için + Derleme adımı ekle'ye tıklayın ve Docker'ı seçin.
Her görüntü için komutunu kullanan
docker build
bir adım yapılandırın.Derleme işlemi için Azure kapsayıcı kayıt defterinizi, Görüntü oluştur eylemini ve her görüntüyü tanımlayan Dockerfile'ı seçin. Derleme bağlamını Dockerfile kök dizini olarak ayarlayın ve Görüntü Adı'nı tanımlayın.
Önceki ekranda gösterildiği gibi, görüntü adını Azure kapsayıcı kayıt defterinizin URI'si ile başlatın. (Bu örnekteki derleme tanımlayıcısı gibi görüntünün etiketini parametreleştirmek için bir derleme değişkeni de kullanabilirsiniz.)
Her görüntü için komutunu kullanan
docker push
ikinci bir adım yapılandırın.Gönderme işlemi için Azure kapsayıcı kayıt defterinizi, Görüntü gönder eylemini seçin ve önceki adımda oluşturulan Görüntü Adı'nı girin.
Beş görüntünün her biri için derleme ve gönderme adımlarını yapılandırdıktan sonra derleme iş akışına iki adım daha ekleyin.
a. docker-compose.yml dosyasındaki BuildNumber örneğini geçerli derleme kimliğiyle değiştirmek için bash betiği kullanan bir komut satırı görevi. Ayrıntılar için aşağıdaki ekrana bakın.
b. Güncelleştirilmiş Compose dosyasını yayında kullanılabilmesi için derleme yapıtı olarak bırakan görev. Ayrıntılar için aşağıdaki ekrana bakın.
Kaydet'e tıklayın ve derleme işlem hattınızı adlandırın.
3. Adım: Yayın işlem hattını oluşturma
Azure DevOps Services, ortamlar arasında yayınları yönetmenize olanak tanır. Uygulamanızın farklı ortamlarınıza (geliştirme, test, ön üretim ve üretim gibi) sorunsuz bir şekilde dağıtıldığından emin olmak için sürekli dağıtımı etkinleştirebilirsiniz. Azure Container Service Docker Swarm kümenizi temsil eden yeni bir ortam oluşturabilirsiniz.
İlk sürüm kurulumu
Yayın işlem hattı oluşturmak için Releases>+ Release seçeneğine tıklayın
Yapıt kaynağını yapılandırmak için Yapıtlar>Yapıt kaynağını bağla'ya tıklayın. Burada, bu yeni yayın işlem hattını önceki adımda tanımladığınız derlemeye bağlayın. Bunu yaptığınızda docker-compose.yml dosyası yayın işleminde kullanılabilir.
Yayın tetikleyicisini yapılandırmak için Tetikleyiciler'e tıklayın ve Sürekli Dağıtım'ı seçin. Tetikleyiciyi aynı yapıt kaynağında ayarlayın. Bu ayar, derleme başarıyla tamamlandığı anda yeni bir sürümün başlatılmasını sağlar.
Yayın iş akışını tanımlama
Yayın iş akışı, eklediğiniz iki görevden oluşur.
Önceden yapılandırdığınız SSH bağlantısını kullanarak oluşturma dosyasını Docker Swarm ana düğümündeki bir dağıtım klasörüne güvenli bir şekilde kopyalamak için bir görev yapılandırın. Ayrıntılar için aşağıdaki ekrana bakın.
Ana düğümde ve
docker-compose
komutlarını çalıştırmak için bash komutunu yürütmekdocker
için ikinci bir görev yapılandırın. Ayrıntılar için aşağıdaki ekrana bakın.Ana sunucuda yürütülen komut, aşağıdaki görevleri gerçekleştirmek için Docker CLI ve Docker-Compose CLI kullanır:
Azure kapsayıcı kayıt defterinde oturum açın ( Değişkenler sekmesinde tanımlanan üç derleme değişkeni kullanır)
Swarm uç noktasıyla çalışmak için DOCKER_HOST değişkenini tanımlama (:2375)
Önceki güvenli kopyalama görevi tarafından oluşturulan ve docker-compose.yml dosyasını içeren deploy klasörüne gidin
Yeni görüntüleri çeken, hizmetleri durduran, hizmetleri kaldıran ve kapsayıcıları oluşturan komutları yürütür
docker-compose
.Önemli
Önceki ekranda gösterildiği gibi STDERR'de başarısız olun onay kutusunu işaretsiz bırakın. Bu önemli bir ayardır çünkü
docker-compose
standart hata çıkışında kapsayıcılar durduruluyor veya siliniyor gibi birkaç tanılama iletisi yazdırıyor. Onay kutusunu işaretleyin Azure DevOps Services, her şey yolunda gitse bile yayın sırasında hataların oluştuğuna ilişkin raporlar.
Bu yeni yayın işlem hattını kaydedin.
Not
Eski hizmetleri durdurup yenisini çalıştırdığımız için bu dağıtım biraz kapalı kalma süresi içerir. Mavi-yeşil dağıtım yaparak bunu önlemek mümkündür.
4. Adım: CI/CD işlem hattını test edin
Yapılandırmayı tamamladığınıza göre, bu yeni CI/CD işlem hattını test etme zamanı geldi. Bunu test etmenin en kolay yolu, kaynak kodu güncelleştirmek ve değişiklikleri GitHub deponuza kaydetmektir. Kodu gönderdikten birkaç saniye sonra, Azure DevOps Services'de çalışan yeni bir derleme görürsünüz. Başarıyla tamamlandıktan sonra yeni bir sürüm tetiklenir ve uygulamanın yeni sürümünü Azure Container Service kümesine dağıtır.
Sonraki Adımlar
- Azure DevOps Services ile CI/CD hakkında daha fazla bilgi için Azure Pipelines Belgeleri makalesine bakın.