Rancher V2.3 Yükseltmesi [HowTo]

calendar_month 15 Ekim 2019

Geçen hafta yeni Rancher sürümü çıktı - buradan okunabilir. Bu Rancher V2.3 Yükseltme HowTo’sunda yaklaşımımı sunuyorum. Doğrudan bir kılavuz bulamadım, bu yüzden bu makale bloguma yolunu buldu.

Aha, V2.3 ne getiriyor?

Pek çok şey. Bu bir özellik sürümü - sadece düzeltmeler değil! Yeni özelliklerden bazıları oldukça heyecan verici görünüyor. İşte birkaç anahtar kelime: Windows GA (sadece Flannel ile), Enterprise Templating, ISTIO. Burada sürüm notlarının bağlantısı var.

Aksi takdirde Kubernetes sürümü 1.15.4’e (stable) güncellendi. Projeler altındaki menü değişti. Workloads görünümü artık “Resources” altında gizleniyor. Proje navigasyonunun sırası da önemli ölçüde değişti - ilgili menü öğesi artık ilk sırada. Ek olarak daha fazla menü öğesi var, aralarında ISTIO dahil.

Bu Rancher V2.3 Yükseltme HowTo’sunda yeni özelliklere bakmıyoruz. Burada yükseltme prosedürünü sunmak istiyorum.

Rancher V2.3 Yükseltmesi… Nerede? Nasıl?

Kubernetes kolayca Rancher ile Serisini takip edenler hangi ortamdan bahsettiğimi bilir. Diğer herkes için bu makale tavsiye edilir. Bu makalede ortamımı, bu makalede güncellenen ortamı anlatıyorum.

Güncellemeden önce Rancher 2.2.8 sürümündeydi ve cluster 1.14.x ile çalışıyordu.

Docker’ın düğümlerde güncellenmesi gerekiyorsa, bu yaklaşımı izleyebilirsiniz.

Rancher V2.3 Yükseltmesi: Master

Rancher’ın kendisini güncellemek zor değil ve bana 3 dakikadan az sürdü. Yükseltme sırasında - Docker imajı güncelleniyor - Rancher UI erişilebilir değil.

Devam etmek için önce bazı bilgileri toplamamız gerekiyor. Bunu docker ps ile kolayca elde edebiliriz:

aytac@master:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
<containerid> rancher/rancher:<image_tag> "entrypoint.sh --acm…" 6 weeks ago Up 5 weeks 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp <container_name>

<image_tag> ve <container_name> bilgileri önemli - benim için bunlar latest ve silly_sinoussi gibiydi.

Docker Container’ı durdurma

Gerekli bilgileri topladıktan sonra devam edebiliriz. Önce çalışan Rancher container’ını durdurmamız gerekiyor. Bunu docker stop komutu ile container adını vererek yapıyoruz:

docker stop <container_name>

Benim örneğimde şöyle görünüyor:

docker stop silly_sinoussi

Bu komut mevcut örneği durdurur. Ardından bir yedek oluşturabiliriz - bu adım isteğe bağlıdır ama tavsiye edilir, çünkü oluşturulan volume’u bir sonraki adımda kullanacağız.

Mevcut Ortamı Yedekleme

Bu adımda mevcut ortamımızın “volume“‘unu yedekliyoruz. Bir şeylerin ters gitmesi durumunda verileri geri yükleyebiliriz.

Önce bir volume oluşturuyoruz, ardından bunu “tarball” ve “gzip” ile sıkıştıracağız - ve hepsini Docker ile yapacağız:

docker create --volumes-from <container_name> --name rancher-data rancher/rancher:<image_tag>

Benim için bu komut şöyle görünüyordu:

docker create --volumes-from silly_sinoussi --name rancher-data rancher/rancher:latest

Bu komutla mevcut container ve imajına dayalı “rancher-data” adında yeni bir volume oluşturuyoruz. Create komutu tamamlandıktan sonra yedekleme dosyasını oluşturuyoruz:

docker run --volumes-from rancher-data -v $PWD:/backup busybox tar zcvf /backup/rancher-data-backup-<rancher-version>-<Tarih>.tar.gz /var/lib/rancher

Bugün bu komutu çalıştırsaydım - Rancher sürümünün 2.2.8 olduğu varsayımıyla - şöyle görünürdü:

docker run --volumes-from rancher-data -v $PWD:/backup busybox tar zcvf /backup/rancher-data-backup-228-20191015.tar.gz /var/lib/rancher

Bu komutla, komutun çalıştırıldığı path’te /var/lib/rancher içeriğini barındıran bir gzip paketi oluşturuyoruz.

Yeni İmajı Çekme ve Rancher’ı Başlatma

Yükseltme artık imajı güncelleyerek tamamlanıyor. docker pull komutuyla yeni imajı çekebiliriz:

docker pull rancher/rancher:<image_tag>

Özel bir imaj kullanmıyorum, benim durumumda komut şöyle görünüyor:

docker pull rancher/rancher:latest

Mevcut imajı çektikten sonra Rancher ortamımızı yeniden başlatabiliriz. Bunun için çeşitli yollar var. Sertifika yayıncısı olarak Let’s Encrypt kullanıyorum, bu yüzden şunu çalıştırıyorum:

docker run -d --volumes-from rancher-data \
 --restart=unless-stopped \
 -p 80:80 -p 443:443 \
 rancher/rancher:<image_tag> \
 --acme-domain <domain>

Benim durumumda komut şöyle görünüyor:

docker run -d --volumes-from rancher-data \
 --restart=unless-stopped \
 -p 80:80 -p 443:443 \
 rancher/rancher:latest \
 --acme-domain master.ak8s.de

Yeni (çekilen) imajla bir container başlatıyoruz ve “yedekleme” adımında oluşturduğumuz volume’u bağlıyoruz. Ek olarak --acme-domain parametresiyle Let’s Encrypt’ten otomatik sertifika talebi ve oluşturmayı sağlıyoruz.

Bu bir kısmı tamamlandı. Rancher kurulumumuz artık 2.3 sürümünü göstermeli (tarayıcının sol altında).

Rancher’ın elbette bunun için bir kılavuzu var ve yedekten geri yükleme ve birkaç konu daha (örneğin docker container’ını başlatma) hakkında bilgi içeriyor. Bu kılavuz bu bağlantıdan erişilebilir.

Rancher V2.3 Yükseltmesi: Cluster Düğümleri

Bu adım oldukça basit ve Rancher UI üzerinden gerçekleştirilebilir. Bunun için cluster’ımızın Düzenleme görünümüne gidiyoruz: Global → Cluster → 3 nokta → Düzenle.

Kubernetes Options altında Kubernetes sürümünü seçiyoruz. Bu durumda 1.15.4.

Değişiklikleri Kaydet butonuyla onaylıyoruz. Ardından worker düğümlerinin yükseltme süreci başlıyor. Durumu Cluster ayrıntı görünümünde izleyebiliriz.

Başarılı bir yükseltmeden sonra worker düğümleri Düğümler görünümünde yeni Kubernetes sürümünü göstermeli.

Sonuç

Yükseltme süreci yaklaşık yarım saat sürüyor. Bu yarım saatin değip değmeyeceği kişisel bir karar. Benim için - eski bir altyapıcı olarak - güncellemeleri yüklemediğimde kendimi rahatsız hissediyorum.

Güncellemeden sonra önemli bir değişiklik tespit edemedim. Hemen göze çarpan şey değişen navigasyon oldu. Enterprise Templates veya Windows Container desteği gibi yeni özellikleri şu an test edemiyorum. Belki basitleştirilmiş ISTIO devreye alma ile ilgilenirım, ama şu an OpenFaaS ile deneyler yaptığım için mikro-servis mesh’e ihtiyacım yok. Ve bir gün servis mesh ortamına ihtiyaç olursa, Rancher RIO’ya daha yakın dururdum.