1. खास जानकारी
ASP.NET Core, एक ओपन सोर्स और क्रॉस-प्लैटफ़ॉर्म फ़्रेमवर्क है. यह C# प्रोग्रामिंग लैंग्वेज का इस्तेमाल करके, क्लाउड-आधारित और इंटरनेट से कनेक्ट किए जाने वाले आधुनिक ऐप्लिकेशन बनाने के लिए, एक ओपन-सोर्स और क्रॉस-प्लैटफ़ॉर्म फ़्रेमवर्क है.
Kubernetes एक ओपन सोर्स सिस्टम है, जो कंटेनर वाले ऐप्लिकेशन के डिप्लॉयमेंट, स्केलिंग, और मैनेजमेंट को ऑटोमेट करता है. Istio, सेवाओं को कनेक्ट करने, सुरक्षित करने, मैनेज करने, और उनकी निगरानी करने के लिए एक ओपन फ़्रेमवर्क है.
लैब के इस पहले हिस्से में, आपने Google Kubernetes Engine (GKE) पर चल रहे Kubernetes पर एक सामान्य ASP.NET कोर ऐप्लिकेशन डिप्लॉय किया है और उसे 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 से कनेक्ट होने में कुछ ही समय लगेगा.
इस वर्चुअल मशीन में ऐसे सभी डेवलपमेंट टूल मौजूद हैं जिनकी आपको ज़रूरत है. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और 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`
- Cloud Shell में यह कमांड चलाएं, ताकि यह पुष्टि की जा सके कि gcloud के लिए कमांड को आपके प्रोजेक्ट के बारे में जानकारी है:
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 --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 कोर वेबपेज दिखाई देगा:
यह पुष्टि करने के बाद कि ऐप्लिकेशन चल रहा है, उसे शट डाउन करने के लिए 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
साथ ही, CloudShell की वेब झलक देखने की सुविधा का फिर से फ़ायदा लें :
आपको नए टैब में डिफ़ॉल्ट ASP.NET कोर वेबपेज दिखेगा.
यह पुष्टि करने के बाद कि ऐप्लिकेशन, Docker कंटेनर में ठीक से चल रहा है, Ctrl-> C
तक चल रहे कंटेनर को रोका जा सकता है.
इमेज उम्मीद के मुताबिक काम कर रही है. इसे Google Container Registry में भेजा जा सकता है. यह आपकी Docker इमेज की निजी जगह है, जिसे हर Google Cloud प्रोजेक्ट से ऐक्सेस किया जा सकता है, लेकिन Google Cloud Platform के बाहर से भी ऐक्सेस किया जा सकता है :
docker push gcr.io/${GOOGLE_CLOUD_PROJECT}/hello-dotnet:v1
अगर कुछ समय बाद सब ठीक रहता है, तो आपको कंटेनर रजिस्ट्री सेक्शन में दी गई कंटेनर इमेज दिखेगी. इस समय, अब आपके पास पूरे प्रोजेक्ट के लिए Docker इमेज उपलब्ध है. इसे ऐक्सेस करने और इसके आयोजन की व्यवस्था करने का काम Kubernets करता है. ऐसा कुछ ही मिनटों में हो जाता है.
अगर आपको जानकारी चाहिए, तो 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 कंसोल के 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 साइडकार अपने-आप हर पॉड में इंजेक्ट कर दिए जाते हैं.
यह काम करे, इसके लिए आपको उस नेमस्पेस (‘डिफ़ॉल्ट’) के लिए साइडकार इंजेक्शन चालू करना होगा जिसका इस्तेमाल आप अपनी माइक्रोसेवाओं के लिए करते हैं. ऐसा करने के लिए आप एक लेबल लागू कर सकते हैं:
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. इंस्टॉलेशन की पुष्टि करें
इस्टियो में तीन सेवाएं मिलती हैं: 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>
इन्ग्रेस डेटा ट्रैफ़िक का गेटवे 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
: इस्टियो कंट्रोल प्लेन. प्रॉक्सी साइडकार, सेवा खोज, प्रमाणपत्र वितरण और साइडकार इंजेक्शन के कॉन्फ़िगरेशन और प्रोग्रामिंग को हैंडल करता हैingress gateway
: आपके क्लस्टर के बाहर से आने वाले अनुरोधों को मैनेज करता है.egress gateway
: आपके क्लस्टर से बाहर के एंडपॉइंट पर किए जाने वाले आउटगोइंग अनुरोधों को मैनेज करता है.
8. ऐप्लिकेशन को डिप्लॉय करें
अब आपने यह पुष्टि कर ली है कि Istio इंस्टॉल हो गया है और चल रहा है, तो अब ASP.NET Core ऐप्लिकेशन को डिप्लॉय किया जा सकता है.
डिप्लॉयमेंट और सेवा
सबसे पहले, अपने पसंदीदा एडिटर (vim, nano,emacs
या क्लाउड शेल का कोड एडिटर) का इस्तेमाल करके 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
गेटवे और 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 की मदद से, GKE (जीकेई) में ASP.NET Core ऐप्लिकेशन डिप्लॉय करें (पार्ट 2).
- Istio के बारे में ज़्यादा जानें.
- Kubernetes के बारे में ज़्यादा जानें.
- Google Kubernetes Engine के बारे में ज़्यादा जानें.
- Google Cloud Platform पर.NET के बारे में ज़्यादा जानें.
लाइसेंस
इस काम को क्रिएटिव कॉमंस एट्रिब्यूशन 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