arrow_back

Spinnaker ve Kubernetes Engine ile Sürekli Teslim Ardışık Düzenleri

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

Spinnaker ve Kubernetes Engine ile Sürekli Teslim Ardışık Düzenleri

Lab 1 hour 30 minutes universal_currency_alt 7 Credits show_chart Advanced
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP114

Google Cloud Rehbersiz Laboratuvarları

Genel bakış

Bu uygulamalı laboratuvarda Google Kubernetes Engine, Google Cloud Source Repositories, Google Cloud Container Builder ve Spinnaker'ı kullanarak sürekli teslim ardışık düzeni oluşturmanın yolları anlatılmaktadır. Örnek uygulama oluşturduktan sonra bu hizmetleri yapılandırıp uygulamanızın otomatik olarak derlenmesi, test edilmesi ve dağıtılması için kullanabilirsiniz. Uygulama kodunda yaptığınız değişiklikler sürekli teslim ardışık düzenini tetikler ve yeni sürümün otomatik olarak yeniden derlenmesini, test edilmesini ve dağıtılmasını sağlar.

Hedefler

  • Google Cloud Shell'i kullanarak, Kubernetes Engine kümesi oluşturarak ve kimliğiniz ile kullanıcı yönetimi şemanızı yapılandırarak ortamınızı ayarlayın.
  • Örnek uygulamayı indirin, Git deposu oluşturun ve bunu Google Cloud Source Repositories'e yükleyin.
  • Helm'i kullanarak Spinnaker'ı Kubernetes Engine'e dağıtın.
  • Docker görüntünüzü oluşturun.
  • Uygulamanızda değişiklik olduğunda Docker görüntüsü oluşturacak tetikleyiciler oluşturun.
  • Uygulamanızı Kubernetes Engine'e güvenilir ve sürekli olarak dağıtmak için bir Spinnaker ardışık düzenini yapılandırın.
  • Ardışık düzeni tetkileyecek bir kod değişikliği yapın ve üretime sunulmasını izleyin.

Ardışık düzen mimarisi

Uygulamanızdaki güncellemeleri kullanıcılarınıza sürekli olarak teslim edebilmek için yazılımınızı güvenilir şekilde derleyen, test eden ve güncelleyen otomatik bir sürece ihtiyacınız vardır. Kod değişikliklerinin yapı oluşturmayı, birim testini, işlevsel testleri ve üretimi kullanıma sunmayı destekleyen bir ardışık düzen aracılığıyla otomatik olarak aktarılması gerekir. Bazı durumlarda, değişiklikler tüm kullanıcı tabanıyla paylaşılmadan önce kullanıcıların sadece bir kısmını etkileyecek bir kod değişikliğini gerçekçi olarak uygulamanız gerekebilir. Bu canary sürümlerinden birinin yetersiz olduğunu düşünebilirsiniz. Bu durumda, otomatik sürecinizin yazılımdaki değişiklikleri hızlıca geri çekebilecek durumda olması gerekir.

Süreç diyagramı

Kubernetes Engine ve Spinnaker'ı kullanarak sağlam bir sürekli teslim akışı oluşturabilirsiniz. Bu sayede yazılımınız geliştirilip doğrulandıktan sonra hızlıca kullanıma sunulabilir. Nihai hedefiniz hızlı iterasyon olsa da kullanıma sunulma aşamasına gelmeden önce her bir uygulama revizyonunun bir dizi otomatik doğrulamadan geçmesine öncelik vermeniz gerekir. Otomasyonun onaylamadığı değişiklikler olduğunda uygulamayı manuel olarak doğrulayabilir ve yayın öncesi testleri yapabilirsiniz.

Ekibiniz uygulamanın üretime hazır olduğuna karar verirse ekip üyelerinden biri uygulamayı onaylayarak üretime dağıtılmasını sağlayabilir.

Uygulama teslimat ardışık düzeni

Bu laboratuvarda, aşağıdaki diyagramda gösterilen sürekli teslim ardışık düzenini derlemeyi öğreneceksiniz.

Sürekli teslim ardışık düzeni akış diyagramı

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.

1. görev: Ortamınızı ayarlama

Bu laboratuvarda gerekli olan altyapıyı ve kimlikleri yapılandırın. Spinnaker'ı ve örnek uygulamayı dağıtmak için Kubernetes Engine kümesi oluşturun.

  1. Varsayılan işlem alt bölgesini ayarlayın:
gcloud config set compute/zone {{{project_0.default_zone|Zone}}}
  1. Eğitici Spinnaker örnek uygulamasını kullanarak Kubernetes Engine kümesi oluşturun:
gcloud container clusters create spinnaker-tutorial \ --machine-type=e2-standard-2

Kümenin oluşturulması yaklaşık 5-10 dakika sürebilir. Devam etmeden önce kümenizin temel hazırlığı tamamlamasını bekleyin.

İşlem tamamlandıktan sonra ad, konum, sürüm, IP adresi, makine türü, düğüm sürümü ve düğüm sayısı bilgileri ve kümenin çalıştığını belirten bir rapor gösterilir.

Kimlik ve erişim yönetimini yapılandırma

Cloud Identity Access Management (Cloud IAM) hizmet hesabı oluşturarak Spinnaker'a yetki verebilir ve Cloud Storage'da veri depolamasını sağlayabilirsiniz. Spinnaker, ardışık düzen verilerini güvenlik ve esneklik sunan Cloud Storage'da depolar. Spinnaker dağıtımınız beklenmedik şekilde başarısız olursa, orijinaliyle aynı ardışık düzen verilerine erişerek birkaç dakika içinde aynı dağıtımı oluşturabilirsiniz.

Aşağıdaki adımları uygulayarak başlangıç komut dosyanızı bir Cloud Storage paketine yükleyin:

  1. Hizmet hesabını oluşturun:
gcloud iam service-accounts create spinnaker-account \ --display-name spinnaker-account
  1. Ortam değişkenlerindeki hizmet hesabının e-posta adresini ve mevcut proje kimliğini, daha sonra oluşturulacak komutlarda kullanmak için not edin:
export SA_EMAIL=$(gcloud iam service-accounts list \ --filter="displayName:spinnaker-account" \ --format='value(email)') export PROJECT=$(gcloud info --format='value(config.project)')
  1. storage.admin rolünü, hizmet hesabınıza bağlayın:
gcloud projects add-iam-policy-binding $PROJECT \ --role roles/storage.admin \ --member serviceAccount:$SA_EMAIL
  1. Hizmet hesabı anahtarını indirin. Daha sonra göreceğiniz bir adımda Spinnaker'ı indirip bu anahtarı Kubernetes Engine'e yükleyeceksiniz.
gcloud iam service-accounts keys create spinnaker-sa.json \ --iam-account $SA_EMAIL

Çıkış:

created key [12f224e036437704b91a571792462ca6fc4cd438] of type [json] as [spinnaker-sa.json] for [spinnaker-account@qwiklabs-gcp-gcpd-f5e16da10e5d.iam.gserviceaccount.com]

2. görev: Spinnaker ardışık düzenlerini tetiklemek için Cloud Pub/Sub'ı ayarlama

  1. Container Registry'den bildirim almak için Cloud Pub/Sub konusunu oluşturun:
gcloud pubsub topics create projects/$PROJECT/topics/gcr
  1. Görüntülerin aktarıldığına dair bildirimler almak için Spinnaker'ın okuyabileceği bir abonelik oluşturun:
gcloud pubsub subscriptions create gcr-triggers \ --topic projects/${PROJECT}/topics/gcr
  1. Spinnaker'ın hizmet hesabına, gcr-triggers aboneliğine gelen bildirimleri okuma izni verin:
export SA_EMAIL=$(gcloud iam service-accounts list \ --filter="displayName:spinnaker-account" \ --format='value(email)') gcloud beta pubsub subscriptions add-iam-policy-binding gcr-triggers \ --role roles/pubsub.subscriber --member serviceAccount:$SA_EMAIL

Tamamlanan görevi test etme

Tamamladığınız görevi doğrulamak için İlerleme durumumu kontrol et'i tıklayın. Ortamı başarıyla oluşturduysanız bir değerlendirme puanı görürsünüz.

Ortamınızı ayarlama

3. görev: Helm'i kullanarak Spinnaker'ı dağıtma

Bu bölümde Helm'i kullanarak Spinnaker'ı Grafikler deposundan dağıtacaksınız. Helm, Kubernetes uygulamalarını yapılandırmak ve dağıtmak için kullanabileceğiniz bir paket yöneticisidir.

Helm, halihazırda Cloud Shell'inize yüklenmiştir.

Helm'i yapılandırma

  1. Helm'e kümenizde cluster-admin rolünü verin:
kubectl create clusterrolebinding user-admin-binding \ --clusterrole=cluster-admin --user=$(gcloud config get-value account)
  1. Kaynakları tüm ad alanlarında dağıtabilmesi için Spinnaker'a cluster-admin rolünü verin:
kubectl create clusterrolebinding --clusterrole=cluster-admin \ --serviceaccount=default:default spinnaker-admin
  1. Helm'in kullanılabilir depolarına (Spinnaker dahildir) kararlı grafik dağıtımlarını ekleyin:
helm repo add stable https://charts.helm.sh/stable helm repo update

Spinnaker'ı yapılandırma

  1. Cloud Shell'de Spinnaker için paket oluşturarak ardışık düzen yapılandırmasını depolayabilirsiniz:
export PROJECT=$(gcloud info \ --format='value(config.project)') export BUCKET=$PROJECT-spinnaker-config gsutil mb -c regional -l {{{project_0.default_region|Region}}} gs://$BUCKET
  1. spinnaker-config.yaml dosyası oluşturmak için, Helm'in Spinnaker'ı nasıl yüklemesi gerektiğini açıklayan aşağıdaki komutu çalıştırın:
export SA_JSON=$(cat spinnaker-sa.json) export PROJECT=$(gcloud info --format='value(config.project)') export BUCKET=$PROJECT-spinnaker-config cat > spinnaker-config.yaml <<EOF gcs: enabled: true bucket: $BUCKET project: $PROJECT jsonKey: '$SA_JSON' dockerRegistries: - name: gcr address: https://gcr.io username: _json_key password: '$SA_JSON' email: 1234@5678.com # minio'nun varsayılan depolama arka ucu olarak devre dışı bırakın minio: enabled: false # Spinnaker'ı GCP hizmetlerini etkinleştirmek üzere yapılandırın halyard: spinnakerVersion: 1.19.4 image: repository: us-docker.pkg.dev/spinnaker-community/docker/halyard tag: 1.32.0 pullSecrets: [] additionalScripts: create: true data: enable_gcs_artifacts.sh: |- \$HAL_COMMAND config artifact gcs account add gcs-$PROJECT --json-path /opt/gcs/key.json \$HAL_COMMAND config artifact gcs enable enable_pubsub_triggers.sh: |- \$HAL_COMMAND config pubsub google enable \$HAL_COMMAND config pubsub google subscription add gcr-triggers \ --subscription-name gcr-triggers \ --json-path /opt/gcs/key.json \ --project $PROJECT \ --message-format GCR EOF

Spinnaker grafiğini dağıtma

  1. Grafiği yapılandırma grubunuzla dağıtmak için Helm komut satırı arayüzünü kullanın:
helm install -n default cd stable/spinnaker -f spinnaker-config.yaml \ --version 2.0.0-rc9 --timeout 10m0s --wait Not: Yükleme işleminin tamamlanması 5-8 dakika sürebilir.
  1. Komut yüklendikten sonra aşağıdaki komutu çalıştırarak Spinnaker'dan Cloud Shell'e bağlantı noktası yönlendirmeyi ayarlayın:
export DECK_POD=$(kubectl get pods --namespace default -l "cluster=spin-deck" \ -o jsonpath="{.items[0].metadata.name}") kubectl port-forward --namespace default $DECK_POD 8080:9000 >> /dev/null &
  1. Spinnaker kullanıcı arayüzünü açmak için Cloud Shell penceresinin üst kısmındaki Web önizlemesi simgesini ve ardından 8080 bağlantı noktasında önizle'yi tıklayın.

Cloud Shell penceresinin üst kısmındaki Web önizlemesi simgesi

Önce karşılama ekranı, ardından Spinnaker kullanıcı arayüzü açılır.

Spinnaker kullanıcı arayüzüne buradan erişeceğiniz için bu sekmeyi açık bırakın.

Tamamlanan görevi test etme

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

Spinnaker grafiğini Kubernetes Helm'i kullanarak dağıtma

4. görev: Docker görüntüsü oluşturma

Bu bölümde, Cloud Build'i uygulamanızın kaynak kodundaki değişiklikleri tespit etmek, Docker görüntüsü oluşturmak ve görüntüyü Container Registry'e göndermek üzere yapılandıracaksınız.

Kaynak kodu deponuzu oluşturma

  1. Örnek uygulama kaynak kodunu Cloud Shell sekmesinden indirin:
gsutil -m cp -r gs://spls/gsp114/sample-app.tar .
  1. Kaynak kodu açın:
mkdir sample-app tar xvf sample-app.tar -C ./sample-app
  1. Dizinleri, kaynak koduna değiştirin:
cd sample-app
  1. Bu depoda kayıtlı Git'inizin kullanıcını adı ve e-posta adresini belirleyin. [USERNAME] kodunu, seçtiğiniz kullanıcı adıyla değiştirin:
git config --global user.email "$(gcloud config get-value core/account)" git config --global user.name "[USERNAME]"
  1. Kaynak kodu deponuzda ilk kaydı gerçekleştirin:
git init git add . git commit -m "Initial commit"
  1. Kodunuzu barındıracak bir depo oluşturun:
gcloud source repos create sample-app Not: "You may be billed for this repository." mesajını görmezden gelebilirsiniz. git config credential.helper gcloud.sh
  1. Yeni oluşturulan deponuzu remote olarak ekleyin:
export PROJECT=$(gcloud info --format='value(config.project)') git remote add origin https://source.developers.google.com/p/$PROJECT/r/sample-app
  1. Kodunuzu yeni deponun ana dalına aktarın:
git push origin master
  1. Gezinme Menüsü > Source Repositories'i (Kaynak Kodu Depoları) tıklayarak kaynak kodunuzu Console'da görebildiğinizi kontrol edin.

  2. sample-app'i tıklayın.

Derleme tetikleyicilerinizi yapılandırma

Git etiketlerini kaynak deponuza her aktarışınızda Docker görüntüsü oluşturup aktarmasını sağlamak için Container Builder'ı yapılandırın. Container Builder kaynak kodunuzu otomatik olarak kontrol eder, deponuzdaki Dockerfile'ı kullanarak Docker görüntüsü oluşturur ve bu görüntüyü Google Cloud Container Registry'e gönderir.

Container Builder akış diyagramı

  1. Cloud Platform Console'da Gezinme menüsü > Cloud Build > Triggers'ı (Tetikleyiciler) tıklayın.

  2. Create trigger'ı (Tetikleyici oluştur) tıklayın.

  3. Aşağıdaki tetikleyici ayarlarını yapın:

  • Name: sample-app-tags
  • Event: Push new tag
  • Yeni oluşturulan sample-app deposunu seçin.
  • Tag: .*(any tag)
  • Configuration: Cloud Build configuration file (yaml or json)
  • Cloud Build configuration file location: /cloudbuild.yaml
  1. CREATE'ı (OLUŞTUR) tıklayın.

CreateTrigger-1.png

Bundan sonra, kaynak kodu deponuza Git etiketi (.*) aktardığınızda Container Builder, uygulamanızı Docker görüntüsü şeklinde otomatik olarak oluşturur ve Container Registry'e aktarır.

Kubernetes manifest'lerini Spinnaker'da kullanmaya hazırlama

Spinnaker'ın Kubernetes manifest'lerinizi kümelerinize dağıtabilmesi için bunlara erişmesi gerekir. Bu bölümde Cloud Build'de CI sürecinde manifest'lerinizle doldurulacak Cloud Storage paketini oluşturma yolları açıklanacaktır. Manifest'leriniz Cloud Storage'a aktarıldıktan sonra Spinnaker bunları indirip ardışık düzen yürütülürken uygulayabilir.

  1. Paketi oluşturun:
export PROJECT=$(gcloud info --format='value(config.project)') gsutil mb -l {{{project_0.default_region|Region}}} gs://$PROJECT-kubernetes-manifests
  1. Manifest'lerinizin geçmişini de görebilmek için pakette sürüm oluşturmayı etkinleştirin:
gsutil versioning set on gs://$PROJECT-kubernetes-manifests
  1. Kubernetes dağıtım manifest'leriniz için doğru proje kimliğini girin:
sed -i s/PROJECT/$PROJECT/g k8s/deployments/*
  1. Depoda yapılan değişiklikleri kaydedin:
git commit -a -m "Set project ID"

Görüntünüzü oluşturma

Aşağıdaki adımları uygulayarak ilk görüntünüzü aktarın:

  1. Cloud Shell'de, sample-app dizininde Git etiketi oluşturun:
git tag v1.0.0
  1. Etiketi aktarın:
git push --tags

Çıkış:

To https://source.developers.google.com/p/qwiklabs-gcp-ddf2925f84de0b16/r/sample-app * [new tag] v1.0.0 -> v1.0.0
  1. Cloud Console'a gidin. Cloud Build'in sol bölmesindeki History'i (Geçmiş) tıklayarak oluşturmanın tetiklenip tetiklenmediğine bakın. Tetiklenmediyse tetikleyicinin önceki bölümde gösterilen adımlara göre doğru şekilde yapılandırıldığından emin olun.

Sonraki bölüme geçmeden önce bu sayfada kalın ve oluşturmanın tamamlanmasını bekleyin.

Not: Build kodu başarısız olursa Build ID'yi tıklayarak Build details (Oluşturma ayrıntıları) sayfasını açıp RETRY'ı (YENİDEN DENE) tıklayın.

Tamamlanan görevi test etme

Tamamladığınız görevi doğrulamak için İlerleme durumumu kontrol et'i tıklayın. Docker görüntüsünü başarıyla oluşturduysanız bir değerlendirme puanı görürsünüz.

Docker görüntüsü oluşturma

5. görev: Dağıtım ardışık düzeninizi yapılandırma

Artık görüntüleriniz otomatik olarak oluşturuluyor. Bunları Kubernetes kümesine dağıtmanın sırası geldi.

Entegrasyon testi yapmak için görüntüleri ölçeği azaltılmış bir ortama dağıtacaksınız. Entegrasyon testlerinde başarılı olduktan sonra, kodu üretim hizmetlerine dağıtmak için değişiklikleri manuel olarak onaylamanız gerekir.

Spinnaker'ı yönetmek için spin CLI'ı indirme

spin, Spinnaker'ın uygulamalarını ve ardışık düzenlerini yönetmek için kullanılan bir komut satırı yardımcı programıdır.

  1. spin'in 1.14.0 sürümünü indirin:
curl -LO https://storage.googleapis.com/spinnaker-artifacts/spin/1.14.0/linux/amd64/spin
  1. spin'i yürütülebilir hale getirin:
chmod +x spin

Dağıtım ardışık düzenini oluşturma

  1. Spinnaker'da "sample" adlı bir uygulama oluşturmak için spin'i kullanın. Spinnaker'da uygulama sahibinin e-postasını belirleyin:
./spin application save --application-name sample \ --owner-email "$(gcloud config get-value core/account)" \ --cloud-providers kubernetes \ --gate-endpoint http://localhost:8080/gate

Sürekli teslim ardışık düzenini oluşturmaya geçebiliriz. Bu eğitimde ardışık düzen, "v" önekli bir etiketi olan Docker görüntüsü Container Registry'nize aktarıldığında tespit edecek şekilde yapılandırılmıştır.

  1. sample-app kaynak kodu dizininizde aşağıdaki komutu çalıştırarak Spinnaker örneğinize örnek bir ardışık düzen yükleyin:
export PROJECT=$(gcloud info --format='value(config.project)') sed s/PROJECT/$PROJECT/g spinnaker/pipeline-deploy.json > pipeline.json ./spin pipeline save --gate-endpoint http://localhost:8080/gate -f pipeline.json

Ardışık düzeninizin yürütülmesini manuel olarak tetikleme ve görüntüleme

Oluşturduğunuz yapılandırma, bir Spinnaker ardışık düzenini tetiklemek için aktarılan yeni etiketlenmiş görüntülerden gelen bildirimleri kullanır. Önceki aşamada bir etiketi Cloud Source Repositories'e aktardınız ve Cloud Build tetiklenerek görüntünüzü oluşturup Container Registry'e aktardı. Ardışık düzeni doğrulamak için manually trigger (manuel olarak tetiklemeniz) gerekir.

  1. Spinnaker kullanıcı arayüzünüzü gösteren tarayıcı sekmenize geçin.

Sekmeyi bulmakta zorlanırsanız Cloud Shell pencerenizde Web Preview (Web önizlemesi) > Preview on Port 8080'yi (8080 bağlantı noktasında önizle) tıklayın.

  1. Yönetilen uygulamalarınızın listesini görmek için Spinnaker arayüzünde ekranın üstünde yer alan Applications'ı (Uygulamalar) tıklayın.

sample (örnek), kullanacağınız uygulamadır. sample görünmüyorsa Spinnaker'ın Applications sekmesini yenilemeyi deneyin.

  1. Uygulamanızın dağıtımını görmek için sample'ı tıklayın.

  2. Uygulamalarınızın ardışık düzen durumunu görüntülemek için Pipelines'ı (Ardışık düzenler) tıklayın.

  3. Start Manual Execution'ı (Manuel yürütmeyi başlat) tıklayıp "Select Pipeline"da (Ardışık düzen seç) Deploy (Dağıt) seçeneğini belirleyin ve ardışık düzeni ilk defa tetiklemek için Run'ı (Çalıştır) tıklayın.

  4. Ardışık düzenin ilerleme durumuyla alakalı daha fazla bilgi edinmek için Execution Details'i (Yürütme ayrıntıları) tıklayın.

İlerleme çubuğu, dağıtım ardışık düzeninin durumunu ve adımlarını gösterir.

İlerleme çubuğu

Çalışır durumda olan adımlar mavi renkle gösterilir. Başarıyla tamamlananlar yeşil, başarısız olanlar kırmızı görünür.

  1. İlgili ayrıntıları görmek için bir aşamayı tıklayın.

3-5 dakika içinde entegrasyon testi aşaması tamamlanır ve ardışık düzenin dağıtıma devam edebilmesi için manuel onay gerekir.

  1. Sarı "kişi" simgesinin üzerine gelip Continue'yu (Devam et) tıklayın.

Kullanıma sunma işleminiz, üretim ön ucu ve arka uç dağıtımlarıyla devam eder. İşlem birkaç dakika içinde tamamlanır.

  1. Uygulamayı görüntülemek için Spinnaker arayüzünün üst kısmındaki Infrastructure (Altyapı) > Load Balancers'ı (Yük Dengeleyiciler) tıklayın.

  2. Yük dengeleyici listesini kaydırarak service sample-frontend-production'ın altından Default'u (Varsayılan) seçin. Yük dengeleyicinizle alakalı ayrıntıları sayfanın sağ tarafından görebilirsiniz. Ayrıntıları göremiyorsanız tarayıcınızı yenilemeniz gerekebilir.

  3. Sağdaki ayrıntı penceresinde aşağı kaydırın. Ingress (Giriş) kısmında IP adresinin yanında yer alan pano düğmesini tıklayarak uygulamanızın IP adresini kopyalayın. Spinnaker arayüzündeki giriş IP bağlantısı, uygulama HTTP kullanacak şekilde yapılandırılmış olsa da varsayılan olarak HTTPS kullanıyor olabilir.

Ayrıntılar paneli

  1. Uygulamayı görüntülemek için adresi yeni bir tarayıcı sekmesinde açın. Canary sürümünün gösterildiğini görebilirsiniz. Sayfayı yenilediğinizde üretim sürümünü de göreceksiniz.

Uygulamanın üretim sürümü

Ardışık düzeni uygulamanızı derleme, test etme ve dağıtma işlemlerini yapmak üzere manuel olarak tetiklediniz.

Tamamlanan görevi test etme

Tamamladığınız görevi doğrulamak için İlerleme durumumu kontrol et'i tıklayın. Hizmet yük dengeleyicilerini başarıyla oluşturduysanız bir değerlendirme puanı görürsünüz.

Hizmet yük dengeleyicilerini oluşturma

Tamamlanan görevi test etme

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

Görüntüyü üretime dağıtma

6. görev: Ardışık düzeni kod değişiklikleriyle tetikleme

Kodunuzda değişiklik yaparak, Git etiketi aktararak ve ardışık düzenin çalışmasını izleyerek ardışık düzeninizi baştan sona test etmenin zamanı geldi. "v" ile başlayan bir Git etiketini aktararak Container Builder'ın yeni bir Docker görüntüsü oluşturmasını ve bunu Container Registry'e aktarmasını tetiklersiniz. Spinnaker yeni görüntünün etiketinin "v" ile başladığını tespit eder. Ardından ardışık düzeni tetikleyerek görüntünün canary'lere dağıtılmasını, test edilmesini ve aynı görüntünün dağıtımdaki tüm kapsüllerde kullanılmasını sağlar.

  1. sample-app dizininizde uygulamanın rengini turuncudan maviye değiştirin:
sed -i 's/orange/blue/g' cmd/gke-info/common-service.go
  1. Yaptığınız değişikliği etiketleyip kaynak kodu deposuna aktarın:
git commit -a -m "Change color to blue" git tag v1.0.1 git push --tags
  1. Console'da, Cloud Build > History (Geçmiş) bölümünde yeni derlemenin görünmesini bekleyin. Sayfanızı yenilemeniz gerekebilir. Sonraki aşamaya geçmeden önce yeni derlemenin tamamlanmasını bekleyin.
Not: Build başarısız olursa Build ID'yi ve ardından RETRY'ı (YENİDEN DENE) tıklayın.
  1. Spinnaker arayüzüne dönün ve Pipelines'ı tıklayarak (Ardışık düzenler) ardışık düzenin görüntüyü dağıtmaya başlamasını sağlayın. Otomatik olarak tetiklenen ardışık düzenin belirmesi birkaç dakika sürebilir. Sayfanızı yenilemeniz gerekebilir.

Spinnaker arayüzündeki Pipelines sekmesi

Tamamlanan görevi test etme

Tamamladığınız görevi doğrulamak için İlerleme durumumu kontrol et'i tıklayın. Kod değişiklikleriyle ardışık düzeni tetiklemeyi başardıysanız bir değerlendirme puanı görürsünüz.

Ardışık düzeni kod değişiklikleriyle tetikleme

7. görev: Canary dağıtımını gözlemleme

  1. Dağıtım üretimde kullanıma sunulmayı beklediği için durakladığında, çalışan uygulamanızın gösterildiği web sayfasına dönün ve uygulamanızın yer aldığı sekmeyi yenilemeye başlayın. Arka uçlarınızdan dördü uygulamanızın önceki sürümünü çalıştırırken sadece bir arka uç canary'i çalıştırır. Uygulamanızın yeni, mavi renkli sürümünü her beş yenilemede bir görebilirsiniz.

  2. Ardışık düzen işlemlerini tamamladığında uygulamanız aşağıdaki ekran görüntüsündeki gibi görünür. Kod değişikliğiniz nedeniyle renk maviye döndü ve Version (Sürüm) alanında artık canary yer alıyor.

Mavi canary sürümü

Uygulamanızı başarıyla tüm üretim ortamında kullanıma sundunuz.

  1. Dilerseniz önceki kaydınıza dönerek bu değişikliği geri çekebilirsiniz. Geri çekme işlemi yeni bir etiket (v1.0.2) ekler ve etiketi, v1.0.1'i dağıtmak için kullandığınız ardışık düzene geri aktarır.
git revert v1.0.1

Sırasıyla CTRL+O, ENTER ve CTRL+X tuşlarına basın.

git tag v1.0.2 git push --tags
  1. Derleme ve ardışık düzen işlemleri tamamlandığında, Infrastructure (Altyapı )> Load Balancers'ı (Yük Dengeleyiciler) ve ardından service sample-frontend-production Default'u (Varsayılan) tıklayarak giriş IP adresini kopyalayarak yeni bir sekmede açın.

Uygulamanız tekrar turuncuya döndü ve production sürüm numarası görülüyor.

Arayüzün turuncu üretim sürümü

Tebrikler!

Spinnaker ve Kubernetes Engine ile Sürekli Teslim Ardışık Düzenleri laboratuvarını başarıyla tamamladınız.

Görevinizi tamamlama

Bu yönlendirmesiz öğrenim laboratuvarı, Google Cloud Çözümleri 1: Altyapınızı ölçeklendirme 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 hale 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 Google Kubernetes Engine'de özel oyun sunucularını çalıştırma göreviyle devam edin.

Sonraki adımlar / Daha fazla bilgi

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: 21 Kasım 2023

Laboratuvarın son test edilme tarihi: 21 Kasım 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.