Men-deploy aplikasi contoh Butik Online
Panduan ini menjelaskan cara menginstal aplikasi contoh Butik Online untuk mendemonstrasikan Cloud Service Mesh. Lihat panduan penyediaan jika Anda perlu menyediakan Cloud Service Mesh.
Mendownload dan men-deploy contoh
Untuk men-deploy aplikasi, Anda harus mendownload manifes Online Boutique
dari repo anthos-service-mesh-packages
menggunakan kpt terlebih dahulu. Aplikasi contoh Butik Online di
repo anthos-service-mesh-packages diubah dari kumpulan
manifes asli di repo
microservices-demo. Dengan mengikuti praktik terbaik, setiap layanan di-deploy di namespace terpisah
dengan akun layanan yang unik.
Instal
kptjika Anda belum melakukannya:gcloud components install kptDownload contoh menggunakan
kpt:kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/samples/online-boutique \ online-boutiqueOutput yang diharapkan
Package "online-boutique": Fetching https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages@main From https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages * branch main -> FETCH_HEAD Adding package "samples/online-boutique". Fetched 1 package(s).Buka direktori
online-boutique:cd online-boutiqueBuat namespace untuk aplikasi:
kubectl apply -f kubernetes-manifests/namespacesOutput yang diharapkan:
namespace/ad created namespace/cart created namespace/checkout created namespace/currency created namespace/email created namespace/frontend created namespace/loadgenerator created namespace/payment created namespace/product-catalog created namespace/recommendation created namespace/shipping createdDeploy sampel ke cluster.
Buat akun layanan dan deployment:
kubectl apply -f kubernetes-manifests/deploymentsOutput yang diharapkan:
serviceaccount/ad created deployment.apps/adservice created serviceaccount/cart created deployment.apps/cartservice created serviceaccount/checkout created deployment.apps/checkoutservice created serviceaccount/currency created deployment.apps/currencyservice created serviceaccount/email created deployment.apps/emailservice created serviceaccount/frontend created deployment.apps/frontend created serviceaccount/loadgenerator created deployment.apps/loadgenerator created serviceaccount/payment created deployment.apps/paymentservice created serviceaccount/product-catalog created deployment.apps/productcatalogservice created serviceaccount/recommendation created deployment.apps/recommendationservice created serviceaccount/shipping created deployment.apps/shippingservice createdBuat layanan:
kubectl apply -f kubernetes-manifests/servicesOutput yang diharapkan:
service/adservice created service/cartservice created service/checkoutservice created service/currencyservice created service/emailservice created service/frontend created service/frontend-external created service/paymentservice created service/productcatalogservice created service/recommendationservice created service/shippingservice createdBuat entri layanan:
kubectl apply -f istio-manifests/allow-egress-googleapis.yamlOutput yang diharapkan:
serviceentry.networking.istio.io/allow-egress-googleapis created serviceentry.networking.istio.io/allow-egress-google-metadata created
Mengaktifkan injeksi otomatis sidecar
Terapkan label injeksi default ke namespace aplikasi.
for ns in ad cart checkout currency email frontend loadgenerator \ payment product-catalog recommendation shipping; do kubectl label namespace $ns istio-injection=enabled --overwrite done;Output yang diharapkan:
namespace/ad labeled namespace/cart labeled namespace/checkout labeled namespace/currency labeled namespace/email labeled namespace/frontend labeled namespace/loadgenerator labeled namespace/payment labeled namespace/product-catalog labeled namespace/recommendation labeled namespace/shipping labeledJika Anda menggunakan Cloud Service Mesh terkelola dan men-deploy bidang data terkelola opsional, anotasikan namespace aplikasi sebagai berikut:
for ns in ad cart checkout currency email frontend loadgenerator \ payment product-catalog recommendation shipping; do kubectl annotate --overwrite namespace $ns mesh.cloud.google.com/proxy='{"managed":"true"}' done;Mulai ulang pod:
for ns in ad cart checkout currency email frontend loadgenerator \ payment product-catalog recommendation shipping; do kubectl rollout restart deployment -n ${ns} done;Output yang diharapkan:
deployment.apps/adservice restarted deployment.apps/cartservice restarted deployment.apps/checkoutservice restarted deployment.apps/currencyservice restarted deployment.apps/emailservice restarted deployment.apps/frontend restarted deployment.apps/loadgenerator restarted deployment.apps/paymentservice restarted deployment.apps/productcatalogservice restarted deployment.apps/recommendationservice restarted deployment.apps/shippingservice restarted
Mengekspos dan mengakses aplikasi
Cara mengekspos aplikasi di luar mesh bergantung pada apakah Anda men-deploy gateway ingress. Anda dapat memilih untuk mengekspos aplikasi menggunakan gateway ingress istio atau menggunakan Layanan Kubernetes.
Menggunakan gateway traffic masuk
Jika Anda men-deploy gateway ingress ke cluster seperti yang ditentukan dalam prasyarat, lakukan langkah-langkah berikut untuk mengekspos aplikasi menggunakan gateway.
Men-deploy
GatewaydanVirtualServiceuntuk layanan frontendkubectl apply -f istio-manifests/frontend-gateway.yamlOutput yang diharapkan:
gateway.networking.istio.io/frontend-gateway created virtualservice.networking.istio.io/frontend-ingress createdDapatkan alamat IP eksternal gateway masuk. Ganti placeholder dengan informasi berikut:
GATEWAY_SERVICE_NAME : Nama layanan gateway entrance. Jika Anda men-deploy gateway contoh tanpa perubahan, atau jika Anda men-deploy gateway ingress default, namanya adalah
istio-ingressgateway.GATEWAY_NAMESPACE: Namespace tempat Anda men-deploy gateway ingress. Jika Anda men-deploy gateway entrance default, namespace-nya adalah
istio-system.
kubectl get service GATEWAY_SERVICE_NAME -n GATEWAY_NAMESPACEOutputnya mirip dengan:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.19.247.233 35.239.7.64 80:31380/TCP,443:31390/TCP,31400:31400/TCP 27mDalam contoh ini, alamat IP gateway masuk adalah
35.239.7.64.Buka aplikasi di browser Anda untuk mengonfirmasi penginstalan:
http://EXTERNAL_IP/
Tidak ada gateway masuk
Jika Anda tidak men-deploy gateway traffic masuk atau memilih untuk mengekspos aplikasi menggunakan Layanan Kubernetes, lakukan langkah-langkah berikut:
Men-deploy layanan jenis
LoadBalanceruntuk mengekspos layanan frontendkubectl apply -f frontend-external.yamlTemukan alamat IP eksternal layanan
frontend-external:kubectl get service frontend-external -n frontendBuka aplikasi di browser Anda untuk mengonfirmasi penginstalan:
http://EXTERNAL_IP/
Anda dapat menjelajahi fitur kemampuan observasi Cloud Service Mesh di konsol Google Cloud . Perhatikan bahwa perlu waktu hingga 10 menit agar grafik topologi menampilkan layanan di mesh Anda.
Pembersihan
Sebelum menghapus Online Boutique, sebaiknya Anda mempelajari Cloud Service Mesh dengan contoh: mTLS, yang menggunakan contoh. Setelah selesai menjelajahi, gunakan perintah berikut untuk menghapus contoh Butik Online:
Hapus namespace aplikasi:
kubectl delete -f kubernetes-manifests/namespacesOutput yang diharapkan:
namespace "ad" deleted namespace "cart" deleted namespace "checkout" deleted namespace "currency" deleted namespace "email" deleted namespace "frontend" deleted namespace "loadgenerator" deleted namespace "payment" deleted namespace "product-catalog" deleted namespace "recommendation" deleted namespace "shipping" deletedHapus entri layanan:
kubectl delete -f istio-manifests/allow-egress-googleapis.yamlOutput yang diharapkan:
serviceentry.networking.istio.io "allow-egress-googleapis" deleted serviceentry.networking.istio.io "allow-egress-google-metadata" deleted