Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Create a GKE cluster
/ 20
Create Docker container with Cloud Build
/ 20
Deploy container to GKE
/ 10
Expose GKE Deployment
/ 20
Scale GKE deployment
/ 10
Make changes to the website
/ 10
Update website with zero downtime
/ 10
Web sitesi veya uygulama işletmek zor bir iştir. En olmayacak zamanlarda sorunlar yaşanır, sunucular çöker veya talep artışları daha fazla kaynak kullanılmasına yol açar. Üstelik, sisteme kapalı kalma süresi tanımadan değişiklik yapmak karmaşık ve streslidir. Kubernetes ile tüm bunları yapabilir, hatta otomatik hâle getirebilirsiniz.
Bu laboratuvarda, e-ticaret web sitesi işleten Fancy Store adlı kurgusal şirkette çalışan bir geliştirici rolünü oynayacaksınız. Şirketin karşılaştığı ölçeklendirme sorunları ve kesintiler nedeniyle uygulamanızı Google Kubernetes Engine'e (GKE) dağıtmanız istendi.
Bu laboratuvardaki alıştırmalar, bulut geliştiricilerinin sıkça takip ettiği adımlara uygun şekilde sıralanmıştır:
Buradaki talimatları okuyun. Laboratuvarlar süreli olduğundan duraklatılamaz. Start Lab'i (Laboratuvarı başlat) tıkladığınızda başlayan zamanlayıcı, Google Cloud kaynaklarının ne süreyle kullanımınıza açık durumda kalacağını gösterir.
Bu uygulamalı laboratuvarı kullanarak, laboratuvar etkinliklerini simülasyon veya demo ortamı yerine gerçek bir bulut ortamında gerçekleştirebilirsiniz. Bunu yapabilmeniz için size yeni, geçici kimlik bilgileri verilir. Bu kimlik bilgilerini laboratuvar süresince Google Cloud'da oturum açmak ve Google Cloud'a erişmek için kullanabilirsiniz.
Bu laboratuvarı tamamlamak için gerekenler:
Laboratuvarı Başlat düğmesini tıklayın. Laboratuvar için ödeme yapmanız gerekiyorsa ödeme yöntemini seçebileceğiniz bir iletişim kutusu açılır. Soldaki "Laboratuvar ayrıntıları" panelinde şunlar yer alır:
Google Cloud Console'u aç'ı tıklayın (veya Chrome Tarayıcı'yı kullanıyorsanız sağ tıklayıp Bağlantıyı gizli pencerede aç'ı seçin).
Laboratuvar, kaynakları çalıştırır ve sonra "Oturum aç" sayfasını gösteren başka bir sekme açar.
İpucu: Sekmeleri ayrı pencerelerde, yan yana açın.
Gerekirse aşağıdaki kullanıcı adını kopyalayıp Oturum açın iletişim kutusuna yapıştırın.
Kullanıcı adını "Laboratuvar ayrıntıları" panelinde de bulabilirsiniz.
İleri'yi tıklayın.
Aşağıdaki şifreyi kopyalayıp Hoş geldiniz iletişim kutusuna yapıştırın.
Şifreyi "Laboratuvar ayrıntıları" panelinde de bulabilirsiniz.
İleri'yi tıklayın.
Sonraki sayfalarda ilgili düğmeleri tıklayarak ilerleyin:
Birkaç saniye sonra Google Cloud konsolu bu sekmede açılır.
Cloud Shell, çok sayıda geliştirme aracı içeren bir sanal makinedir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Cloud Shell, Google Cloud kaynaklarınıza komut satırı erişimi sağlar.
Google Cloud konsolunun üst kısmından Activate Cloud Shell (Cloud Shell'i etkinleştir) simgesini tıklayın.
Aşağıdaki pencereleri tıklayın:
Bağlandığınızda kimliğiniz zaten doğrulanmıştır. Proje ise Project_ID'nize (
gcloud, Google Cloud'un komut satırı aracıdır. Cloud Shell'e önceden yüklenmiştir ve sekmeyle tamamlamayı destekler.
Çıkış:
Çıkış:
gcloud ile ilgili tüm belgeleri, Google Cloud'daki gcloud CLI'a genel bakış rehberinde bulabilirsiniz.
Bölgeler ve Alt Bölgeler belgelerinden daha fazla bilgi edinebilirsiniz.
Web sitenizi dağıtacağınız bir Kubernetes kümesine ihtiyacınız var. Öncelikle, uygun API'lerin etkinleştirildiğinden emin olun.
fancy-cluster adlı ve 3 düğümlü bir GKE kümesi oluşturmak için şu komutu çalıştırın:Kümenin oluşturulması birkaç dakika sürer.
Çıkış:
Konsolda Kubernetes kümenizi ve ilgili bilgileri bulun.
Gezinme menüsü () > Kubernetes Engine > Kümeler'i tıklayın.
Burada fancy-cluster adlı kümenizi göreceksiniz.
Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın.
Var olan bir web sitesiyle çalıştığınız için kaynağı klonlamanız yeterlidir. Böylece, Docker görüntüsü oluşturup GKE'ye dağıtım yapmaya odaklanabilirsiniz.
Uygun dizine geçin.
Dağıtım öncesinde uygulamanızı test edebilmeniz için NodeJS bağımlılıklarını yüklemeniz gerekir:
Bu komut dosyasının çalışması tamamlanana dek birkaç dakika bekleyin.
npm'nin güncel sürümüyle çalıştırdığınızdan emin olun:Çıkış:
Bu işlemi yaptığınızda, Fancy Store'u iş başında görebileceğiniz yeni bir pencere açılır!
Bu sekmeyi, laboratuvarın ilerleyen bölümlerinde tekrar ziyaret etmek üzere açık bırakın.
Kaynak dosyalarınız artık hazır olduğuna göre sıra, uygulamanızı Docker'a uygun hale getirmeye geldi.
Normalde bu süreç iki adımda tamamlanır: Bir Docker container'ı derlenir ve bu container bir kayıt defterine aktarılarak görüntü, GKE'nin çekmesi için depolanır. Cloud Build ile Docker container'ı oluşturup görüntüyü tek bir komutla Artifact Registry'ye yerleştirebilirsiniz.
Google Cloud Build, dizindeki dosyaları sıkıştırarak bir Google Cloud Storage paketine taşır. Ardından, derleme işlemi sırasında paketteki tüm dosyalar alınır ve Dockerfile kullanılarak Docker derleme işlemi çalıştırılır. Docker görüntüsü için ana makineyi gcr.io olarak ayarlayıp --tag işaretini belirttiğinizden elde edilen Docker görüntüsü Artifact Registry'ye aktarılır.
Terminalde şuna benzer bir çıktı alınır:
Derleme geçmişinizi görüntülemek veya işlemi anlık olarak izlemek için Gezinme menüsünü tıklayıp CI/CD bölümüne gidin ve Cloud Build > Geçmiş'i tıklayın. Burada önceki tüm derlemelerinizin listesini görebilirsiniz.
Bir derlemeyle ilgili olarak günlük çıkışı dahil tüm ayrıntıları görmek için derlemenin adını tıklayın.
İsteğe bağlı: Derleme ayrıntıları sayfasından, derleme bilgileri bölümündeki Derleme özeti > Yürütme ayrıntıları > Görüntü adı'na giderek container görüntüsünü inceleyebilirsiniz:
Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın.
Web sitenizi container mimarisine aldığınıza ve container'ınızı Artifact Registry'ye aktardığınıza göre sıra Kubernetes'e dağıtmaya geldi.
Uygulamaları bir GKE kümesinde dağıtıp yönetmek için Kubernetes küme yönetimi sistemiyle iletişim kurmanız gerekir. Bunun için genellikle kubectl komut satırı aracı kullanılır.
Kubernetes'te uygulamalar, bir container'ı (veya birbirlerine sıkı sıkıya bağlı bir grup container'ı) temsil eden birimler olan Kapsüller şeklinde temsil edilir. Kapsül, Kubernetes'teki en küçük dağıtılabilir birimdir. Bu laboratuvardaki her kapsülde yalnızca monolit container'ınız yer almaktadır.
Uygulamanızı dağıtmak için bir Dağıtım kaynağı oluşturun. Dağıtım, uygulamanızın replika adı verilen birden fazla kopyasını yönetir ve bu kopyaların her birinin kümenizdeki ayrı birer düğümde çalıştırılmasını planlar. Bu laboratuvarda Dağıtım, uygulamanızın yalnızca bir kapsülünü çalıştırılacaktır. Dağıtımlar bunun için bir ReplicaSet oluşturur. ReplicaSet, belirtilen sayıda replikanın her zaman çalışmasını sağlamaktan sorumludur.
Sonraki adımda kullanacağınız kubectl create deployment komutuyla Kubernetes, kümenizde monolith adlı ve 1 replikalı bir Dağıtım oluşturur.
Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın.
Kapsül durumu Çalışıyor olana dek komutu yeniden çalıştırın.
Çıkış:
Bu çıkışta çeşitli bilgiler sunulmaktadır:
Bu durumda, tüm öğeler başarıyla oluşturulmuş demektir.
kubectl describe pod monolith
kubectl describe pod/monolith-7d8bc7bf68-2bxts
kubectl describe deployment monolith
kubectl describe deployment.apps/monolith
Çıkışın sonunda, hata oluşturan etkinliklerin listesi ve kaynaklarınız hakkında ayrıntılı bilgiler gösterilir.İsteğe bağlı: Komutları dağıtımlarınız için ayrı ayrı da çalıştırabilirsiniz:
Kubernetes'in tüm avantajlarını görmek için bir kapsülü silerek sunucu kilitlenmesi simülasyonu yapın ve neler olacağını öğrenin.
Silme işlemini İş Yükleri sayfasından izleyebilirsiniz.
İş yükü adını tıklayın (hızla gerçekleşir).
Yeterince hızlı hareket ederseniz get all komutunu yeniden çalıştırarak biri sonlandırılan ve diğeri oluşturulan veya çalıştırılan iki kapsül görebilirsiniz:
Çıkış:
Bu neden oldu? ReplicaSet, kapsülün sonlandırıldığını gördü ve istenen replika sayısını korumak için yeni bir kapsül oluşumunu tetikledi. Sonraki bölümlerde, birden fazla örneği çalıştırmak için nasıl ölçeklendirileceğini göreceksiniz. Bu durumda örneklerden birinin çökmesi, kullanıcılara sitenin veya uygulamanın kapalı kaldığı süre olarak yansımaz.
Uygulamanızı GKE'de dağıttınız ancak uygulamaya küme dışından erişilemiyor. Varsayılan olarak, GKE'de çalıştırılan container'ların harici bir IP adresi bulunmadığından bu container'lara internet üzerinden erişilemez. İnternet trafiği alabilmesi için uygulamanızı bir Hizmet kaynağı üzerinden açıkça kullanıma sunmanız gerekir. Hizmetler, uygulamanızın kapsüllerine ağ ve IP desteği sağlar. GKE, uygulamanız için harici bir IP adresi ve bir Yük Dengeleyici oluşturur.
GKE, harici IP adresini Dağıtım'a değil Hizmet kaynağına atar.
kubectl get service komutunu kullanabilirsiniz:Çıkış:
Hizmetiniz için harici bir IP adresi görene dek komutu yeniden çalıştırın.
Daha önce test ettiğiniz web sitesini göreceksiniz. Web siteniz artık Kubernetes'te tam olarak çalışıyor.
Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın.
Artık uygulamanız GKE'de çalışıp internet üzerinden kullanıma açık olduğuna göre web sitenizin çok popülerleştiğini hayal edin. Uygulamanızın tüm bu trafikle başa çıkabilmesi için uygulama ölçeğini birden fazla örneğin kullanılacağı şekilde artıracak bir yöntem gereklidir. Sonraki adımda, uygulamanın ölçeğini 3 replikaya kadar nasıl artırabileceğinizi öğreneceksiniz.
Çıkış:
Artık kapsülünüzün çalıştırıldığı 3 örnek göreceksiniz. Dağıtım ve replika kümesi sayısının da artık istendiği gibi 3 olduğunu fark edeceksiniz.
Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın.
Senaryo: Pazarlama ekibiniz sizden sitenizin ana sayfasını değiştirmenizi istedi. Bu sayfanın şirketiniz ve ne tür ürünler sattığınız hakkında daha fazla bilgi vermesi gerektiğini düşünüyorlar.
Görev: Pazarlama ekibini memnun etmek için ana sayfaya bazı metinler ekleyeceksiniz. Geliştiricilerden biri istenen değişiklikleri index.js.new adlı bir dosyada zaten oluşturmuş gibi görünüyor. Bu dosyayı index.js dosyasına kopyalarsanız değişiklikler sayfaya yansıtılacaktır. Uygun değişiklikleri yapmak için aşağıdaki talimatları uygulayın.
Bu işlem sonucunda elde edilen kod aşağıdaki gibi görünecektir:
React bileşenleri güncellendi ancak statik dosyaların oluşturulması için React uygulamasının derlenmesi gerekiyor.
Artık kod güncellendiğine göre Docker container'ını yeniden derleyip Artifact Registry'de yayınlamanın sırası geldi. Önceki komutu tekrar kullanın ancak bu kez sürüm etiketini güncelleyin.
Sonraki bölümde, kapalı kalma süresi olmadan uygulamanızı güncellemek için bu görüntüyü kullanacaksınız.
Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın.
Değişiklikler tamamlandı ve pazarlama ekibi yaptığınız güncellemelerden memnun kaldı. Şimdi sıra, kullanıcıların işlerini kesintiye uğratmadan web sitesini güncellemeye geldi.
GKE'nin periyodik güncelleme mekanizması, eski container görüntünüzün örnekleri çalışan tüm replikalarda sistem tarafından yeni container görüntünüzle değiştirilirken bile uygulamanızın çalışır ve kullanılabilir durumda kalmasını sağlar.
Çıkış:
Burada 3 yeni kapsül oluşturulduğunu ve eski kapsüllerinizin sonlandırıldığını göreceksiniz. Yaşlarına bakarak yeni ve eski kapsülleri ayırt edebilirsiniz. En sonunda, yine yalnızca 3 kapsül gösterilir. Bunlar, güncellenmiş 3 kapsülünüzdür.
Az önce ana sayfa bileşenine eklemiş olduğunuz metin artık web sitenizde gösterilir.
CTRL+C tuşlarına basın.Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın.
Bu laboratuvarı tamamladığınızda tüm kaynaklar silinir. Yine de, artık ihtiyaç duymadığınız kaynakları kendi ortamınızdan kaldırmanız önerilir.
Y yazarak işlemi onaylayın. Bu komutun çalıştırılması biraz zaman alabilir.Web sitenizi GKE'de başarıyla dağıttınız, ölçeklendirdiniz ve güncellediniz. Artık Docker ve Kubernetes konularında deneyimli bir kullanıcısınız!
Kılavuzun Son Güncellenme Tarihi: 26 Nisan 2024
Laboratuvarın Son Test Edilme Tarihi: 21 Şubat 2024
Telif Hakkı 2026 Google LLC. Tüm hakları saklıdır. Google ve Google logosu, Google LLC şirketinin ticari markalarıdır. Diğer tüm şirket ve ürün adları ilişkili oldukları şirketlerin ticari markaları olabilir.
This content is not currently available
We will notify you via email when it becomes available
Great!
We will contact you via email if it becomes available
One lab at a time
Confirm to end all existing labs and start this one