(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:

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.

MyShop örnek uygulaması

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:

MyShop örnek uygulaması

Adımların kısa bir açıklaması aşağıdadır:

  1. Kod değişiklikleri kaynak kod deposuna işlenir (burada, GitHub)
  2. GitHub, Azure DevOps Services'de derleme tetikler
  3. 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
  4. Azure DevOps Services her görüntüyü Azure Container Registry hizmeti kullanılarak oluşturulan bir Docker kayıt defterine gönderir
  5. Azure DevOps Services yeni bir sürümü tetikler
  6. Yayın, Azure kapsayıcı hizmeti kümesi ana düğümünde SSH kullanarak bazı komutları çalıştırır
  7. Kümedeki Docker Swarm görüntülerin en son sürümünü çeker
  8. 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:

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:

Docker Tümleştirmesini Yükleme

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.

  1. Azure DevOps Services projenizde araç çubuğundaki Ayarlar simgesine tıklayın ve Hizmetler'i seçin.

    Azure DevOps Services - Dış Bağlantı

  2. Sol tarafta Yeni Hizmet Uç Noktası>GitHub'a tıklayın.

    Azure DevOps Services - GitHub

  3. 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 - GitHub'a yetki ver

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.

  1. Azure DevOps Services projenizin Hizmetler ayarlarına Docker Registry türünde bir hizmet uç noktası ekleyin.

  2. Açılan pencerede, Azure kapsayıcı kayıt defterinizin URL'sini ve kimlik bilgilerini girin.

    Azure DevOps Services - Docker Kayıt Defteri

  3. Docker Swarm kümesi için SSH türünde bir uç nokta ekleyin. Ardından Swarm kümenizin SSH bağlantı bilgilerini girin.

    Azure DevOps Services - SSH

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

  1. Derleme işlem hattı oluşturmak için Azure DevOps Services projenize bağlanın ve Derleme & Sürümü'ne tıklayın.

  2. Derleme tanımları bölümünde + Yeni'ye tıklayın. Boş şablonu seçin.

    Azure DevOps - Yeni Derleme İşlem Hattı

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

    Azure DevOps Services - Derleme İşlem Hattı Oluşturma

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

    Azure DevOps Services - Derleme Deposu Yapılandırması

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

    Azure DevOps Services - Derleme Tetikleyici yapılandırması

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.

  1. Derleme iş akışına bir adım eklemek için + Derleme adımı ekle'ye tıklayın ve Docker'ı seçin.

    Azure DevOps Services - Derleme Adımları Ekleme

  2. Her görüntü için komutunu kullanan docker build bir adım yapılandırın.

    Azure DevOps Services - Docker Derlemesi

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

  3. Her görüntü için komutunu kullanan docker push ikinci bir adım yapılandırın.

    Azure DevOps Services - Docker Push

    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.

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

    Azure DevOps Services - Oluşturma dosyasını güncelleştirme

    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.

    Azure DevOps Services - Oluşturma dosyasını yayımlama

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

Azure DevOps Services - ACS'ye yayın

İlk sürüm kurulumu

  1. Yayın işlem hattı oluşturmak için Releases>+ Release seçeneğine tıklayın

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

    Azure DevOps Services - Yayın Yapıtları

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

    Azure DevOps Services - Yayın Tetikleyicileri

Yayın iş akışını tanımlama

Yayın iş akışı, eklediğiniz iki görevden oluşur.

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

    Azure DevOps Services - Sürüm SCP

  2. Ana düğümde ve docker-compose komutlarını çalıştırmak için bash komutunu yürütmek docker için ikinci bir görev yapılandırın. Ayrıntılar için aşağıdaki ekrana bakın.

    Azure DevOps Services - Bash'i Yayınlama

    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.

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