1. ওভারভিউ
ASP.NET Core হল C# প্রোগ্রামিং ভাষা ব্যবহার করে আধুনিক ক্লাউড-ভিত্তিক এবং ইন্টারনেট-সংযুক্ত অ্যাপ্লিকেশন তৈরির জন্য একটি ওপেন-সোর্স এবং ক্রস-প্ল্যাটফর্ম ফ্রেমওয়ার্ক।
Kubernetes হল একটি ওপেন-সোর্স সিস্টেম যা স্বয়ংক্রিয়ভাবে স্থাপনা, স্কেলিং এবং কনটেইনারাইজড অ্যাপ্লিকেশন পরিচালনার জন্য। Istio সংযোগ, সুরক্ষিত, পরিচালনা এবং পর্যবেক্ষণ পরিষেবাগুলির জন্য একটি উন্মুক্ত কাঠামো।
ল্যাবের এই প্রথম অংশে, আপনি Google Kubernetes Engine (GKE) এ চলমান Kubernetes-এ একটি সাধারণ ASP.NET কোর অ্যাপ স্থাপন করুন এবং Istio দ্বারা পরিচালিত হওয়ার জন্য এটি কনফিগার করুন।
ল্যাবের দ্বিতীয় অংশে , আপনি Istio-এর বৈশিষ্ট্যগুলি যেমন মেট্রিক্স, ট্রেসিং, গতিশীল ট্রাফিক ব্যবস্থাপনা, ফল্ট ইনজেকশন এবং আরও অনেক কিছু অন্বেষণ করবেন।
আপনি কি শিখবেন
- কীভাবে একটি ডকার কন্টেইনারে একটি সাধারণ ASP.NET কোর অ্যাপ তৈরি এবং প্যাকেজ করবেন।
- গুগল কুবারনেটস ইঞ্জিন (জিকেই) দিয়ে কীভাবে একটি কুবারনেটস ক্লাস্টার তৈরি করবেন।
- GKE-তে কুবারনেটস ক্লাস্টারে কীভাবে ইস্টিও ইনস্টল করবেন।
- কিভাবে আপনার ASP.NET কোর অ্যাপ স্থাপন করবেন এবং Istio দ্বারা পরিচালিত হওয়ার জন্য এর ট্র্যাফিক কনফিগার করবেন।
আপনি কি প্রয়োজন হবে
- একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
আপনি কিভাবে এই টিউটোরিয়াল ব্যবহার করবেন?
Google ক্লাউড প্ল্যাটফর্মের সাথে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবে?
2. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিসম্পন্ন পরিবেশ সেটআপ
- ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।
প্রজেক্ট আইডিটি মনে রাখবেন, সমস্ত Google ক্লাউড প্রকল্প জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে নেওয়া হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এটি পরে এই কোডল্যাবে PROJECT_ID
হিসাবে উল্লেখ করা হবে।
- এর পরে, Google ক্লাউড সংস্থানগুলি ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে৷
এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। "ক্লিনিং আপ" বিভাগে যে কোনও নির্দেশাবলী অনুসরণ করতে ভুলবেন না যা আপনাকে কীভাবে সংস্থানগুলি বন্ধ করতে হবে তা পরামর্শ দেয় যাতে আপনি এই টিউটোরিয়ালের বাইরে বিলিং করতে না পারেন৷ Google ক্লাউডের নতুন ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷
ক্লাউড শেল শুরু করুন
যদিও Google ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আপনি Google Cloud Shell ব্যবহার করেন, একটি কমান্ড লাইন পরিবেশ যা Google ক্লাউডে চলছে।
ক্লাউড শেল সক্রিয় করুন
- ক্লাউড কনসোল থেকে, ক্লাউড শেল সক্রিয় করুন ক্লিক করুন .
আপনি যদি আগে কখনও ক্লাউড শেল চালু না করে থাকেন, তাহলে আপনাকে একটি মধ্যবর্তী স্ক্রীন (ভাঁজের নীচে) উপস্থাপন করা হবে যা বর্ণনা করে। যদি এটি হয়, তবে চালিয়ে যান ক্লিক করুন (এবং আপনি এটি আর কখনও দেখতে পাবেন না)। এককালীন স্ক্রীনটি দেখতে কেমন তা এখানে রয়েছে:
ক্লাউড শেলের সাথে সংযোগ করতে এবং সংযোগ করতে এটির মাত্র কয়েক মুহূর্ত লাগবে৷
এই ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুল দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার অনেক কাজ, যদি সব না হয়, শুধুমাত্র একটি ব্রাউজার বা আপনার Chromebook দিয়ে করা যেতে পারে।
একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি ইতিমধ্যেই প্রমাণীকরণ করেছেন এবং প্রকল্পটি ইতিমধ্যে আপনার প্রকল্প আইডিতে সেট করা আছে।
- আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list
কমান্ড আউটপুট
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- gcloud কমান্ড আপনার প্রকল্প সম্পর্কে জানে তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project
কমান্ড আউটপুট
[core] project = <PROJECT_ID>
যদি এটি না হয়, আপনি এই কমান্ড দিয়ে এটি সেট করতে পারেন:
gcloud config set project <PROJECT_ID>
কমান্ড আউটপুট
Updated property [core/project].
3. ক্লাউড শেলে একটি ASP.NET কোর অ্যাপ তৈরি করুন
ক্লাউড শেল প্রম্পটে, আপনি যাচাই করতে পারেন যে ডটনেট কমান্ড লাইন টুল ইতিমধ্যেই এর সংস্করণটি পরীক্ষা করে ইনস্টল করা আছে। এটি ইনস্টল করা ডটনেট কমান্ড লাইন টুলের সংস্করণ মুদ্রণ করা উচিত:
dotnet --version
এরপরে, একটি নতুন কঙ্কাল ASP.NET কোর ওয়েব অ্যাপ তৈরি করুন।
dotnet new mvc -o HelloWorldAspNetCore
এটি একটি প্রকল্প তৈরি করা এবং এর নির্ভরতা পুনরুদ্ধার করা উচিত। আপনি নীচের অনুরূপ একটি বার্তা দেখতে হবে.
Restore completed in 11.44 sec for HelloWorldAspNetCore.csproj.
Restore succeeded.
4. ASP.NET কোর অ্যাপটি চালান
আমরা আমাদের অ্যাপ চালানোর জন্য প্রায় প্রস্তুত। অ্যাপ ফোল্ডারে নেভিগেট করুন।
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 কোর অ্যাপটি প্যাকেজ করুন
এর পরে, আপনার অ্যাপটিকে একটি ধারক হিসাবে চালানোর জন্য প্রস্তুত করুন। প্রথম ধাপ হল ধারক এবং এর বিষয়বস্তু সংজ্ঞায়িত করা।
অ্যাপের বেস ডিরেক্টরিতে, ডকার ইমেজটি সংজ্ঞায়িত করতে একটি Dockerfile
তৈরি করুন।
touch Dockerfile
আপনার প্রিয় সম্পাদক ( vim,
nano,emacs
বা ক্লাউড শেলের কোড এডিটর) ব্যবহার করে 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"]
আপনার ডকারফাইলে অন্তর্ভুক্ত একটি গুরুত্বপূর্ণ কনফিগারেশন হল সেই পোর্ট যেখানে অ্যাপটি ইনকামিং ট্রাফিক (8080) শোনে। এটি ASPNETCORE_URLS
এনভায়রনমেন্ট ভেরিয়েবল সেট করে সম্পন্ন করা হয়, যা ASP.NET কোর অ্যাপগুলি কোন পোর্ট শুনতে হবে তা নির্ধারণ করতে ব্যবহার করে।
এই 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 run -p 8080:8080 gcr.io/${GOOGLE_CLOUD_PROJECT}/hello-dotnet:v1
এবং আবার CloudShell এর ওয়েব প্রিভিউ বৈশিষ্ট্যের সুবিধা নিন:
আপনি একটি নতুন ট্যাবে ডিফল্ট ASP.NET কোর ওয়েবপেজ দেখতে পাবেন।
একবার আপনি যাচাই করেন যে অ্যাপটি স্থানীয়ভাবে একটি ডকার কন্টেইনারে ভাল চলছে, আপনি Ctrl-> C
দ্বারা চলমান ধারকটি বন্ধ করতে পারেন।
এখন যেহেতু চিত্রটি উদ্দেশ্য অনুযায়ী কাজ করে আপনি এটিকে Google কন্টেইনার রেজিস্ট্রিতে ঠেলে দিতে পারেন, প্রতিটি Google ক্লাউড প্রকল্প থেকে (তবে Google ক্লাউড প্ল্যাটফর্মের বাইরে থেকেও) অ্যাক্সেসযোগ্য আপনার ডকার চিত্রগুলির জন্য একটি ব্যক্তিগত সংগ্রহস্থল :
docker push gcr.io/${GOOGLE_CLOUD_PROJECT}/hello-dotnet:v1
যদি সবকিছু ঠিকঠাক থাকে এবং কিছুক্ষণ পরে, আপনি কন্টেইনার রেজিস্ট্রি বিভাগে তালিকাভুক্ত ধারক চিত্রটি দেখতে সক্ষম হবেন। এই মুহুর্তে, আপনার কাছে এখন একটি প্রজেক্ট-ব্যাপী ডকার ইমেজ উপলব্ধ রয়েছে যা কুবারনেটস অ্যাক্সেস করতে এবং অর্কেস্ট্রেট করতে পারে যেমন আপনি কয়েক মিনিটের মধ্যে দেখতে পাবেন।
আপনি যদি কৌতূহলী হন, আপনি এই লিঙ্কটি অনুসরণ করে কন্টেইনার চিত্রগুলির মাধ্যমে নেভিগেট করতে পারেন কারণ সেগুলি Google ক্লাউড স্টোরেজে সংরক্ষণ করা হয়েছে: 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 ক্লাউড প্ল্যাটফর্ম কনসোলের কুবারনেটস ইঞ্জিন বিভাগে দৃশ্যমান হবে।
এই কোডল্যাবের জন্য, আমরা istio.io থেকে Istio ডাউনলোড এবং ইনস্টল করব। GKE এবং Anthos Service Mesh- এর জন্য Istio অ্যাড-অন সহ অন্যান্য ইনস্টলেশন বিকল্প রয়েছে। এর পরের আবেদনের ধাপগুলো যেকোনো Istio ইনস্টলেশনে কাজ করবে।
প্রথমে Istio ক্লায়েন্ট এবং নমুনা ডাউনলোড করা যাক। Istio রিলিজ পৃষ্ঠাটি বিভিন্ন OS-এর জন্য আর্টিফ্যাক্ট ডাউনলোড করার প্রস্তাব দেয়। আমাদের ক্ষেত্রে, আমরা আমাদের বর্তমান প্ল্যাটফর্মের জন্য সর্বশেষ রিলিজ ডাউনলোড এবং নিষ্কাশন করতে একটি সুবিধাজনক কমান্ড ব্যবহার করতে পারি:
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
আপনার PATH
এ bin
ডিরেক্টরি যোগ করতে প্রদত্ত কমান্ডটি অনুলিপি করুন এবং পেস্ট করুন, যাতে আপনি istioctl
ব্যবহার করতে পারেন:
export PATH="$PATH:/home/<YOURHOMEID>/istio-1.8.1/bin"
আপনার ক্লাস্টার ইস্টিওর জন্য প্রস্তুত কিনা যাচাই করে istioctl
উপলব্ধ কিনা যাচাই করুন:
istioctl x precheck
আপনি একটি বার্তা দেখতে পাবেন যে Install Pre-Check passed! The cluster is ready for Istio installation.
ডেমো প্রোফাইল সহ Istio ইনস্টল করুন:
istioctl install --set profile=demo
Istio এখন আপনার ক্লাস্টারে ইনস্টল করা আছে।
স্বয়ংক্রিয় সাইডকার ইনজেকশন
Istio ব্যবহার শুরু করতে, আপনাকে অ্যাপ্লিকেশনটিতে কোনো পরিবর্তন করতে হবে না। আপনি যখন কনফিগার করেন এবং পরিষেবাগুলি চালান, তখন এনভয় সাইডকারগুলি পরিষেবার জন্য প্রতিটি পডে স্বয়ংক্রিয়ভাবে ইনজেক্ট করা হয়।
এটি কাজ করার জন্য, আপনাকে নেমস্পেস ('ডিফল্ট') এর জন্য সাইডকার ইনজেকশন সক্ষম করতে হবে যা আপনি আপনার মাইক্রোসার্ভিসের জন্য ব্যবহার করেন। আপনি একটি লেবেল প্রয়োগ করে এটি করেন:
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>
ইনগ্রেস গেটওয়েতে এক ধরণের LoadBalancer
রয়েছে তাই এটি ইন্টারনেট থেকে অ্যাক্সেসযোগ্য; অন্যদের শুধুমাত্র ক্লাস্টারের মধ্যে থেকে অ্যাক্সেসযোগ্য হতে হবে।
এর পরে, নিশ্চিত করুন যে সংশ্লিষ্ট কুবারনেটস পডগুলি স্থাপন করা হয়েছে এবং সমস্ত কন্টেইনার চালু এবং চলছে:
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 কোর অ্যাপ স্থাপন করতে পারেন।
স্থাপনা এবং সেবা
প্রথমে, আপনার প্রিয় সম্পাদক ( 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
গেটওয়ে এবং ভার্চুয়াল সার্ভিস
ইনগ্রেস ট্র্যাফিককে জালের কাছে পৌঁছানোর জন্য আপনাকে একটি গেটওয়ে এবং একটি ভার্চুয়াল সার্ভিস তৈরি করতে হবে।
একটি গেটওয়ে HTTP/TCP ট্র্যাফিকের জন্য একটি লোড ব্যালেন্সার কনফিগার করে, যা সাধারণত একটি অ্যাপ্লিকেশনের জন্য প্রবেশ ট্র্যাফিক সক্ষম করতে জালের প্রান্তে কাজ করে। একটি 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
এর পরে, ভার্চুয়াল সার্ভিস স্থাপন করতে নিম্নলিখিত কমান্ডটি চালান:
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
ভেরিয়েবলে বাহ্যিক IP এবং পোর্ট রপ্তানি করুন:
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 কোর অ্যাপ স্থাপন করেছেন এবং Istio দ্বারা পরিচালিত হওয়ার জন্য এটি কনফিগার করেছেন।
আপনি হয়তো ভাবছেন "ইস্টিওর সুবিধা কী?"। এটি একটি মহান প্রশ্ন. এখন পর্যন্ত, Istio এই অ্যাপটি পরিচালনা করার কোন সুবিধা নেই। ল্যাবের দ্বিতীয় অংশে, আমরা Istio-এর বৈশিষ্ট্যগুলি যেমন মেট্রিক্স, ট্রেসিং, গতিশীল ট্রাফিক ম্যানেজমেন্ট, পরিষেবা ভিজ্যুয়ালাইজেশন এবং ফল্ট ইনজেকশনের মতো আরও অন্বেষণ করব।
পরবর্তী পদক্ষেপ
- Istio (পর্ব 2) সহ GKE-তে ASP.NET কোর অ্যাপ স্থাপন করুন ।
- Istio সম্পর্কে আরও জানুন।
- কুবারনেটস সম্পর্কে আরও জানুন।
- Google Kubernetes Engine সম্পর্কে আরও জানুন।
- Google ক্লাউড প্ল্যাটফর্মে .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
ইস্টিও চলে গেছে তা নিশ্চিত করতে:
kubectl get pods -n istio-system
Kubernetes ক্লাস্টার মুছুন
gcloud container clusters delete hello-istio