Kukla'ı Docker ile birlikte kullanmak için herhangi bir neden var mı?


16

Bir süre önce DevOps'un Ops bölümünü denedim ve oldukça eğlenceliydi, ancak herhangi bir projede denemek için zamanım ve nedenim yok. Ancak geçen hafta yeni işe başladım, burada patron bana sunucuyu şirket projeleri için hazırlama ortamı gibi bir şey yapıp yapamayacağımı sordu. Bununla birlikte, projeyi sadece dev değil, daha fazla DevOps olarak geçirmeyi düşünmeye başladım.

Benim için harika ve süper kolay olan Docker ile çıktım. Ama bir süre önce Kukla'ı deniyordum, aklıma soru geldi: "Kukla'ı Docker ile kullanmak için bir sebep var mı?". Docker, Kukla'nın yapacağı her şeyi yapıyor gibi görünüyor, ama daha kolay bir şekilde.

PS Bir süre önce Hacker News'te hoş bir yapılandırma ve hizmet keşfi olan Consul vardı, bu yüzden yapılandırma bile çözülebilir (ve bunu da uygulamayı düşünüyorum).

Yanıtlar:


18

Kukla ve liman işçisi aynı şeylerin çoğunu yapabilir, ancak onlara farklı bir şekilde yaklaşırlar.

Kukla dosyaları + paketleri + hizmetleri yönetir. (Trifekta denir). Docker, bir kabın içindeki ikili dosyaları ve yapılandırma dosyalarını içine alır.

Bu yazı yazıldığı sırada liman işçisi hala kararsızdır ve üretimde kullanılmamalıdır. API'ların birçoğunun sürüm 1.0 yayınlanana kadar değiştirilmesi muhtemeldir.

Docker sabit hale geldiğinde bile, her işlemi ve yapılandırma dosyasını docker kaplarına dönüştürmek büyük bir girişim olacaktır.

Öte yandan kukla istikrarlı bir üründür ve tüm bir araç ekosistemi (heira, mcollective, facter, jilet) ile birlikte gelir. Bu araçlar hızlı bir şekilde ve hiçbir şey kırılmadan endişe duymadan uygulanabilir.

Aşağıdaki kaynakları şiddetle tavsiye ediyorum.

Uygulama yığınlarını kukla ile yönetme videosu
https://www.youtube.com/watch?v=KSo_mcJxFIA

Liman işçisinin ve kuklanın birlikte nasıl çalışabileceği hakkında bir podcast
http://devopscafe.org/show/2014/1/23/devops-cafe-episode-46.html

Docker ile nasıl entegre edileceğine dair bir kukla blog makalesi
http://puppetlabs.com/blog/building-puppet-based-applications-inside-docker

Kukla ve docker ile bir arada var olan başka bir blog makalesi
http://puppetlabs.com/blog/can-containers-and-configuration-management-co-exist

Docker ile etkileşim için bir kukla modülü
http://docs.docker.io/use/puppet/

Adanmışlar terminolojisinde küçük bir düzeltme. Devops, geliştiricilerin ve operasyonların işbirliği yaptığı herhangi bir araçtan daha çok bir yazılım geliştirme yöntemidir.

Güncelleme

Şu anda şirketim hem kukla hem de docker kullanıyor. İşte kukla conf 2014'te kukla vs docker'ı neden kullanacağınıza dair harika bir sunum. Kuklaların eski bir işvereni ve liman işçisi kitabının yazarı James Turnbull tarafından verildi.

https://puppetlabs.com/presentations/using-docker-puppet-james-turnbull-kickstarter

Ayrıca sysadmincasts.com tarafından verilen docker üzerinde iyi bir kısa video eğitimi

https://sysadmincasts.com/episodes/31-introduction-to-docker

Docker Artıları:

  • Örneği hızlı bir şekilde döndürebilir
  • Öğrenmek kukladan daha kolay
  • Yapılması kolay 0 kesinti

Docker Eksileri:

  • Cihaz haritası arka ucunu kullanırken kapların 10 GB sınırı vardır
  • Küçük yapılandırma değişikliklerinin kapsayıcıyı yeniden oluşturması uzun zaman alıyor
  • Hub.docker.com, quay.io gibi bir docker kayıt defteri kullanmak için para maliyeti (Kendinden barındırılan docker kayıt defteri son derece buggy ve gui yok)
  • Uygun başlangıç ​​sistemi yok. Bazı uygulamalar iyi oynamıyor.
  • Ağ üzerinde ince taneli kontrol yok
  • Alt kabuk gerektiren uygulamalar (RVM + ruby'ye bakmak) düzgün çalışabilmek için çok zor
  • Windows ana bilgisayarlarını yönetemez, SLES veya daha az popüler olan diğer işletim sistemlerini yönetemez
  • Şu anda liman işçisi düzenlemesi çok genç.
  • Şu anda /etc/resolv.conf dosyanızı derleme zamanında ayarlayamıyorsunuz
  • Ana bilgisayarların localtime ve urandom dizinlerine eşlemek için / etc / localtime ve / dev / urandom'u monte etmemiz gereken çeşitli hatalar.
  • Performans o kadar hızlı değil (liman işçisinin çıplak metal hızının% 99 olması gerektiği iddialarına rağmen, bazen diğer makinelere göre% 30 daha yavaş).
  • Küçük kaplar hala yüzlerce megabayt ek yüke sahiptir. Kaplarımızın hepsi birden fazla gigabayttır.

Kukla Artıları:

  • Ölçeklendirmesi kolay
  • Mevcut sunucularla çalışır (Windows, Linux, Sles)
  • Küçük değişiklikler yapmak için hızlı
  • Diğer kukla kullanıcıları ve modüllerinden oluşan güçlü topluluk
  • Tüm platformlara paket yüklemek için standartlaştırılmış API

Kukla Eksileri:

  • Büyük altyapılar çok karmaşık hale geliyor
  • Koşullu modül bağımlılıkları spagetti kodu oluşturur
  • Daha ağır

Şu anda docker konteynerlerimizi tedarik etmek için kukla kullanıyoruz. Liman işçisi konteynerleri jenkin yapıları için kullanılır ve her yapıdan sonra imha edilir. İyi çalışıyor ve bize tutarlı bir ortam sağlıyor. Bu, kodu yalnızca bir kez yazmamız ve ardından ubuntu, sles ve centos makinelerini yeniden oluşturmamız gerektiği anlamına gelir. Konteynerlerin yeniden inşası yaklaşık 15 ila 30 dakika sürer ve hala manuel bir işlemdir. Docker hızlı test vm'leri döndürmek için mükemmeldir,

Kısacası, kukla mevcut altyapınızı yönetmede harika. Küçük geçici durumlarda çevrilebilen bir teknoloji yığınına sahip% 100 linux olan bir yeşil alanınız varsa Docker iyidir. Bazı işlevler çakışıyor olsa da, birbirlerini dışlamazlar.


5
Bu cevabı öznel ve spekülatif buldum. Docker, aynı amaç için daha basit bir araç olarak yüksek bir seviyede göründüğünde, neden Kukla'ı Docker ile birlikte / birlikte kullanmaya devam edebileceğine gerçekten cevap verdiğine inanmıyorum.
8bitjunkie

1
@ 7SpecialGems Daha fazla gerçekle güncellendi.
spuder

1
2015'teki bu cevabın ve işlerin nasıl değiştiğini incelemek harika olurdu
Oliver Bayes-Shelton

Soru / cevap 2019'da hala göreceli mi? Ne değişebilirdi?
Md. Abu Taher

2

Docker, kapsayıcıları sağlamanıza ve başlangıçta yapılandırmanıza yardımcı olur, ancak kapsayıcı başlatıldığında bir kerelik komutlar çalıştırır.

Kukla, bir arka plan programı olarak çalıştırdığınızda en güçlü olanıdır, yapılandırmanızın belirttiğiniz şekilde kalmasını sağlar , bu nedenle örneğin hizmet çalışmayı durdurursa, yeniden başlayacaktır.

Kukla yapılandırma tezahürleri hakkında (doğru tasarlanmış) en iyi şeylerden biri onların idempotent olmasıdır ; oraya gitmek için gereken adımları değil, olmak istediğiniz durumu tarif etmesi gerekiyor.

Ayrıca yapılandırmaları özetlemenize ve parametreleştirmenize izin verir ve bir sunucuda veya kapsayıcıda oluşturulan parametreleri dışa aktarabilir ve bunları başka bir sunucuda kullanabilirsiniz (örneğin, bir izleme uygulaması için düğüm ana bilgisayar adlarının bir listesini toplama).

Onlar kesinlikle farklı ama ilgili amaçlara hizmet söyleyebilirim. Şu anda, geliştirme ortamlarının üretim ortamlarına daha fazla benzemesi için kapları yapılandırmaya başlamak için mevcut kukla manifestlerini kullanmaya bakıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.