1. Genel Bakış
Bu laboratuvar, container mimarisine alınmış bir ortamda NodeJS uygulamaları geliştirmekten sorumlu yazılım mühendislerinin geliştirme iş akışını kolaylaştırmak için tasarlanmış özellikleri ve olanakları gösterir. Tipik container geliştirme yöntemleri, kullanıcının container ayrıntılarını ve container derleme sürecini anlamasını gerektirir. Buna ek olarak, geliştiricilerin uzak ortamlarda uygulamalarını test etmek ve hata ayıklamak için genellikle akışlarını kesmeleri, IDE'lerinden çıkmaları gerekir. Geliştiriciler, bu eğitimde bahsedilen araçlar ve teknolojiler sayesinde, IDE'lerinden ayrılmadan container mimarisine alınmış uygulamalarla verimli bir şekilde çalışabilirler.
Öğrenecekleriniz
Bu laboratuvarda, Google Cloud'da container'larla geliştirme yapmayla ilgili şu yöntemleri öğreneceksiniz:
- Başlangıç Nodejs uygulaması oluşturma
- Container geliştirme için Nodejs uygulamasını yapılandırma
- Basit bir CRUD Dinlenme Hizmeti'ni kodlama
- GKE'ye dağıtma
- Hata durumunda hata ayıklama
- Kesme noktası / günlük kayıtlarını kullanma
- Değişiklikleri GKE'ye doğrudan dağıtım
- İsteğe bağlı: Arka uç kalıcılığı için CloudSQL entegrasyonu
2. Kurulum ve Gereksinimler
Kendi hızınızda ortam kurulumu
- Google Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.
- Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. İstediğiniz zaman güncelleyebilirsiniz.
- Proje Kimliği, tüm Google Cloud projelerinde benzersizdir ve değiştirilemez (belirlendikten sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de proje kimliğini (genellikle
PROJECT_ID
olarak tanımlanır) referans almanız gerekir. Oluşturulan kimliği beğenmezseniz rastgele bir kimlik daha oluşturabilirsiniz. Alternatif olarak, kendi ölçümünüzü deneyip mevcut olup olmadığına bakabilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince kalır. - Bilginiz için bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
- Sonraki adımda, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırma yapılmaması için kaynakları kapatmak isterseniz oluşturduğunuz kaynakları silebilir veya projenin tamamını silebilirsiniz. Yeni Google Cloud kullanıcıları, 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.
Cloudshell Düzenleyiciyi Başlat
Bu laboratuvar, Google Cloud Shell Düzenleyici ile birlikte kullanılmak üzere tasarlanmış ve test edilmiştir. Düzenleyiciye erişmek için
- https://console.cloud.google.com adresinden Google projenize erişin.
- Sağ üst köşedeki Cloud Shell düzenleyici simgesini tıklayın.
- Pencerenizin alt kısmında yeni bir bölme açılır
- Düzenleyiciyi Aç düğmesini tıklayın.
- Düzenleyici, sağ tarafta bir gezgin, orta alanda ise düzenleyici açılır.
- Ekranın alt kısmında da bir terminal bölmesi bulunmalıdır
- Terminal AÇIK DEĞİLSE yeni bir terminal penceresi açmak için "ctrl+"" tuş kombinasyonunu kullanın.
gcloud'u kurun
Cloud Shell'de proje kimliğinizi ve uygulamanızı dağıtmak istediğiniz bölgeyi ayarlayın. Bunları PROJECT_ID
ve REGION
değişkenleri olarak kaydedin.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
Bu laboratuvarda kullanılan altyapıyı sağlayın
Bu laboratuvarda GKE'ye kod dağıtacak ve CloudSQL veritabanında depolanan verilere erişeceksiniz. Aşağıdaki kurulum komut dosyası, bu altyapıyı sizin için hazırlar.
- Kurulum komut dosyasını indirin ve yürütülebilir hale getirin.
wget https://raw.githubusercontent.com/GoogleCloudPlatform/container-developer-workshop/main/labs/nodejs/setup_with_cw.sh
chmod +x setup_with_cw.sh
setup_with_cw.sh
dosyasını açın ve şu anda CHANGEME olarak ayarlanmış şifrelerin değerlerini düzenleyin- Bu laboratuvarda kullanacağınız GKE kümesini ve CloudSQL veritabanını desteklemek için kurulum komut dosyasını çalıştırın
./setup_with_cw.sh &
Cloud Workstations Kümesi
- Cloud Console'da Cloud Workstations'ı açın. Kümenin
READY
durumunda olmasını bekleyin.
İş İstasyonları Yapılandırması Oluşturma
- Cloud Shell oturumunuzun bağlantısı kesildiyse "Yeniden bağlan"ı tıklayın Ardından proje kimliğini ayarlamak için gcloud cli komutunu çalıştırın. Komutu çalıştırmadan önce aşağıdaki örnek proje kimliğini qwiklabs proje kimliğinizle değiştirin.
gcloud config set project qwiklabs-gcp-project-id
- Cloud Workstations yapılandırması oluşturmak için aşağıdaki komut dosyasını indirip terminalde çalıştırın.
wget https://raw.githubusercontent.com/GoogleCloudPlatform/container-developer-workshop/main/labs/nodejs/workstation_config_setup.sh
chmod +x workstation_config_setup.sh
./workstation_config_setup.sh
- Yapılandırmalar bölümündeki sonuçları doğrulayın. READY durumuna geçiş 2 dakika sürer.
- Console'da Cloud Workstations'ı açın ve yeni örnek oluşturun.
- Adı
my-workstation
olarak değiştirin ve mevcut yapılandırmayı seçin:codeoss-js
.
- İş İstasyonları bölümündeki sonuçları doğrulayın.
İş İstasyonunu Başlat
- İş istasyonunu başlatın ve başlatın. İş istasyonunun başlatılması birkaç dakika sürer.
- Adres çubuğundaki simgeyi tıklayarak 3. taraf çerezlerine izin verin.
- "Site çalışmıyor mu?" seçeneğini tıklayın.
- "Çerezlere izin ver"i tıklayın.
- İş istasyonu açıldığında Code OSS IDE görünür. "Tamamlandı Olarak İşaretle"yi tıklayın Başlarken sayfasında iş istasyonu IDE'sini
3. Yeni bir Nodejs başlangıç uygulaması oluşturma
Bu bölümde yeni bir Nodejs uygulaması oluşturacaksınız.
- Yeni bir Terminal açın.
- Cloud Shell'de
mynodejsapp
adında yeni bir dizin oluşturun
mkdir mynodejsapp
Bu mesajı görürseniz İzin Ver düğmesini tıklayın. Böylece, kopyalayıp iş istasyonuna yapıştırabilirsiniz.
- Bu dizine geçin ve çalışma alanı olarak açın. Bu işlem, yeni oluşturulan klasörde bir çalışma alanı yapılandırması oluşturarak düzenleyiciyi yeniden yükler.
cd mynodejsapp && code-oss-cloud-workstations -r --folder-uri="$PWD"
- Tekrar yeni bir terminal açın. NVM kullanarak Düğüm ve NPM'yi yükleyin.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
# This loads nvm bash_completion
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
nvm install stable
nvm alias default stable
4. Yeni bir başlangıç uygulaması oluşturun
- Uygulamayı başlatma
Aşağıdaki komutu çalıştırarak package.json
dosyası oluşturma
npm init
Choose the `entry point: (index.js) src/index.js` and leave default values for the rest of the parameters. This will create the `package.json` file with following contents
{ "name": "mynodejsapp", "version": "1.0.0", "description": "", "main": "src/index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }
- Giriş Noktası Ekleme
package.json
dosyasını IDE'de açıp, başlat komutunu "start": "node src/index.js",
komut dosyasına dahil edecek şekilde düzenleyin. Değişiklikten sonra, komut dosyaları aşağıdaki kod snippet'i gibi görünmelidir:
"scripts": {
"start": "node src/index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
- Ekspres Bağımlılığı Ekleyin
Ekleyeceğimiz kod express
adresini de kullandığından bu bağımlılığı bu package.json
dosyasına ekleyelim. Bu nedenle, tüm değişikliklerden sonra package.json
dosyası aşağıda gösterildiği gibi olmalıdır.
{
"name": "mynodejsapp",
"version": "1.0.0",
"description": "",
"main": "src/index.js",
"scripts": {
"start": "node src/index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.3"
}
}
- index.js dosyasını oluşturma
Gezgin görünümünde Yeni Klasör’ü seçerek src adında bir kaynak dizin oluşturun.
src/index.js dosyası oluşturun
aşağıdaki kodla
const express = require('express');
const app = express();
const PORT = 8080;
app.get('/', (req, res) => {
var message="Greetings from Node";
res.send({ message: message });
});
app.listen(PORT, () => {
console.log(`Server running at: http://localhost:${PORT}/`);
});
PORT değerinin 8080
değerine ayarlandığına dikkat edin
Manifest Oluşturma
Skaffold, container geliştirmeyi basitleştirmek için entegre araçlar sunar. Bu adımda Skaffold'u ilk kullanıma hazırlayarak temel kubernetes YAML dosyalarını otomatik olarak oluşturursunuz. İşlemi başlatmak için aşağıdaki komutu yürütün.
Terminalde aşağıdaki komutu yürütün
skaffold init --generate-manifests
İstendiğinde:
- Bağlantı noktası için 8080 girin
- Yapılandırmayı kaydetmek için y yazın
Çalışma alanı görünümüne şu iki dosya eklendi: skaffold.yaml
ve deployment.yaml
Uygulama adını güncelleyin
Yapılandırmada yer alan varsayılan değerler şu anda uygulamanızın adıyla eşleşmemektedir. Dosyaları, varsayılan değerler yerine uygulama adınızı referans alacak şekilde güncelleyin.
- Skaffold yapılandırmasındaki girişleri değiştir
skaffold.yaml
uygulamasını aç- Şu anda
package-json-image
olarak ayarlanmış olan resim adını seçin - Sağ tıklayın ve Tüm Tekrarları Değiştir'i seçin
- Yeni adı
mynodejsapp
olarak yazın
- Kubernetes yapılandırmasındaki girişleri değiştir
deployment.yaml
dosyasını aç- Şu anda
package-json-image
olarak ayarlanmış olan resim adını seçin - Sağ tıklayın ve Tüm Tekrarları Değiştir'i seçin
- Yeni adı
mynodejsapp
olarak yazın
skaffold.yaml
dosyasındaki build
bölümünün, uygulamayı container mimarisine almak için buildpacks
kullandığına dikkat edin. Bu kodda Dockerfile yoktur ve geliştiricinin bu uygulamayı container mimarisine almak için Docker hakkında bilgi sahibi olması gerekmez.
Ayrıca, çalışır durumda senkronizasyon, bu katman yapılandırması tarafından düzenleyici ile çalışan kapsayıcı arasında otomatik olarak etkinleştirilir. Çalışır durumda senkronizasyonu etkinleştirmek için ek yapılandırma gerekmez.
5. Geliştirme sürecinde rehberlik etme
Bu bölümde, temel işlemleri öğrenmek ve başlangıç uygulamanızın yapılandırmasını ve kurulumunu doğrulamak için Cloud Code eklentisini kullanma konusunda birkaç adım öğreneceksiniz.
Cloud Code, skaffold ile entegre olarak geliştirme sürecinizi kolaylaştırır. Aşağıdaki adımlarda GKE'ye dağıtım yaptığınızda Cloud Code ve Skaffold, container görüntünüzü otomatik olarak derler, Container Registry'ye aktarır ve ardından uygulamanızı GKE'ye dağıtır. Bu, perde arkasında olup ayrıntıları geliştirici akışından uzaklaştırarak gerçekleşir. Cloud Code, container tabanlı geliştirme için geleneksel hata ayıklama ve hotspot özellikleri sağlayarak geliştirme sürecinizi de iyileştirir.
Google Cloud'da oturum açma
- Cloud Code simgesini tıklayın ve "Sign in to Google Cloud" (Google Cloud'da oturum aç) seçeneğini belirleyin:
- "Oturum açmak için devam et"i tıklayın.
- Terminal'de çıkışı kontrol edin ve bağlantıyı açın:
- Qwiklabs öğrenci kimlik bilgilerinizle giriş yapın.
- "İzin Ver"i seçin:
- Doğrulama kodunu kopyalayın ve Workstation sekmesine dönün.
- Doğrulama kodunu yapıştırın ve Enter tuşuna basın.
Kubernetes Kümesi Ekle
- Küme Ekle
- Google Kubernetes Engine'i seçin:
- Proje seçin.
- "mycluster"ı seçin ilk kurulumda oluşturulan bir feed'dir.
- Bu küme, Cloud Code altındaki Kubernetes kümeleri listesinde gösterilir. Buradan kümeye göz atabilir ve kümeyi keşfedebilirsiniz.
gcloud cli'yi kullanarak geçerli proje kimliğini ayarlayın
- Qwiklabs sayfasından bu laboratuvarın proje kimliğini kopyalayın.
- Proje kimliğini ayarlamak için terminalden gcloud cli komutunu çalıştırın. Komutu çalıştırmadan önce örnek proje kimliğini değiştirin. Aşağıdaki komutu çalıştırmadan önce proje kimliğini değiştirin.
gcloud config set project qwiklabs-gcp-project-id
Kubernetes'e dağıtma
- Cloud Shell Düzenleyici'nin alt kısmındaki bölmeden Cloud Code'u seçin.
- Üst kısımda GELİŞTİRME OTURUMLARI bölümünde gösterilen panelde Kubernetes'te çalıştır'ı seçin. İstenirse geçerli Kubernetes bağlamını kullanmak için Evet'i seçin.
- Komutu ilk kez çalıştırdığınızda ekranın üst kısmında geçerli Kubernetes bağlamını kullanmak isteyip istemediğinizi soran bir istem görünür, "Evet"i seçin geçerli bağlamı kabul edip kullanmak.
- Ardından, hangi container kayıt defterinin kullanılacağını soran bir istem gösterilir. Sağlanan varsayılan değeri kabul etmek için Enter tuşuna basın
- İlerleme durumunu ve bildirimleri görüntülemek için alt bölmede Çıkış sekmesini ve açılır listeden Kubernetes: Run/Hata Ayıklama'yı seçin
- "Kubernetes: Çalıştır/Hata Ayıklama - Ayrıntılı" seçeneğini belirleyin "sağdaki kanal açılır menüsünü tıklayıp ek ayrıntıları ve kapsayıcılardan canlı yayınlanan günlükleri görüntüleyin"
- "Kubernetes: Çalıştır/Hata Ayıklama"yı seçerek basitleştirilmiş görünüme dönün açılır menüden
- Derleme ve testler tamamlandığında Çıkış sekmesinde
Resource deployment/mynodejsapp status completed successfully
görüntülenir ve bir URL listelenir: "Hizmet demo uygulamasından yönlendirilen URL: http://localhost:8080" - Cloud Code terminalinde çıkıştaki URL'nin (http://localhost:8080) üzerine gelin. Ardından, görüntülenen araç ipucunda Bağlantıyı Takip Et'i seçin.
Yanıt şöyle olacaktır:
{"message":"Greetings from Node"}
Sıcak Yeniden Yükle
src/index.js
adresine gidiş rotasını izle.'Hello from Node'
için karşılama mesajının kodunu düzenleyin
İzleyicinin, Output
penceresinde, Kubernetes: Run/Debug
görünümünde, güncellenen dosyaları Kubernetes'teki kapsayıcıyla senkronize ettiğine hemen dikkat edin.
Update initiated File sync started for 1 files for gcr.io/myproject/mynodejsapp:latest@sha256:f554756b3b4d6c301c4b26ef96102227cfa2833270db56241248ae42baa1971a File sync succeeded for 1 files for gcr.io/myproject/mynodejsapp:latest@sha256:f554756b3b4d6c301c4b26ef96102227cfa2833270db56241248ae42baa1971a Update succeeded
Kubernetes: Run/Debug - Detailed
görünümüne geçerseniz dosya değişikliklerini algıladığını ve düğümü yeniden başlattığını fark edersiniz
files modified: [src/index.js] Copying files:map[src/index.js:[/workspace/src/index.js]]togcr.io/myproject/mynodejsapp:latest@sha256:f554756b3b4d6c301c4b26ef96102227cfa2833270db56241248ae42baa1971a Syncing 1 files for gcr.io/myproject/mynodejsapp:latest@sha256:f554756b3b4d6c301c4b26ef96102227cfa2833270db56241248ae42baa1971a Watching for changes... [mynodejsapp] [mynodejsapp]> mynodejsapp@1.0.0 start /workspace [mynodejsapp]> node src/index.js [mynodejsapp] [mynodejsapp]Server running at: http://localhost:8080/
- Güncellenen sonuçları görmek için tarayıcınızı yenileyin.
Hata ayıklama
- Hata Ayıklama görünümüne gidin ve mevcut iş parçacığını () durdurun.
- Uygulamayı
debug
modunda çalıştırmak için alt menüdeCloud Code
simgesini tıklayın veDebug on Kubernetes
seçeneğini belirleyin.
Output
penceresininKubernetes Run/Debug - Detailed
görünümünde, skaffold'un bu uygulamayı hata ayıklama modunda dağıttığına dikkat edin.- Uygulamanın derlenmesi ve dağıtılması birkaç dakika sürer. Bu sefer eklenmiş bir hata ayıklayıcı görürsünüz.
Port forwarding pod/mynodejsapp-6bbcf847cd-vqr6v in namespace default, remote port 9229 -> http://127.0.0.1:9229 [mynodejsapp]Debugger attached.
- Alttaki durum çubuğunun rengi maviden turuncuya dönüşür ve bu da Hata Ayıklama modunda olduğunu gösterir.
Kubernetes Run/Debug
görünümünde, Hata Ayıklanabilir bir container'ın başlatıldığına dikkat edin
**************URLs***************** Forwarded URL from service mynodejsapp-service: http://localhost:8080 Debuggable container started pod/mynodejsapp-deployment-6bc7598798-xl9kj:mynodejsapp (default) Update succeeded ***********************************
Kesme noktalarından yararlanma
src/index.js
uygulamasını açınvar message="Hello from Node";
yazan ifadeyi bulun- Satır numarasının solundaki boş alanı tıklayarak bu satıra bir ayrılma noktası ekleyin. Kesme noktasının ayarlandığını belirten kırmızı bir gösterge görünür.
- Tarayıcınızı yeniden yükleyin. Hata ayıklayıcının işlemi kesme noktasında durdurduğunu ve GKE'de uzaktan çalışan uygulamanın değişkenlerini ve durumunu incelemenize olanak tanıdığını unutmayın
"message"
değişkenini bulana kadar değişkenler bölümünü tıklayın.- Üzerine git'e basarak satırı yürütün
"message"
değişkeninin mevcut değerinin"Hello from Node"
olarak değiştiğini gözlemleyin- "target" değişken adını çift tıklayın pop-up'ta değeri
"Hi from Node"
gibi farklı bir değerle değiştirin. - Hata ayıklama kontrol panelinde Devam düğmesini tıklayın
- Az önce girdiğiniz güncellenmiş değeri gösteren yanıtı tarayıcınızda inceleyin.
- "Hata ayıklama"yı durdurma kesme noktasını tıklayın.
6. Basit bir CRUD Dinlenme Hizmeti geliştirme
Bu noktada uygulamanız, container mimarisine alınmış geliştirme için tamamen yapılandırıldı ve Cloud Code ile temel geliştirme iş akışını öğrendiniz. Aşağıdaki bölümlerde, Google Cloud'da yönetilen bir veritabanına bağlanan REST hizmet uç noktaları ekleyerek öğrendiklerinizi uygulayacaksınız.
Bağımlılıkları Yapılandırma
Uygulama kodu, geri kalan hizmet verilerini saklamak için bir veritabanı kullanır. package.json
dosyasına aşağıdakini ekleyerek bağımlılıkların mevcut olduğundan emin olun:
- Postgres CRUD uygulaması oluşturmak için
package.json
dosyasına iki bağımlılık dahapg
vesequelize
ekleyin. Değişiklikleri yüklediğinizde bağımlılıklar bölümü aşağıdaki gibi görünür.
"dependencies": {
"express": "^4.17.3",
"pg": "^8.8.0",
"sequelize": "^6.25.7"
}
REST hizmetini kodlama
- CRUD uygulama kodunu bu uygulamaya ekleyin
wget -O app.zip https://github.com/GoogleCloudPlatform/container-developer-workshop/raw/main/labs/nodejs/app.zip
unzip app.zip
Bu kodda
item
varlık modeline sahip models klasörü- CRUD işlemlerini gerçekleştiren kodu içeren controllers klasörü
- Belirli URL kalıplarını farklı çağrılara yönlendiren routes klasörü
- Veritabanı bağlantı ayrıntılarını içeren config klasörü
db.config.js
dosyasındaki veritabanı yapılandırmasının, veritabanına bağlanmak için sağlanması gereken ortam değişkenlerini ifade ettiğini unutmayın. Ayrıca gelen isteği URL kodlaması için ayrıştırmanız gerekir.- Ana JavaScript dosyanızdaki CRUD koduna,
app.listen(PORT, () => {
ile başlayan son bölümden hemen önce bağlanabilmek için aşağıdaki kod snippet'inisrc/index.js
bölümüne ekleyin.
const bodyParser = require('body-parser')
app.use(bodyParser.json())
app.use(
bodyParser.urlencoded({
extended: true,
})
)
const db = require("../app/models");
db.sequelize.sync();
require("../app/routes/item.routes")(app);
- Veritabanı bağlantı bilgilerini sağlamak için ortam değişkenlerini eklemek üzere
deployment.yaml
dosyasındaki dağıtımı düzenleyin.
Dosyanın sonundaki spesifikasyon girişini aşağıdaki tanımla eşleşecek şekilde güncelleyin
spec:
containers:
- name: mynodejsapp
image: mynodejsapp
env:
- name: DB_HOST
value: ${DB_INSTANCE_IP}
- name: DB_PORT
value: "5432"
- name: DB_USER
valueFrom:
secretKeyRef:
name: gke-cloud-sql-secrets
key: username
- name: DB_PASS
valueFrom:
secretKeyRef:
name: gke-cloud-sql-secrets
key: password
- name: DB_NAME
valueFrom:
secretKeyRef:
name: gke-cloud-sql-secrets
key: database
- DB_HOST değerini Veritabanınızın adresiyle değiştirin
export DB_INSTANCE_IP=$(gcloud sql instances describe mytest-instance \
--format=json | jq \
--raw-output ".ipAddresses[].ipAddress")
envsubst < deployment.yaml > deployment.new && mv deployment.new deployment.yaml
Uygulamayı Dağıtma ve Doğrulama
- Cloud Shell Düzenleyici'nin alt kısmındaki bölmede
Cloud Code
simgesini ve ardından ekranın üst kısmındakiDebug on Kubernetes
öğesini seçin. - Derleme ve testler tamamlandığında Çıkış sekmesinde
Resource deployment/mynodejsapp status completed successfully
görüntülenir ve bir URL listelenir: "mynodejsapp hizmetinden yönlendirilen URL: http://localhost:8080" - Birkaç öğe ekleyin.
Cloudshell Terminal'den aşağıdaki komutları çalıştırın
URL=localhost:8080
curl -X POST $URL/items -d '{"itemName":"Body Spray", "itemPrice":3.2}' -H "Content-Type: application/json"
curl -X POST $URL/items -d '{"itemName":"Nail Cutter", "itemPrice":2.5}' -H "Content-Type: application/json"
- Tarayıcıda $URL/items çalıştırarak GET URL'sini test edin. Curl işlemini komut satırından da çalıştırabilirsiniz
curl -X GET $URL/items
- Test Silme: Şimdi aşağıdaki komutu çalıştırarak bir öğeyi silmeyi deneyin. Gerekirse item-id değerini değiştirin.
curl -X DELETE $URL/items/1
This throws an error message
{"message":"Could not delete Item with id=[object Object]"}
Sorunu belirleme ve düzeltme
- Uygulama Hata Ayıklama modunda çalışıyor. Bu nedenle, sorunu bulmak için ayrılma noktalarını kullanın. Aşağıda bazı ipuçları verilmiştir:
- DELETE ile ilgili bir sorun olduğunun farkındayız çünkü bu komut istenen sonucu döndürmüyor. Dolayısıyla, ayrılma noktasını
itemcontroller.js
->exports.delete
yönteminde ayarlarsınız. - Yürütmeyi adım adım çalıştırın ve sol penceredeki yerel değişkenlerin değerlerini gözlemlemek için her adımdaki değişkenleri izleyin.
request.params
gibi belirli değerleri gözlemlemek için bu değişkeni İzleme penceresine ekleyin.
id
öğesine atanan değerinundefined
olduğuna dikkat edin. Sorunu düzeltmek için kodu değiştirin.
Düzeltilmiş kod snippet'i şöyle görünür.
// Delete a Item with the specified id in the request exports.delete = (req, res) => { const id = req.params.id;
- Uygulama yeniden başlatıldıktan sonra, silmeyi deneyerek tekrar test edin.
- Hata ayıklama araç çubuğundaki kırmızı kare simgesini tıklayarak hata ayıklama oturumunu durdurun
7. Temizleme
Tebrikler! Bu laboratuvarda, sıfırdan yeni bir Nodejs uygulaması oluşturdunuz ve bu uygulamayı container'larla etkin dağıtım modunda çalışacak şekilde yapılandırdınız. Ardından geleneksel uygulama yığınlarında bulunan geliştirici akışını izleyerek uygulamanızı uzak bir GKE kümesine dağıttınız ve hatalarını ayıkladınız.
Laboratuvarı tamamladıktan sonra yer açmak için:
- Laboratuvarda kullanılan dosyaları silme
cd ~ && rm -rf mynodejsapp && rm -f setup.sh
- İlgili tüm altyapı ve kaynakları kaldırmak için projeyi silin