1. खास जानकारी
ASP.NET Core एक ओपन-सोर्स और क्रॉस-प्लैटफ़ॉर्म फ़्रेमवर्क है. इसका इस्तेमाल, C# प्रोग्रामिंग भाषा का इस्तेमाल करके, क्लाउड पर आधारित और इंटरनेट से कनेक्ट किए गए आधुनिक ऐप्लिकेशन बनाने के लिए किया जाता है.
Kubernetes एक ओपन-सोर्स सिस्टम है. इसका इस्तेमाल, कंटेनर वाले ऐप्लिकेशन को डिप्लॉय करने, उन्हें स्केल करने, और मैनेज करने की प्रोसेस को ऑटोमेट करने के लिए किया जाता है. Istio एक ओपन फ़्रेमवर्क है. इसका इस्तेमाल सेवाओं को कनेक्ट करने, सुरक्षित करने, मैनेज करने, और उनकी निगरानी करने के लिए किया जाता है.
लैब के इस पहले हिस्से में, आपको Google Kubernetes Engine (GKE) पर चल रहे Kubernetes में, एक सामान्य ASP.NET Core ऐप्लिकेशन डिप्लॉय करना है. साथ ही, इसे Istio से मैनेज करने के लिए कॉन्फ़िगर करना है.
लैब के दूसरे हिस्से में, आपको Istio की सुविधाओं के बारे में ज़्यादा जानने को मिलेगा. जैसे, मेट्रिक, ट्रेसिंग, डाइनैमिक ट्रैफ़िक मैनेजमेंट, फ़ॉल्ट इंजेक्शन वगैरह.
आपको क्या सीखने को मिलेगा
- Docker कंटेनर में, एक सामान्य ASP.NET Core ऐप्लिकेशन बनाने और उसे पैकेज करने का तरीका.
- Google Kubernetes Engine (GKE) की मदद से, Kubernetes क्लस्टर बनाने का तरीका.
- GKE पर Kubernetes क्लस्टर में Istio को इंस्टॉल करने का तरीका.
- ASP.NET Core ऐप्लिकेशन को डिप्लॉय करने और उसके ट्रैफ़िक को Istio से मैनेज करने के लिए कॉन्फ़िगर करने का तरीका.
आपको किन चीज़ों की ज़रूरत होगी
इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?
Google Cloud Platform इस्तेमाल करने के अपने अनुभव को आप क्या रेटिंग देंगे?
2. सेटअप और ज़रूरी शर्तें
अपने हिसाब से एनवायरमेंट सेट अप करना
- Cloud Console में साइन इन करें. इसके बाद, नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.



प्रोजेक्ट आईडी याद रखें. यह सभी Google Cloud प्रोजेक्ट के लिए एक यूनीक नाम होता है. ऊपर दिया गया नाम पहले ही इस्तेमाल किया जा चुका है. इसलिए, यह आपके लिए काम नहीं करेगा. माफ़ करें! इस कोडलैब में इसे बाद में PROJECT_ID के तौर पर दिखाया जाएगा.
- इसके बाद, Google Cloud संसाधनों का इस्तेमाल करने के लिए, आपको Cloud Console में बिलिंग चालू करनी होगी.
इस कोडलैब को पूरा करने में ज़्यादा खर्च नहीं आएगा. "सफ़ाई करना" सेक्शन में दिए गए निर्देशों का पालन करना न भूलें. इसमें आपको संसाधनों को बंद करने का तरीका बताया गया है, ताकि इस ट्यूटोरियल के बाद आपको बिलिंग न करनी पड़े. Google Cloud के नए उपयोगकर्ताओं को, मुफ़्त में आज़माने के लिए 300 डॉलर का क्रेडिट मिलता है.
Cloud Shell शुरू करें
Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जाता है. यह Google Cloud में चलने वाला कमांड लाइन एनवायरमेंट है.
Cloud Shell चालू करें
- Cloud Console में, Cloud Shell चालू करें
पर क्लिक करें.

अगर आपने पहले कभी Cloud Shell का इस्तेमाल नहीं किया है, तो आपको एक इंटरमीडिएट स्क्रीन दिखेगी. इसमें Cloud Shell के बारे में जानकारी दी गई होगी. अगर ऐसा है, तो जारी रखें पर क्लिक करें. इसके बाद, आपको यह स्क्रीन कभी नहीं दिखेगी. एक बार दिखने वाली स्क्रीन ऐसी दिखती है:

Cloud Shell से कनेक्ट होने में कुछ ही सेकंड लगेंगे.

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद होते हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है और Google Cloud में चलता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस कोडलैब में ज़्यादातर काम, सिर्फ़ ब्राउज़र या Chromebook की मदद से किया जा सकता है.
Cloud Shell से कनेक्ट होने के बाद, आपको दिखेगा कि आपकी पुष्टि पहले ही हो चुकी है और प्रोजेक्ट को आपके प्रोजेक्ट आईडी पर पहले ही सेट कर दिया गया है.
- पुष्टि करें कि आपने Cloud Shell में पुष्टि कर ली है. इसके लिए, यह कमांड चलाएं:
gcloud auth list
कमांड का आउटपुट
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- यह पुष्टि करने के लिए कि gcloud कमांड को आपके प्रोजेक्ट के बारे में पता है, Cloud Shell में यह कमांड चलाएं:
gcloud config list project
कमांड का आउटपुट
[core] project = <PROJECT_ID>
अगर ऐसा नहीं है, तो इस कमांड का इस्तेमाल करके इसे सेट किया जा सकता है:
gcloud config set project <PROJECT_ID>
कमांड का आउटपुट
Updated property [core/project].
3. Cloud Shell में ASP.NET Core ऐप्लिकेशन बनाना
Cloud Shell प्रॉम्प्ट में, यह पुष्टि की जा सकती है कि dotnet कमांड लाइन टूल पहले से इंस्टॉल है. इसके लिए, इसका वर्शन देखें. इससे, इंस्टॉल की गई dotnet कमांड लाइन टूल का वर्शन प्रिंट होना चाहिए:
dotnet --version
इसके बाद, नया स्केलेटन ASP.NET Core वेब ऐप्लिकेशन बनाएं.
dotnet new mvc -o HelloWorldAspNetCore
इससे एक प्रोजेक्ट बन जाएगा और उसकी डिपेंडेंसी वापस आ जाएंगी. आपको नीचे दिए गए मैसेज जैसा कोई मैसेज दिखेगा.
Restore completed in 11.44 sec for HelloWorldAspNetCore.csproj.
Restore succeeded.
4. ASP.NET Core ऐप्लिकेशन चलाना
हमारा ऐप्लिकेशन लॉन्च होने ही वाला है. ऐप्लिकेशन फ़ोल्डर पर जाएं.
cd HelloWorldAspNetCore
आखिर में, ऐप्लिकेशन चलाएं.
dotnet run --urls=http://localhost:8080
ऐप्लिकेशन, पोर्ट 8080 पर सुनना शुरू कर देता है.
Hosting environment: Production
Content root path: /home/atameldev/HelloWorldAspNetCore
Now listening on: http://[::]:8080
Application started. Press Ctrl+C to shut down.
यह पुष्टि करने के लिए कि ऐप्लिकेशन चल रहा है, सबसे ऊपर दाईं ओर मौजूद वेब प्रीव्यू बटन पर क्लिक करें और ‘पोर्ट 8080 पर झलक देखें’ को चुनें.

आपको डिफ़ॉल्ट ASP.NET Core वेबपेज दिखेगा:

ऐप्लिकेशन के चलने की पुष्टि करने के बाद, ऐप्लिकेशन को शट डाउन करने के लिए Ctrl+C दबाएं.
5. ASP.NET Core ऐप्लिकेशन को Docker कंटेनर में पैकेज करना
इसके बाद, अपने ऐप्लिकेशन को कंटेनर के तौर पर चलाने के लिए तैयार करें. पहला चरण, कंटेनर और उसके कॉन्टेंट को तय करना है.
ऐप्लिकेशन की बेस डायरेक्ट्री में, Docker इमेज को तय करने के लिए Dockerfile बनाएं.
touch Dockerfile
अपने पसंदीदा एडिटर (vim, nano,emacs या Cloud Shell का कोड एडिटर) का इस्तेमाल करके, Dockerfile में यह कोड जोड़ें.
# Use Microsoft's official build .NET image. # https://hub.docker.com/_/microsoft-dotnet-core-sdk/ FROM mcr.microsoft.com/dotnet/sdk:5.0-alpine AS build WORKDIR /app # Install production dependencies. # Copy csproj and restore as distinct layers. COPY *.csproj ./ RUN dotnet restore # Copy local code to the container image. COPY . ./ WORKDIR /app # Build a release artifact. RUN dotnet publish -c Release -o out # Use Microsoft's official runtime .NET image. # https://hub.docker.com/_/microsoft-dotnet-core-aspnet/ FROM mcr.microsoft.com/dotnet/aspnet:5.0-alpine AS runtime WORKDIR /app COPY --from=build /app/out ./ # Make sure the app binds to port 8080 ENV ASPNETCORE_URLS http://*:8080 # Run the web service on container startup. ENTRYPOINT ["dotnet", "HelloWorldAspNetCore.dll"]
आपके Dockerfile में शामिल एक अहम कॉन्फ़िगरेशन, वह पोर्ट है जिस पर ऐप्लिकेशन आने वाले ट्रैफ़िक को सुनता है (8080). इसके लिए, ASPNETCORE_URLS एनवायरमेंट वैरिएबल सेट किया जाता है. ASP.NET Core ऐप्लिकेशन इसका इस्तेमाल यह तय करने के लिए करते हैं कि किस पोर्ट पर सुनना है.
इस Dockerfile को सेव करें. अब इमेज जनरेट करते हैं:
docker build -t gcr.io/${GOOGLE_CLOUD_PROJECT}/hello-dotnet:v1 .
यह प्रोसेस पूरी होने के बाद (इसमें सभी चीज़ें डाउनलोड और एक्सट्रैक्ट होने में कुछ समय लगेगा), आपको दिखेगा कि इमेज बन गई है और इसे लोकल तौर पर सेव कर लिया गया है:
docker images REPOSITORY TAG gcr.io/yourproject-XXXX/hello-dotnet v1
इमेज को स्थानीय तौर पर टेस्ट करने के लिए, यह कमांड इस्तेमाल करें. इससे, आपकी नई बनाई गई कंटेनर इमेज से पोर्ट 8080 पर Docker कंटेनर स्थानीय तौर पर चलेगा:
docker run -p 8080:8080 gcr.io/${GOOGLE_CLOUD_PROJECT}/hello-dotnet:v1
इसके बाद, Cloud Shell की वेब झलक सुविधा का फिर से इस्तेमाल करें :

आपको नए टैब में डिफ़ॉल्ट ASP.NET Core वेबपेज दिखेगा.

जब आपको यह पता चल जाए कि ऐप्लिकेशन, Docker कंटेनर में स्थानीय तौर पर ठीक से चल रहा है, तब Ctrl-> C पर क्लिक करके, चल रहे कंटेनर को बंद किया जा सकता है.
अब जब इमेज सही तरीके से काम कर रही है, तो इसे Google Container Registry पर पुश किया जा सकता है. यह आपकी Docker इमेज के लिए एक निजी रिपॉज़िटरी है. इसे हर Google Cloud प्रोजेक्ट से ऐक्सेस किया जा सकता है. हालांकि, इसे Google Cloud Platform से बाहर भी ऐक्सेस किया जा सकता है:
docker push gcr.io/${GOOGLE_CLOUD_PROJECT}/hello-dotnet:v1
अगर सब ठीक रहता है, तो कुछ समय बाद आपको Container Registry सेक्शन में कंटेनर इमेज दिखनी चाहिए. इस समय, आपके पास पूरे प्रोजेक्ट के लिए Docker इमेज उपलब्ध है. इसे Kubernetes ऐक्सेस कर सकता है और व्यवस्थित कर सकता है. यह आपको कुछ मिनट में दिखेगा.

अगर आपको इसके बारे में ज़्यादा जानना है, तो कंटेनर इमेज को ब्राउज़ किया जा सकता है. ये इमेज, Google Cloud Storage में सेव होती हैं. इसके लिए, इस लिंक पर जाएं: https://console.cloud.google.com/storage/browser/ (पूरा लिंक इस तरह का होना चाहिए: https://console.cloud.google.com/project/PROJECT_ID/storage/browser/).
6. Istio की मदद से Kubernetes/GKE क्लस्टर बनाना
सबसे पहले, पक्का करें कि आपने Kubernetes Engine API चालू किया हो:
gcloud services enable container.googleapis.com
Kubernetes क्लस्टर बनाएं. अगर आपको देश/इलाका बदलना है, तो अपनी मौजूदा जगह के आस-पास का कोई देश/इलाका चुनें:
gcloud container clusters create hello-istio \ --cluster-version=latest \ --machine-type=n1-standard-2 \ --num-nodes=4 \ --region europe-west1
आपके लिए क्लस्टर सेट अप होने में कुछ समय लगता है. इसलिए, तब तक इंतज़ार करें. यह Google Cloud Platform Console के Kubernetes Engine सेक्शन में दिखेगा.

इस कोडलैब के लिए, हम istio.io से Istio को डाउनलोड और इंस्टॉल करेंगे. इंस्टॉल करने के अन्य विकल्प भी उपलब्ध हैं. इनमें GKE के लिए Istio ऐड-ऑन और Anthos Service Mesh शामिल हैं. इसके बाद के ऐप्लिकेशन के चरण, Istio के किसी भी इंस्टॉलेशन पर काम करेंगे.
आइए, सबसे पहले Istio क्लाइंट और सैंपल डाउनलोड करें. Istio के रिलीज़ पेज पर, कई ओएस के लिए डाउनलोड करने लायक आर्टफ़ैक्ट उपलब्ध हैं. हमारे मामले में, हम अपने मौजूदा प्लैटफ़ॉर्म के लिए, हाल ही की रिलीज़ को डाउनलोड और एक्सट्रैक्ट करने के लिए, आसानी से इस्तेमाल की जा सकने वाली कमांड का इस्तेमाल कर सकते हैं:
curl -L https://istio.io/downloadIstio | sh -
स्क्रिप्ट से आपको Istio के डाउनलोड किए गए वर्शन के बारे में पता चलेगा:
Istio has been successfully downloaded into the istio-1.8.1 folder on your system.
इंस्टॉलेशन डायरेक्ट्री में सैंपल ऐप्लिकेशन और istioctl क्लाइंट बाइनरी शामिल होती है. उस डायरेक्ट्री पर जाएं:
cd istio-1.8.1
bin डायरेक्ट्री को अपने PATH में जोड़ने के लिए, यहां दी गई कमांड को कॉपी करके चिपकाएं, ताकि istioctl का इस्तेमाल किया जा सके:
export PATH="$PATH:/home/<YOURHOMEID>/istio-1.8.1/bin"
पुष्टि करें कि istioctl उपलब्ध है. इसके लिए, देखें कि आपका क्लस्टर Istio के लिए तैयार है या नहीं:
istioctl x precheck
आपको यह मैसेज दिखेगा Install Pre-Check passed! The cluster is ready for Istio installation.
डेमो प्रोफ़ाइल के साथ Istio इंस्टॉल करें:
istioctl install --set profile=demo
अब आपके क्लस्टर में Istio इंस्टॉल हो गया है.
साइडकार को अपने-आप इंजेक्ट करने की सुविधा
Istio का इस्तेमाल शुरू करने के लिए, आपको ऐप्लिकेशन में कोई बदलाव करने की ज़रूरत नहीं है. सेवाओं को कॉन्फ़िगर और चालू करने पर, Envoy साइडकार अपने-आप हर पॉड में जुड़ जाते हैं.
इसके लिए, आपको उस नेमस्पेस (‘default') के लिए साइडकार इंजेक्शन चालू करना होगा जिसका इस्तेमाल आपकी माइक्रोसेवाएं करती हैं. इसके लिए, आपको एक लेबल लगाना होगा:
kubectl label namespace default istio-injection=enabled
यह पुष्टि करने के लिए कि लेबल सही तरीके से लागू किया गया है, यह निर्देश चलाएं:
kubectl get namespace -L istio-injection
आउटपुट से पुष्टि होती है कि डिफ़ॉल्ट नेमस्पेस के लिए साइडकार इंजेक्शन की सुविधा चालू है:
NAME STATUS AGE ISTIO-INJECTION default Active 3m enabled istio-system Active 63s disabled ...
7. इंस्टॉलेशन की पुष्टि करना
Istio में तीन सेवाएं शामिल हैं: istiod कंट्रोल प्लेन, और इनग्रेस और इग्रेस गेटवे. इन्हें "इंटरनेट के बाकी हिस्सों के लिए साइडकार प्रॉक्सी" के तौर पर देखा जा सकता है. इनके नाम क्रमशः istio-ingressgateway और istio-egressgateway हैं.
kubectl get svc -n istio-system
आपका आउटपुट ऐसा दिखना चाहिए:
NAME TYPE CLUSTER-IP EXTERNAL-IP AGE istio-egressgateway ClusterIP 10.55.252.182 <none> istio-ingressgateway LoadBalancer 10.55.250.185 35.233.118.42 istiod ClusterIP 10.55.253.217 <none>
Ingress Gateway का टाइप LoadBalancer है, इसलिए इसे इंटरनेट से ऐक्सेस किया जा सकता है. अन्य को सिर्फ़ क्लस्टर के अंदर से ऐक्सेस किया जाना चाहिए.
इसके बाद, पक्का करें कि Kubernetes के संबंधित पॉड डिप्लॉय किए गए हों और सभी कंटेनर चालू हों:
kubectl get pods -n istio-system
सभी पॉड चालू होने के बाद, आगे की प्रोसेस शुरू की जा सकती है.
NAME READY STATUS istio-egressgateway-674988f895-m6tk4 1/1 Running istio-ingressgateway-6996f7dcc8-7lvm2 1/1 Running istiod-6bf5fc8b64-j79hj 1/1 Running
istiod: Istio कंट्रोल प्लेन. यह प्रॉक्सी साइडकार, डिवाइस और सेवाओं की अपने-आप पहचान करना, सर्टिफ़िकेट डिस्ट्रिब्यूशन, और साइडकार इंजेक्शन के कॉन्फ़िगरेशन और प्रोग्रामिंग को मैनेज करता हैingress gateway: यह आपके क्लस्टर से बाहर के अनुरोधों को मैनेज करता है.egress gateway: यह आपके क्लस्टर से बाहर के एंडपॉइंट पर भेजे जाने वाले अनुरोधों को मैनेज करता है.
8. ऐप्लिकेशन डिप्लॉय करना
अब आपने पुष्टि कर ली है कि Istio इंस्टॉल हो गया है और काम कर रहा है. इसलिए, ASP.NET Core ऐप्लिकेशन को डिप्लॉय किया जा सकता है.
डिप्लॉयमेंट और सेवा
सबसे पहले, अपने पसंदीदा एडिटर (vim, nano,emacs या Cloud Shell का कोड एडिटर) का इस्तेमाल करके, aspnetcore.yaml फ़ाइल बनाएं. इसके बाद, ऐप्लिकेशन के लिए Kubernetes डिप्लॉयमेंट और सेवा तय करें:
apiVersion: v1
kind: Service
metadata:
name: aspnetcore-service
labels:
app: aspnetcore
spec:
ports:
- port: 8080
name: http
selector:
app: aspnetcore
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: aspnetcore-v1
spec:
replicas: 1
selector:
matchLabels:
app: aspnetcore
version: v1
template:
metadata:
labels:
app: aspnetcore
version: v1
spec:
containers:
- name: aspnetcore
image: gcr.io/YOUR-PROJECT-ID/hello-dotnet:v1
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
फ़ाइल में ऐप्लिकेशन को डिप्लॉय करने के लिए, स्टैंडर्ड डिप्लॉयमेंट और सेवाएं शामिल हैं. इसमें Istio से जुड़ी कोई भी चीज़ शामिल नहीं है.
kubectl की मदद से, सेवाओं को डिफ़ॉल्ट नेमस्पेस में डिप्लॉय करें:
kubectl apply -f aspnetcore.yaml
service "aspnetcore-service" created deployment.extensions "aspnetcore-v1" created
पुष्टि करें कि पॉड चल रहे हैं:
kubectl get pods
NAME READY STATUS RESTARTS AGE aspnetcore-v1-6cf64748-mddb 2/2 Running 0 34s
Gateway और VirtualService
इनग्रेस ट्रैफ़िक को मेश तक पहुंचने की अनुमति देने के लिए, आपको गेटवे और VirtualService बनाना होगा.
गेटवे, एचटीटीपी/टीसीपी ट्रैफ़िक के लिए लोड बैलेंसर को कॉन्फ़िगर करता है. यह आम तौर पर मेश के किनारे पर काम करता है, ताकि किसी ऐप्लिकेशन के लिए इनग्रेस ट्रैफ़िक चालू किया जा सके. VirtualService, ऐसे नियमों को तय करता है जो यह कंट्रोल करते हैं कि किसी सेवा के अनुरोधों को Istio सर्विस मेश में कैसे रूट किया जाता है.
गेटवे तय करने के लिए, aspnetcore-gateway.yaml फ़ाइल बनाएं:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: aspnetcore-gateway
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
VirtualService को तय करने के लिए, aspnetcore-virtualservice.yaml फ़ाइल बनाएं:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: aspnetcore-virtualservice
spec:
hosts:
- "*"
gateways:
- aspnetcore-gateway
http:
- route:
- destination:
host: aspnetcore-service
गेटवे को डिप्लॉय करने के लिए, kubectl कमांड चलाएं. इसके लिए:
kubectl apply -f aspnetcore-gateway.yaml
इस कमांड से यह आउटपुट मिलता है:
gateway.networking.istio.io "aspnetcore-gateway" created
इसके बाद, VirtualService को डिप्लॉय करने के लिए, यह कमांड चलाएं:
kubectl apply -f aspnetcore-virtualservice.yaml
इस कमांड से यह आउटपुट मिलता है:
virtualservice.networking.istio.io "aspnetcore-virtualservice" created
पुष्टि करें कि ये सभी चीज़ें काम कर रही हैं:
kubectl get gateway
NAME AGE aspnetcore-gateway 28s
kubectl get virtualservice
NAME AGE aspnetcore-virtualservice 33s
बधाई हो! आपने अभी-अभी Istio की सुविधा वाला ऐप्लिकेशन डिप्लॉय किया है. इसके बाद, आपको ऐप्लिकेशन का इस्तेमाल करते हुए दिखाया जाता है.
9. ऐप्लिकेशन को टेस्ट करना
अब आपको ऐप्लिकेशन का इस्तेमाल करने का विकल्प दिखेगा. आपको गेटवे का बाहरी आईपी और पोर्ट पता होना चाहिए. यह EXTERNAL-IP में शामिल है:
kubectl get svc istio-ingressgateway -n istio-system
बाहरी आईपी और पोर्ट को GATEWAY_URL वैरिएबल में एक्सपोर्ट करें:
export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
ऐप्लिकेशन को आज़माने के लिए, curl का इस्तेमाल करें. सेवा को 200 के रिस्पॉन्स कोड के साथ जवाब देना चाहिए:
curl -o /dev/null -s -w "%{http_code}\n" http://${GATEWAY_URL}/
इसके अलावा, ऐप्लिकेशन देखने के लिए ब्राउज़र खोलें और http://<gatewayurl> पर जाएं:

10. बधाई हो!
आपने Google Kubernetes Engine (GKE) पर चल रहे Kubernetes में, एक सामान्य ASP.NET Core ऐप्लिकेशन डिप्लॉय किया है. साथ ही, इसे Istio से मैनेज करने के लिए कॉन्फ़िगर किया है.
आपके मन में यह सवाल आ सकता है कि "Istio का क्या फ़ायदा है?". यह एक अच्छा सवाल है. अब तक, इस ऐप्लिकेशन को मैनेज करने के लिए Istio का इस्तेमाल करने का कोई फ़ायदा नहीं मिला है. लैब के दूसरे हिस्से में, हम Istio की सुविधाओं के बारे में ज़्यादा जानेंगे. जैसे, मेट्रिक, ट्रेसिंग, डाइनैमिक ट्रैफ़िक मैनेजमेंट, सेवा का विज़ुअलाइज़ेशन, और फ़ॉल्ट इंजेक्शन.
अगले चरण
- Istio की मदद से, ASP.NET Core ऐप्लिकेशन को GKE पर डिप्लॉय करना (दूसरा भाग).
- Istio के बारे में ज़्यादा जानें.
- Kubernetes के बारे में ज़्यादा जानें.
- Google Kubernetes Engine के बारे में ज़्यादा जानें.
- Google Cloud Platform पर.NET के बारे में ज़्यादा जानें.
लाइसेंस
इस काम के लिए, Creative Commons एट्रिब्यूशन 2.0 जेनेरिक लाइसेंस के तहत लाइसेंस मिला है.
11. साफ़-सफ़ाई सेवा
अगर आपको लैब का दूसरा हिस्सा पूरा नहीं करना है, तो ऐप्लिकेशन को मिटाएं और Istio को अनइंस्टॉल करें. इसके अलावा, Kubernetes क्लस्टर को भी मिटाया जा सकता है.
ऐप्लिकेशन मिटाना
ऐप्लिकेशन को मिटाने के लिए:
kubectl delete -f aspnetcore-gateway.yaml Kubectl delete -f aspnetcore-virtualservice.yaml kubectl delete -f aspnetcore.yaml
यह पुष्टि करने के लिए कि ऐप्लिकेशन मिट गया है:
kubectl get gateway kubectl get virtualservices kubectl get pods
Istio को अनइंस्टॉल करना
Istio को मिटाने के लिए:
kubectl delete -f install/kubernetes/istio-demo-auth.yaml
यह पुष्टि करने के लिए कि Istio हट गया है:
kubectl get pods -n istio-system
Kubernetes क्लस्टर मिटाना
gcloud container clusters delete hello-istio