1. Genel Bakış
Mevcut uygulamaları Kubernetes'te çalışacak şekilde yeniden yazmak veya geliştirmek, her zaman manuel olarak mümkün ya da mümkün değildir. Migrate for Anthos, mevcut uygulamalarınızı modernleştirip Kubernetes'te çalıştırmalarını sağlamanıza yardımcı olabilir. Bu codelab'de, Compute Engine'de barındırılan mevcut bir web uygulamasını Migrate for Anthos'u kullanarak Kubernetes Engine'e taşıyacaksınız.
Neler öğreneceksiniz?
- Kubernetes kümesinde Migrate for Anthos'u dağıtma
- Mevcut bir Compute Engine örneğinden durum bilgili kümede container oluşturma
- Container'ınızı Kubernetes'e dağıtma ve yük dengeleyici ile yapılandırma
Gerekenler
- Faturalandırma ayarları yapılmış bir Google Cloud projesi. Hesabınız yoksa bir hesap oluşturmanız gerekir.
2. Kurulum
Bu codelab, herhangi bir yerel yükleme veya yapılandırma gerekmeden tamamen Google Cloud Platform'da çalışabilir.
API'leri etkinleştirin
Başlamadan önce Google Cloud projenizde gerekli API'leri etkinleştirdiğinizden emin olun:
Compute Örnek Web Sunucusu oluşturma
İlk nginx web sunucumuzu barındırmak için kullanacağımız işlem örneğini, web sunucusunun varsayılan açılış sayfasını görüntülememize izin verecek güvenlik duvarı kurallarıyla birlikte oluşturalım. Bunu yapabileceğimiz birkaç yöntem var ancak kullanım kolaylığı için Cloud Shell'i kullanacağız.
Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud compute instances create webserver --zone=us-central1-a && \ gcloud compute firewall-rules create default-allow-http --allow=tcp:80
Bu komutun ilk yarısında us-central1-a alt bölgesinde bir Google Cloud örneği, ikinci yarısında ise "default-allow-http" adlı bir güvenlik duvarı kuralı oluşturulur kullanıma sunduk.
Örnek başarıyla oluşturulduğunda, örneğin ayrıntılarını içeren bir tablo görüntülenir. Harici IP'yi not edin. Web sunucumuzun daha sonra çalıştığını doğrulamak için bu bilgiye ihtiyacımız olacaktır.
Örnek çalışmaya başladığında nginx'i yüklemek ve web sunucusunu başlatmak için örneğimize Cloud Shell'den SSH uygulayabiliriz:
gcloud compute ssh --zone us-central1-a webserver
Compute örneğimize giriş yaptıktan sonra nginx'i yükleyin:
sudo apt install nginx
logout
komutuyla ssh oturumundan çıkış yapın
Önceden tarayıcımıza örneğin harici IP'sini girerek web sunucumuzun çalıştığını doğrulayalım. Varsayılan nginx karşılama ekranını göreceksiniz:
Bu web sunucusu, Migrate for Anthos'u kullanarak Kubernetes'e taşıyacağımız eski web uygulaması olarak kullanılacak.
3. Migrate for Anthos ile Kubernetes kümesi
Ardından Compute Engine web sunucusunu taşıyacağımız GKE kümesi oluşturacağız. Cloud Console'da aşağıdaki komutu çalıştırın:
gcloud container clusters create my-gke-cluster \ --zone us-central1-a \ --cluster-version 1.13 \ --machine-type n1-standard-4 \ --image-type "UBUNTU" \ --num-nodes 1 \ --enable-stackdriver-kubernetes
Bu komutu tamamlamak için birkaç dakika bekleyin. Küme oluşturulduktan sonra ayrıntılarını içeren bir çıkış alırsınız:
Ardından Migrate for Anthos'u dağıtmak için GCP Marketplace'e gidin:
Migrate for Anthos'un pazar yeri sayfasında Yapılandır'ı tıklayın ve istenirse listeden projenizi seçin. Sonraki sayfada, bazı varsayılan değerlerin girildiği bir form gösterilir. Seçilen kümenin az önce oluşturduğumuz küme olduğundan emin olun ve Dağıt'ı tıklayın:
Migrate for Anthos artık Kubernetes kümemize dağıtılmalıdır. Dağıtım tamamlandığında "Tamam" durumunu görürsünüz sayfasına giderek Kubernetes Engine Uygulamaları sayfasında bulabilirsiniz:
4. İşlem örneğinden durum bilgili kümeye
Migrate for Anthos'u çalıştıran bir Kubernetes kümemiz var. Şimdi taşıma işlemine başlayabiliriz. Compute örneğimizi bir Kubenetes kümesine dağıtmak için Compute Engine örneğimizi kapatarak disklerin anlık görüntülerini alabileceğiz. Devam etmeden önce, daha sonra ihtiyaç duyacağımız örnek kimliğini not edin:
gcloud compute instances describe webserver --zone us-central1-a | grep ^id
Compute örneğimizi kapatalım:
gcloud compute instances stop webserver --zone us-central1-a
Örnek durdurulduğuna göre artık aşağıdaki komut dosyasını çalıştırarak disklerin anlık görüntüsünü güvenli bir şekilde alabiliriz. Proje kimliğinizi ve örnek kimliğinizi girdiğinizden emin olun:
python3 /google/migrate/anthos/gce-to-gke/clone_vm_disks.py \ -p <project-id> -i <instance-id> \ -z us-central1-a \ -T us-central1-a \ -A webserver-statefulset \ -o containerized-webserver.yaml
Bu işaretler olduğunda clone_vm_disks.py
:
- GCE örneğinizin kapalı olduğunu doğrulama
- Örneğinizin disklerinin her birinden anlık görüntü oluşturma
- Her anlık görüntüden yeni bir disk oluşturun
- Oluşturduğu anlık görüntüleri silme
- Web sunucunuzu barındıracak durum bilgili bir küme dağıtmak için mevcut çalışma dizininizde bir YAML dosyası oluşturun
Oluşturulan yaml dosyası, kopyalanan diskleri web sunucusu kapsayıcımıza eklemek için gerekli olan kalıcı birim talepleriyle birlikte Kubernetes kümemizde bir durum bilgili küme sağlar. Şu değişiklikleri kubectl
ile uygulayabiliriz:
kubectl apply -f containerized-webserver.yaml
İş Yükleri sayfasında web sunucusu durum bilgisinin durumunu kontrol edin:
Durumun "Kapsüller beklemede" şeklinde görünmesi normaldir. kubectl apply
çalıştırdıktan sonra birkaç dakikalığına. Durum "Tamam" olarak görününce devam edin.
5. Kümeyi yük dengeleyiciye kullanıma sunun
Bu noktada, Kubenetes kümemizin web sunucumuzu durum bilgili bir küme olarak çalıştırması gerekir. Ancak, web sunucumuza harici bir IP adresi aracılığıyla erişmek için container'ını bir yük dengeleyiciye kullanıma sunmamız da gerekir. Cloud kabuğunda, aşağıdaki içeriğe sahip loadbalancer.yaml
adlı yeni bir dosya oluşturun:
loadbalancer.yaml
apiVersion: v1
kind: Service
metadata:
name: webserver-loadbalancer
spec:
type: LoadBalancer
selector:
app: webserver-statefulset
ports:
- protocol: TCP
port: 80
targetPort: 80
Şimdi de bunu kubectl
ile uygulayın:
kubectl apply -f loadbalancer.yaml
kubectl komutunu web sunucusu-container hizmetinin harici IP adresini almak için kullanabiliriz:
kubectl get services
Harici IP adresini tarayıcımıza girersek öncekinin aynı varsayılan nginx karşılama ekranını görürüz:
Başardık. GCE web sunucumuz artık Kubernetes'te barındırılıyor. Güzel!
6. Stackdriver izleme
Metrikler
Yönetilen bir Kubernetes hizmeti olan Kubernetes Engine'de, Stackdriver ile hem günlük kaydı hem de izleme için otomatik enstrümantasyon yapılır. Şimdi, Stackdriver'ın otomatik olarak yakaladığı bazı metriklere göz atalım.
Ürünler menüsündeki Monitoring bağlantısını tıklayın. Çalışma alanınızı kurarken bu ayara projenizden ilk kez erişmek birkaç dakika sürebilir.
Yükleme tamamlandıktan sonra fareyle sol bölmedeki Kaynaklar'ın üzerine gelin ve "Kubernetes Engine YENİ"yi seçin. seçeneğini belirleyin.
Burada sunulan kontrol panelinde yer alan her satır, bir Kubernetes kaynağını temsil eder. Kontrol panelinin üzerindeki bağlantıları kullanarak altyapı, iş yükü veya hizmetler görünümü arasında geçiş yapabilirsiniz.
İş Yükleri görünümünde "my-gke-cluster" öğesini genişletin ve varsayılana gidin > webserver-statefulset > webserver-statefulset-0 > webserver-statefulset parametresidir. Web sunucusu durum bilgili küme kapsayıcısını tıklayın. Burada, bellek kullanımı ve CPU kullanımı dahil olmak üzere Stackdriver tarafından yakalanan bazı kullanıma hazır metrikleri bulabilirsiniz.
Bu kontrol panelinde görüntülenen grafikler, özel bir kontrol paneli oluşturmak için kullanabileceğimiz grafiklerdir.
Özel Kontrol Panelleri
Stackdriver, bize sunulan tüm metrik verilerine ilişkin tablo ve grafikleri düzenlemek için kullanabileceğimiz özel kontrol panelleri oluşturmamıza olanak tanıyor. Web sunucumuzun bazı metriklerinin özet görünümünü sunmak için özel bir kontrol paneli oluşturalım.
Sol bölmede fareyle Gösterge Tabloları'nın üzerine gelin, ardından Gösterge Tablosu Oluştur'u tıklayın.
Artık boş kontrol panelimiz olduğuna göre, takip etmek istediğimiz metrikleri ekleyebiliriz. Adsız Kontrol Panelimize "Web Sunucu Kapsayıcılarım" gibi faydalı bir ad verelim. ve "Grafik Ekle"yi tıklayın. dokunun:
Kullanıma hazır metrikleri hatırlıyor musunuz? Şimdi container CPU kullanımı için bir grafik ekleyelim. Grafik Başlığı alanına "CPU Kullanımı" yazın. "Kaynak türünü ve metriği bul" kutusuna request_utilization yazın ve filtrelenmiş listeden CPU istek kullanımı'nı seçin. Bu seçim bizim için hem Kaynak türü hem de Metrik alanlarını doldurur.
Şimdi project_id (birden çok projemiz varsa) ve container_name ölçütlerimize göre filtreleme yapacağız. Filtre kutusuna project_id yazın, filtrelenmiş listeden projeyi seçin ve Value (Değer) alanına projenizi seçin. container_name ölçütüne göre de filtrelememiz gerekir. Filtre kutusuna container_name yazın, filtrelenmiş listeden bunu seçin ve Değer alanında webserver-statefulset öğesini seçin. Kaydet'i tıklayın.
Artık ilk grafiğimizi içeren bir kontrol panelimiz var.
7. Çalışma denetimi ve uyarı politikası
Stackdriver sayesinde, herhangi bir metrik belirttiğimiz herhangi bir eşik değerine ulaştığında bizi bilgilendirecek uyarılar ayarlayabiliriz. Örneğin, son adımdaki CPU kullanımı sürekli bir süre boyunca belirli bir eşiğin üzerinde olduğunda Stackdriver'ın bize e-posta göndermesini sağlayabiliriz. Bu durum, uygulamamızda bir sorun olduğunu gösterebilir. Bu uyarıların nasıl göründüğünü göstermek için çalışma denetimi ayarlayıp kesinti simülasyonu yapalım.
Sol bölmeden Çalışma Denetimleri'ni, ardından Çalışma Denetimlerine Genel Bakış'ı seçin:
Çalışma Denetimleri sayfasının önerdiği gibi ilk çalışma denetimimizi ayarlayalım. Sayfanın sağ üst tarafındaki Çalışma Denetimi Ekle düğmesini tıklayın.
Devam formuna "Uç Nokta Çalışma Süresi" yazın başlık olarak, ana makine adı olarak da yük dengeleyicinizin harici IP adresini girmeniz gerekir.
Kaydet'i tıkladığınızda Uyarı Politikası'na eşlik eden bir politika oluşturmanız istenir:
Uyarı Politikası Oluştur'u tıklayın.
Buna "Uç Nokta Çalışma Politikası" adını verin. Yapılandırma bölümünde "Koşulun tetikleneceği durumlar:" seçeneğini ayarlayın. "Herhangi bir zaman serisi ihlali" olarak ve kaydet'i tıklayın.
Henüz işi bitirmedik. Ardından, uyarı politikamız ihlal edildiğinde bildirim alabilmek için bir Bildirim Kanalı belirtiriz. Bildirim Kanalı Türü açılır menüsünde, E-posta'yı ve ardından geçerli bir e-posta adresini seçin.
Bildirim Kanalı Ekle'yi tıklayın. Son olarak, formun alt kısmında politikayı "Web Uygulaması Çalışma Süresi" olarak adlandırın. ve Kaydet'i tıklayın.
Uyarının nasıl görüneceğini anlamak için Cloud Console'da Cloud Shell'inizi tekrar açın. Aşağıdaki komut, web sunucusu kapsülümüzde çalışan nginx hizmetini durdurur:
kubectl exec -t webserver-statefulset-0 -- /bin/bash -c "nginx -s stop"
Birkaç dakika sonra, kesintiyle ilgili bir e-posta alırsınız:
Bu işlemi geri alalım. Cloud Shell'e dönüp nginx'i yeniden başlatalım:
kubectl exec -t webserver-statefulset-0 -- /bin/bash -c "nginx"
Birkaç dakika sonra, bu kez öncekinden daha iyi haberler içeren başka bir Stackdriver e-postası alacaksınız:
8. Temizleme
Migrate for Anthos ile GCE'den GKE'ye geçiş yaptık. Şimdi projemizde oluşturduğumuz tüm kaynakları temizleyelim.
Projeyi silme
İsterseniz projenin tamamını silebilirsiniz. GCP Console'da Cloud Resource Manager sayfasına gidin:
Proje listesinde, üzerinde çalıştığımız projeyi seçin ve Sil'i tıklayın. Proje kimliğini yazmanız istenir. Kodu girip Kapat'ı tıklayın.
Farklı bileşenleri tek tek silmeyi tercih ederseniz sonraki bölüme geçin.
Stackdriver
Kontrol paneli
Kontrol paneli sayfanızdan sayfanın üst kısmındaki ayarlar simgesini tıklayın ve Kontrol Panelini Sil'i seçin.
Uyarı Politikası
Politikalar sayfasında, oluşturduğunuz her politikanın sağ tarafındaki İşlemler menüsünden Sil'i seçin.
Çalışma Denetimi
Çalışma Denetimleri sayfasında, oluşturduğunuz her denetimin sağındaki İşlemler menüsünden Sil'i seçin.
GCE ve Kubernetes
Google Compute Engine örneği
gcloud compute instances delete webserver --zone=us-central1-a
Kubernetes Kümesi (Migrate for Anthos, durum bilgili küme ve yük dengeleyici hizmetini içerir)
gcloud container clusters delete my-gke-cluster --zone=us-central1-a
Diskler
Durum bilgili kümemizde, oluşturduğumuz bir disk kullanıldı. Adı almak için aşağıdaki komutu kullanın:
gcloud compute disks list --filter=webserver
Benimki yerine kendi disk adınızı kullanarak disk adını şununla silin:
gcloud compute disks delete vls-690d-webserver --zone=us-central1-a
Tümü temizlendi.
9. Tebrikler!
Tebrikler! Migrate for Anthos'u kullanarak web sunucunuzu bir GCE örneğinden Kubernetes kümesine taşıdınız.
İşlediklerimiz
- Migrate for Anthos'u kullanarak bir web sunucusunu GCE'den Kubernetes kümesine taşıdık
- Durum bilgili küme web sunucumuzu, Kubernetes yük dengeleyici hizmeti aracılığıyla kullanıma sunarak dünyaya açtık.
- Stackdriver'ı etkinleştirdik ve özel bir kontrol paneli oluşturduk.
- Web sunucumuz çöktüğünde bunu bize bildirmek için bir uyarı politikasıyla birlikte çalışma denetimi yapılandırdık