arrow_back

Terraform ile Kubernetes Yük Dengeleyici Hizmetini Dağıtma

Join Sign in
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Terraform ile Kubernetes Yük Dengeleyici Hizmetini Dağıtma

Lab 35 minutes universal_currency_alt 5 Credits show_chart Intermediate
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP233

Google Cloud Rehbersiz Laboratuvarları

Genel bakış

Terraform'da "sağlayıcı" terimi, bir yukarı akış API'sinin mantıksal özeti anlamında kullanılmaktadır. Bu laboratuvarda, Kubernetes kümesi oluşturma ve bu kümeye yük dengeleyici türündeki NGINX hizmetini dağıtma işlemi anlatılmaktadır.

Hedefler

Bu laboratuvarda şunları öğreneceksiniz:

  • Terraform kullanarak bir hizmetle birlikte Kubernetes kümesi dağıtma

Ön koşullar

Bu laboratuvardan yararlanabilmek için aşağıdaki konularda deneyiminizin olması gerekir:

  • Kubernetes hizmetleri hakkında bilgi
  • kubectl CLI hakkında bilgi

Kurulum ve şartlar

Laboratuvarı Başlat düğmesini tıklamadan önce

Buradaki talimatları okuyun. Laboratuvarlar süreli olduğundan duraklatılamaz. 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 gerçek bir bulut ortamında (Simülasyon veya demo ortamında değil.) gerçekleştirebilirsiniz. Bu olanağın sunulabilmesi 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 kullanırsınız.

Bu laboratuvarı tamamlamak için şunlar gerekir:

  • Standart bir internet tarayıcısına erişim (Chrome Tarayıcı önerilir).
Not: Bu laboratuvarı çalıştırmak için tarayıcıyı gizli pencerede açın. Aksi takdirde, kişisel hesabınızla öğrenci hesabınız arasında oluşabilecek çakışmalar nedeniyle kişisel hesabınızdan ek ücret alınabilir.
  • Laboratuvarı tamamlamak için yeterli süre. (Laboratuvarlar, başlatıldıktan sonra duraklatılamaz)
Not: Kişisel bir Google Cloud hesabınız veya projeniz varsa bu laboratuvarda kullanmayın. Aksi takdirde hesabınızdan ek ücret alınabilir.

Laboratuvarınızı başlatma ve Google Cloud Console'da oturum açma

  1. Laboratuvarı Başlat düğmesini tıklayın. Laboratuvar için ödeme yapmanız gerekiyorsa ödeme yöntemini seçebileceğiniz bir pop-up açılır. Soldaki Laboratuvar Ayrıntıları panelinde şunlar yer alır:

    • Google Console'u Aç düğmesi
    • Kalan süre
    • Bu laboratuvarda kullanmanız gereken geçici kimlik bilgileri
    • Bu laboratuvarda ilerlemek için gerekebilecek diğer bilgiler
  2. Google Console'u Aç'ı tıklayın. 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.

    Not: Hesap seçin iletişim kutusunu görürseniz Başka Bir Hesap Kullan'ı tıklayın.
  3. Gerekirse Laboratuvar Ayrıntıları panelinden Kullanıcı adı'nı kopyalayın ve Oturum aç iletişim kutusuna yapıştırın. Sonraki'ni tıklayın.

  4. Laboratuvar Ayrıntıları panelinden Şifre'yi kopyalayın ve Hoş geldiniz iletişim penceresine yapıştırın. Sonraki'ni tıklayın.

    Önemli: Sol paneldeki kimlik bilgilerini kullanmanız gerekir. Google Cloud Öğrenim Merkezi kimlik bilgilerinizi kullanmayın. Not: Bu laboratuvarda kendi Google Cloud hesabınızı kullanabilmek için ek ücret ödemeniz gerekebilir.
  5. Sonraki sayfalarda ilgili düğmeleri tıklayarak ilerleyin:

    • Şartları ve koşulları kabul edin.
    • Geçici bir hesap kullandığınızdan kurtarma seçenekleri veya iki faktörlü kimlik doğrulama eklemeyin.
    • Ücretsiz denemelere kaydolmayın.

Birkaç saniye sonra Cloud Console bu sekmede açılır.

Not: Soldaki Gezinme menüsü'nü tıklayarak Google Cloud ürün ve hizmetlerinin listelendiği menüyü görüntüleyebilirsiniz. Gezinme menüsü simgesi

Cloud Shell'i etkinleştirme

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.

  1. Google Cloud Console'un üst kısmından Cloud Shell'i etkinleştir Cloud Shell'i etkinleştir simgesi simgesini tıklayın.

Bağlandığınızda, kimliğiniz doğrulanmış olur. Proje ise PROJECT_ID'nize göre ayarlanmıştır. Çıkış, bu oturum için PROJECT_ID'yi tanımlayan bir satır içerir:

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud, Google Cloud'un komut satırı aracıdır. Cloud Shell'e önceden yüklenmiştir ve sekmeyle tamamlamayı destekler.

  1. (İsteğe bağlı) Etkin hesap adını şu komutla listeleyebilirsiniz:
gcloud auth list
  1. Yetkilendir'i tıklayın.

  2. Çıkışınız aşağıdaki gibi görünecektir:

Çıkış:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (İsteğe bağlı) Proje kimliğini şu komutla listeleyebilirsiniz:
gcloud config list project

Çıkış:

[core] project = <project_ID>

Örnek çıkış:

[core] project = qwiklabs-gcp-44776a13dea667a6 Not: gcloud ile ilgili tüm belgeleri, Google Cloud'daki gcloud CLI'ya genel bakış rehberinde bulabilirsiniz.

Kubernetes hizmetleri

Hizmet, küme üzerinde çalışan kapsüllerden oluşan bir gruptur. Hizmetler "ucuz" olduğundan küme içinde çok sayıda hizmetiniz olabilir. Kubernetes hizmetleri, mikro hizmet mimarileri için etkili bir itici güç olabilir.

Hizmetler, küme genelinde standartlaştırılmış bazı önemli özellikler (yük dengeleme, uygulamalar arasında hizmet keşfi ve sıfır kapalı kalma süreli uygulama dağıtımlarını destekleyen özellikler) sunar.

Her hizmetin bir kapsül etiketi sorgusu vardır. Bu sorgu, hizmet için verileri hangi kapsüllerin işleyeceğini belirler. Bu etiket sorgusu, sıklıkla bir veya daha fazla replika denetleyicisi tarafından oluşturulan kapsüllerle eşleşir. Kubernetes API aracılığıyla bir hizmetin etiket sorgusu güncellenerek dağıtım yazılımı eklenebilir ve bu sayede etkili rota senaryoları oluşturulabilir.

Neden Terraform?

YAML dosyalarında açıklanan tüm Kubernetes kaynaklarını yönetmek için kubectl veya API çağrılarına eşlenmiş CLI tabanlı benzer araçları kullanmak mümkün olsa da Terraform'la düzenleme yapmak bazı açılardan avantajlıdır:

  • Tek dil: Kubernetes altyapısını sağlamak ve bu altyapıya uygulama dağıtmak için aynı yapılandırma dilini kullanabilirsiniz.
  • Kayma algılama: Terraform planı, belli bir zamandaki gerçeklik ile uygulamak istediğiniz yapılandırma arasındaki farkı size daima gösterir.
  • Tam yaşam döngüsü yönetimi: Terraform, sürecin başında kaynakları oluşturmakla kalmaz, aynı zamanda izlenen kaynakları tek bir komutla oluşturma, güncelleme ve silme imkanı da sunar. Ayrıca bu kaynakları belirlemek için API'yi kontrol etmenize gerek yoktur.
  • Eşzamanlı geri bildirim: Eşzamansız davranış çoğunlukla kullanışlı olsa da işlem sonuçlarını (başarısız sonuçlar ya da oluşturulan kaynağın ayrıntıları) tespit etme işi kullanıcıya kaldığından, bazen üretkenliği olumsuz etkileyebilmektedir. Örneğin, temel hazırlık süreci tamamlanana kadar yük dengeleyicinin IP'sini/ana makine adını bilme olanağınız yoktur ve bu nedenle, yük dengeleyiciye yönelik herhangi bir DNS kaydı oluşturamazsınız.
  • İlişkiler grafiği: Terraform, kaynaklar arasındaki ilişkileri anlar ve bu da planlama açısından yararlı olabilir. Örneğin Terraform, ilgili küme var olana dek bir Kubernetes kümesinde hizmet oluşturmaya çalışmayacaktır.

1. görev: Örnek kodu klonlama

  1. İlk olarak Cloud Shell'de örnek kodu klonlayın:
gsutil -m cp -r gs://spls/gsp233/* .
  1. tf-gke-k8s-service-lb dizinine gidin:
cd tf-gke-k8s-service-lb

2. görev: Kodu anlama

  1. main.tf dosyasının içeriğini inceleyin:
cat main.tf

Örnek çıkış:

... variable "region" { type = string description = "Kaynağın bölgesi." } variable "location" { type = string description = "Location değişkeni, kaynağın bölgesini/alt bölgesini temsil eder." } variable "network_name" { default = "tf-gke-k8s" } provider "google" { region = var.region } resource "google_compute_network" "default" { name = var.network_name auto_create_subnetworks = false } resource "google_compute_subnetwork" "default" { name = var.network_name ip_cidr_range = "10.127.0.0/20" network = google_compute_network.default.self_link region = var.region private_ip_google_access = true } ...
  • region, zone ve network_name için değişkenler tanımlanmıştır. Bunlar Kubernetes kümesini oluşturmak için kullanılacaktır.
  • Google Cloud sağlayıcısı, bu projede çeşitli kaynaklar oluşturmamıza izin verecektir.
  • Uygun ağı ve kümeyi oluşturmak için tanımlanmış çeşitli kaynaklar mevcuttur.
  • Son olarak, terraform apply komutunu çalıştırmanızın ardından göreceğiniz bazı çıkışlar mevcuttur.
  1. k8s.tf dosyasının içeriğini inceleyin:
cat k8s.tf

Örnek çıkış:

provider "kubernetes" { version = "~> 1.10.0" host = google_container_cluster.default.endpoint token = data.google_client_config.current.access_token client_certificate = base64decode( google_container_cluster.default.master_auth[0].client_certificate, ) client_key = base64decode(google_container_cluster.default.master_auth[0].client_key) cluster_ca_certificate = base64decode( google_container_cluster.default.master_auth[0].cluster_ca_certificate, ) } resource "kubernetes_namespace" "staging" { metadata { name = "staging" } } resource "google_compute_address" "default" { name = var.network_name region = var.region } resource "kubernetes_service" "nginx" { metadata { namespace = kubernetes_namespace.staging.metadata[0].name name = "nginx" } spec { selector = { run = "nginx" } session_affinity = "ClientIP" port { protocol = "TCP" port = 80 target_port = 80 } type = "LoadBalancer" load_balancer_ip = google_compute_address.default.address } } resource "kubernetes_replication_controller" "nginx" { metadata { name = "nginx" namespace = kubernetes_namespace.staging.metadata[0].name labels = { run = "nginx" } } spec { selector = { run = "nginx" } template { container { image = "nginx:latest" name = "nginx" resources { limits { cpu = "0.5" memory = "512Mi" } requests { cpu = "250m" memory = "50Mi" } } } } } } output "load-balancer-ip" { value = google_compute_address.default.address }
  • Bu komut dosyası, bir Kubernetes sağlayıcısını Terraform ile yapılandırır ve hizmeti, ad alanını ve replication_controller adında bir kaynağı oluşturur.
  • Komut dosyası, çıkış olarak bir nginx hizmet IP'si döndürür.

3. görev: Bağımlıları başlatma ve yükleme

Terraform yapılandırma dosyalarını içeren bir çalışma dizinini başlatmak için terraform init komutu kullanılır.

Bu komut, kullanılacak çalışma dizinini hazırlamak için birkaç başlatma adımı uygular. Komutu birden çok kez güvenle çalıştırabilir, böylece yapılandırmada yaptığınız değişikliklerin çalışma dizinine uygulanmasını sağlayacak güncellemeleri yapabilirsiniz.

  1. terraform init komutunu çalıştırın:
terraform init

Örnek çıkış:

... * provider.google: version = "~> 3.8.0" * provider.kubernetes: version = "~> 1.10.0" Terraform has been successfully initialized! You may now begin working with Terraform. Try running `terraform plan` to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.
  1. İstenen yapılandırma durumuna ulaşmak için gerekli olan değişiklikleri uygulamanızı sağlayacak terraform apply komutunu çalıştırın:
terraform apply -var="region={{{ project_0.default_region | "Region to be allocated" }}}" -var="location={{{ project_0.default_zone | "Zone to be allocated" }}}"
  1. Terraform'un işlemlerini inceleyin ve oluşturulacak kaynakları gözden geçirin.

  2. Hazır olduğunuzda Terraform işlemlerine başlamak için yes yazın.

İşlemler tamamlandığında şuna benzer bir çıkış görürsünüz:

Örnek çıkış:

Apply complete! Resources: 7 added, 0 changed, 0 destroyed. Outputs: cluster_name = tf-gke-k8s cluster_region = "{{{project_0.default_region|REGION}}}" cluster_zone = "{{{project_0.default_region|ZONE}}}" load-balancer-ip = 35.233.177.223 network = https://www.googleapis.com/compute/beta/projects/qwiklabs-gcp-5438ad3a5e852e4a/global/networks/tf-gke-k8s subnetwork_name = tf-gke-k8s

Terraform tarafından oluşturulan kaynakları doğrulama

  1. Konsolda gezinme menüsü > Kubernetes Engine'e gidin.
  2. tf-gke-k8s kümesini tıklayın ve kümenin yapılandırmasını kontrol edin.
  3. Soldaki panelde Hizmetler ve Giriş'i tıklayın ve nginx hizmet durumunu kontrol edin.
  4. Uç noktalar IP adresini tıklayıp Welcome to nginx! sayfasını yeni bir tarayıcı sekmesinde açın.

Welcome to nginx! sayfası

Tamamladığınız görevi doğrulamak için İlerleme durumumu kontrol et'i tıklayın. Terraform kullanarak başarıyla bir altyapı dağıttıysanız bir değerlendirme puanı görürsünüz.

Terraform ile altyapı dağıtma

Tebrikler!

Bu laboratuvarda, Kubernetes kümesini bir hizmetle birlikte başlatmak, planlamak ve dağıtmak için Terraform'u kullandınız.

Görevinizi tamamlama

Bu yönlendirmesiz öğrenim laboratuvarı, Cloud Altyapısını Terraform ile Yönetme ve DevOps Temel Bilgileri görevlerinin bir parçasıdır. Görevler, bir öğrenme rotasını oluşturan birbiriyle bağlantılı laboratuvar dizilerini ifade eder. Bir görevi tamamladığınızda başarınızın ödülü olarak rozet kazanırsınız. Rozetlerinizi herkese açık hâle getirebilir ve rozetin bağlantısını online özgeçmişinizde veya sosyal medya hesabınızda paylaşabilirsiniz. Bu laboratuvarı içeren herhangi bir göreve kaydolun ve hemen bir tamamlama kredisi kazanın. Tüm mevcut görevleri görmek için Google Cloud Öğrenim Merkezi kataloğuna bakın.

Sonraki laboratuvarınıza katılın

Görevinize Terraform ile HTTPS İçerik Tabanlı Yük Dengeleyici ile devam edin veya şu önerilere göz atın:

Sonraki adımlar / Daha fazla bilgi

Topluluk'taki diğer geliştiricilerin Terraform'u nasıl kullandığını görün.

Google Cloud eğitimi ve sertifikası

...Google Cloud teknolojilerinden en iyi şekilde yararlanmanıza yardımcı olur. Derslerimizde teknik becerilere odaklanırken en iyi uygulamalara da yer veriyoruz. Gerekli yetkinlik seviyesine hızlıca ulaşmanız ve öğrenim maceranızı sürdürebilmeniz için sizlere yardımcı olmayı amaçlıyoruz. Temel kavramlardan ileri seviyeye kadar farklı eğitim programlarımız mevcut. Ayrıca, yoğun gündeminize uyması için talep üzerine sağlanan, canlı ve sanal eğitim alternatiflerimiz de var. Sertifikasyonlar ise Google Cloud teknolojilerindeki becerilerinizi ve uzmanlığınızı doğrulamanıza ve kanıtlamanıza yardımcı oluyor.

Kılavuzun Son Güncellenme Tarihi: 28 Eylül 2023

Laboratuvarın Son Test Edilme Tarihi: 28 Eylül 2023

Telif Hakkı 2024 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.