Başlangıç > VMware > 232: VCH ve docker entegrasyonu

232: VCH ve docker entegrasyonu

En son VIC-Engine yapısından ve temel bileşeni olan Virtual Container Host’dan (VCH) bahsetmiştik. Tekrar etmek gerekirse VCH, vSphere platformu üzerinde konteynerlerin yaşam döngülerini yönetmeyi amaçlayan araçları ve sistem kaynaklarını (CPU ve bellek gibi) barındıran mantıksal bir yapıdır. Aynı zamanda, kullanıcılara Docker API erişimi sağlar ve Docker Hub üzerinden imajların yönetimine izin verir (VCH detayları için lütfen tıklayın).

Bir vSphere kümesi üzerinde, örnek olarak aşağıdaki komut dizilimi ile bir VCH oluşturabiliriz. Bu komut sonrasında ilgili kaynak havuzu içerisinde bir vApp oluşacak ve bu vApp içerisinde bir adet appliance VM konumlandırılacak (VCH endpoint VM).


./vic-machine-linux create \
--name=democvh01 \
--target=demovc.demo.local/DEMO.Datacenter \
--thumbprint="E6:C9:E2:6E:90:9D:DB:5B:48:AA:F6:F6:0E:5D:16:16:4E:52:32:D7" \
--user=orcunuso \
--ops-user=svcvic \
--ops-password=Password! \
--compute-resource=DEMO.Cluster/DEMO.Vic \
--image-store=VMFS01/VCH/demovch \
--volume-store=VMFS01/VCH/demovch:default \
--bridge-network=DPG.Vlan200 \
--public-network=DPG.Vlan100 \
--client-network=DPG.Vlan100 \
--management-network=DPG.Vlan100 \
--dns-server=10.1.94.10 \
--public-network-ip=10.1.93.24 \
--public-network-gateway=10.1.93.1/24 \
--bridge-network-range=172.16.0.0/12 \
--appliance-cpu=2 \
--appliance-memory=4096 \
--registry-ca=/root/vic/ca.crt \
--tls-cname=demovch01.demo.local \
--certificate-key-size=2048 \
--organization=DEMO \
--no-tlsverify

Kullandığım parametreleri detaylandırmak gerekirse;

Satır 2: Kurulacak VCH ismi
Satır 3: Hedef vCenter ve datacenter bilgisi
Satır 4: Hedef vCenter SSL sertifika parmak izi
Satır 5: Kurulumu yapacak kullanıcının ismi. Şifreyi kurulum esnasında soracaktır ancak eğer istersek –password parametresi ile de belirtebiliriz.
Satır 6-7: vSphere üzerinde VCH operasyonlarını yapacak kullanıcı adı ve şifresi
Satır 8: Hedef küme ve resource pool bilgisi
Satır 9: Konteyner imaj ve VM dosyalarının saklanacağı alan
Satır 10: Persistent volume oluşturulacaksa, bunların saklanacağı alan
Satır 11: Bridge network olarak kullanılacak portgroup bilgisi. Bridge network, konteyner VM’lerin kendi aralarında ve VCH VM ile konuşabilecekleri özel bir L2 network olmalıdır.
Satır 12: Public network olarak kullanılacak portgroup bilgisi. Public network, konteyner VM’lerin dış dünya ile iletişim kurdukları network. Eğer port mapping kullanılıyorsa, ilgili portun expose edildiği arayüzdür.
Satır 13: Client network olarak kullanılacak portgroup bilgisi. Client network, Docker istemcilerinin API komutlarını yönlendirdikleri networkdür.
Satır 14: Management network olarak kullanılacak portgroup bilgisi. Management network, VCH’ın vCenter ve ESXi sunucular ile konuştuğu networkdür.
Satır 15-17: VCH endpoint VM için yaptığımız network konfigürasyonu. DHCP kullanıyorsak gerek duymayabiliriz.
Satır 18: Bridge network için tercih ettiğimiz IP subnet’i.
Satır 19-20: VCH endpoint VM için tanımlayabileceğimiz kaynak değerleri.
Satır 21: İçeride kullandığımız registry sunucusunun SSL sertifikası.
Satır 22: VCH için oluşturulacak sertifikanın cname bilgisi
Satır 23: VCH için oluşturulacak sertifikanın anahtar boyutu
Satır 24: VCH için oluşturulacak sertifikanın organizasyon bilgisi
Satır 25: İstemci erişimleri için TLS doğrulamasının zorunlu tutulmaması.

vCenter ortamımızda bulunan VCH’ları listelemek veya silmek istersek de, aşağıdaki komut dizilimlerini kullanabiliriz.


./vic-machine-linux ls \
--target=demovc.demo.local \
--thumbprint="E6:C9:E2:6E:90:9D:DB:5B:48:AA:F6:F6:0E:5D:16:16:4E:52:32:D7" \
--user=orcunuso

./vic-machine-linux delete \
--target=demovc.demo.local/DEMO.Datacenter \
--thumbprint="E6:C9:E2:6E:90:9D:DB:5B:48:AA:F6:F6:0E:5D:16:16:4E:52:32:D7" \
--name=demovch \
--compute-resource=DEMO.Cluster/DEMO.Vic \
--user=orcunuso \
--force

Temel olarak VCH ile neler yapabileceğimizi gördük, şimdi ise docker API endpoint olarak neler yapabileceğimize bakalım. Aslında temelde kullandığımız docker remote API komutlarından farklı bir komut kullanmayacağız. Aşağıdaki örnekteki gibi, çalıştıracağımız komutlara aynı cevapları verecektir. TLS üzerinden erişim sağladığımızdan dolayı 2376 portunu kullanıyoruz. Eğer –no-tls parametresi ile oluşturmuş olsaydık, 2375 portunu kullanmamız gerekecekti.

docker -H demovch01.demo.local:2376 –tls info

virtualcontainerhost1

Burada dikkat çeken nokta, toplam bellek ve CPU kapasitesinin kümenin toplamına eşit olması. Eğer VCH bazında kısıtlamak istersek (ki multi-tenant bir yapıda anlamlı olabilir), vApp seviyesinde limit tanımlamamız, bu maksimum değerlerin değişmesini tetikleyecektir.

Şimdi de bir adet konteyner çalıştıralım. Bu arada her komut için -H parametresini kullanmak istemeyebiliriz, bunun için ortam değişkeni tanımlamak işimizi kolaylaştıracaktır.

export DOCKER_HOST=demovch01.demo.local:2376
docker –tls run –name Nginx_Konteyner -d -p 8080:80 \
demoharbor.demo.local/library/vmnginx:1.0

virtualcontainerhost2

Bu örnekte, nginx imajını daha önceden 1.0 etiketi ile göndermiş olduğum harbor registry sunucusundan çağırdım. Arka planda gerçekleştirilen ise, vApp içerisinde, PhotonOS temelli bir işletim sisteminin, vic dosyaları içerisinde daha önceden gördüğümüz bootstrap.iso isimli liveCD imajı ile açılması ve üzerinde nginx imajının ayağa kaldırılması oldu. Network erişimi, bridge network olarak tanımladığımız portgroup üzerinden port mapping şeklinde gerçekleşti, yani VCH endpoint VM’e 8080 portundan gelen trafiğin 172’li network üzerinden bu konteyner sunucusunun 80 portuna yönlendirilmesi şeklinde. İçeriden dışarıya olan erişim ise, yine VCH sunucusunun public arayüzü üzerinden SNAT (Source NAT) yapılarak gerçekleşecek. vCenter üzerindeki görüntüsü ise aşağıdaki gibi olacaktır.

virtualcontainerhost3

Son olarak, oluşturduğumuz VCH, bize web tabanlı bir arayüz de sunmaktadır. VCH sunucusuna bir tarayıcı üzerinden 2378 portu ile erişip temel sağlık bilgilerine ve loglara ulaşabiliriz.

Günün sonunda VIC ile, standard bir docker host üzerinde gerçekleştirilebilecek hemen hemen tüm işlemlerin, çok benzer mantıklar ile vSphere katmanına uyarlanmış olduğunu görebiliyoruz.

Kategoriler:VMware Etiketler:,
  1. Henüz yorum yapılmamış.
  1. No trackbacks yet.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: