arrow_back

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

Sign in Join
Get access to 700+ labs and courses

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

Lab 35 minutes universal_currency_alt 5 Credits show_chart Intermediate
info This lab may incorporate AI tools to support your learning.
Get access to 700+ labs and courses

GSP233

Google Cloud yönlendirmesiz öğrenim laboratuvarı logosu

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. 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:

  • 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 modda (önerilen) veya gizli tarama penceresinde 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: Bu laboratuvar için yalnızca öğrenci hesabını kullanın. Farklı bir Google Cloud hesabı kullanırsanız bu hesaptan ödeme 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 iletişim kutusu açılır. Soldaki "Laboratuvar ayrıntıları" panelinde şunlar yer alır:

    • "Google Cloud konsolunu 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 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.

    Not: Hesap seçin iletişim kutusunu görürseniz Başka bir hesap kullan'ı tıklayın.
  3. Gerekirse aşağıdaki kullanıcı adını kopyalayıp Oturum açın iletişim kutusuna yapıştırın.

    {{{user_0.username | "Username"}}}

    Kullanıcı adını "Laboratuvar ayrıntıları" panelinde de bulabilirsiniz.

  4. İleri'yi tıklayın.

  5. Aşağıdaki şifreyi kopyalayıp Hoş geldiniz iletişim kutusuna yapıştırın.

    {{{user_0.password | "Password"}}}

    Şifreyi "Laboratuvar ayrıntıları" panelinde de bulabilirsiniz.

  6. İleri'yi tıklayın.

    Önemli: Laboratuvarın sizinle paylaştığı giriş bilgilerini kullanmanız gerekir. Google Cloud hesabınızın kimlik bilgilerini kullanmayın. Not: Bu laboratuvarda kendi Google Cloud hesabınızı kullanabilmek için ek ücret ödemeniz gerekebilir.
  7. Sonraki sayfalarda ilgili düğmeleri tıklayarak ilerleyin:

    • Hükümler 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 Google Cloud konsolu bu sekmede açılır.

Not: Google Cloud ürün ve hizmetlerine erişmek için gezinme menüsünü tıklayın veya Arama alanına hizmetin veya ürünün adını yazın. Gezinme menüsü simgesi ve arama alanı

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 konsolunun üst kısmından Activate Cloud Shell (Cloud Shell'i etkinleştir) Cloud Shell'i etkinleştir simgesi simgesini tıklayın.

  2. Aşağıdaki pencereleri tıklayın:

    • Cloud Shell bilgi penceresinde devam edin.
    • Google Cloud API çağrıları yapmak için Cloud Shell'e kimlik bilgilerinizi kullanma yetkisi verin.

Bağlandığınızda kimliğiniz zaten doğrulanmıştır. 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 {{{project_0.project_id | "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. Authorize'ı (Yetkilendir) tıklayın.

Çıkış:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} 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_0.project_id | "PROJECT_ID"}}} Not: gcloud ile ilgili tüm belgeleri, Google Cloud'daki gcloud CLI'a 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 Gateways, Services & Ingress'i (Ağ Geçidi, Hizmetler ve Giriş) tıklayın ve nginx hizmet durumunu kontrol edin.
  4. Endpoints (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

Topluluktaki diğer geliştiricilerin Terraform'u nasıl kullandığını öğrenin.

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: 1 Nisan 2024

Laboratuvarın Son Test Edilme Tarihi: 1 Nisan 2024

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

Before you begin

  1. Labs create a Google Cloud project and resources for a fixed time
  2. Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
  3. On the top left of your screen, click Start lab to begin

Use private browsing

  1. Copy the provided Username and Password for the lab
  2. Click Open console in private mode

Sign in to the Console

  1. Sign in using your lab credentials. Using other credentials might cause errors or incur charges.
  2. Accept the terms, and skip the recovery resource page
  3. Don't click End lab unless you've finished the lab or want to restart it, as it will clear your work and remove the project

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

Use private browsing to run the lab

Use an Incognito or private browser window to run this lab. This prevents any conflicts between your personal account and the Student account, which may cause extra charges incurred to your personal account.