ঠিক আছে. এটা শুরু করা যাক. প্রথমে নিশ্চিত হয়ে নিন যে আপনি নিজের অ্যাপটি ডিবাগ মোডে প্রকাশ করেছেন! আমি আমার চিত্রগুলি তৈরি করার জন্য একটি নতুন ডকার বৈশিষ্ট্য মাল্টি-স্টেজ বিল্ড ব্যবহার করতে পছন্দ করি যাতে আমি ডকফাইফিলের একটি বিল্ড স্টেজের শেষে এই জাতীয় কিছু লিখতে পারি:
RUN dotnet publish -c Debug -o ./results
মিনিকুবে ছবিগুলি ঠেকাতে আমি এখানে বর্ণিত স্থানীয় ধারক রেজিস্ট্রি ব্যবহার করি। আপনি সাধারণত হিসাবে এটি করতে পারেন। আপনার ধারকটি চালু এবং চলমান থাকলে আমরা এটি হ্যাকিং শুরু করতে পারি। আমি সেই উদ্দেশ্যে পাওয়ারশেল ব্যবহার করব তবে এটি অন্য যে কোনও টার্মিনাল ভাষায় সহজেই আবার লেখা যেতে পারে। আপনি টিউটোরিয়ালটি ধাপে ধাপে অনুসরণ করতে পারেন এবং আপনার টার্মিনালে কমান্ডগুলি এক-এক করে পরীক্ষা করে ভারের মানগুলি প্রয়োজন হলে প্রয়োজন হয় command আপনার * .আইএমএল ফাইলে আপনার কোনও নির্বাচকের এমন কিছু বর্ণনা করা উচিত:
selector:
matchLabels:
app: mywebapp
এটি গ্র্যাব করুন এবং আপনার পাওয়ারশেল টার্মিনালটিতে একটি var নির্বাচক ভার সংজ্ঞায়িত করতে ব্যবহার করুন:
$Selector = 'app=mywebapp'
আপনার ধারকযুক্ত অ্যাপ্লিকেশনটি এর নির্বাচক দ্বারা চালিত হচ্ছে এমন একটি পড আপনাকে খুঁজে বের করতে হবে:
$pod = kubectl get pods --selector=$Selector -o jsonpath='{.items[0].metadata.name}';
ধরে নিচ্ছি যে পডে আপনার কাছে কেবল একটি ধারক রয়েছে আপনি এখন সেই ধারকটিতে আদেশগুলি চালিত করতে পারেন। ডিফল্ট কনটেইনার দ্বারা vsdbg ইনস্টল করা নেই তাই এগিয়ে যান এবং এটি ইনস্টল করুন:
kubectl exec $pod -i -- apt-get update;
kubectl exec $pod -i -- apt-get install -y unzip;
kubectl exec $pod -i -- curl -sSL https://aka.ms/getvsdbgsh -o '/root/getvsdbg.sh';
kubectl exec $pod -i -- bash /root/getvsdbg.sh -v latest -l /vsdbg;
এরপরে, আপনাকে ধারকটির ভিতরে আপনার অ্যাপের পিআইডি সন্ধান করতে হবে:
$prid = kubectl exec $pod -i -- pidof -s dotnet;
সাধারণত এটি 1 এর সমান তবে কম অনুমান করা ভাল। এটাই. এখন আপনি একটি ডিবাগার শুরু করতে পারেন:
kubectl exec $pod -i -- /vsdbg/vsdbg --interpreter=mi --attach $prid;
উইন্ডোটি বন্ধ করার আগে নিম্নলিখিত কমান্ডগুলি কার্যকর করতে ভুলবেন না অন্যথায় আপনার অ্যাপ চিরতরে আটকে থাকবে:
-target-detach
-gdb-exit
আসুন সমস্ত কিছু একসাথে রেখে, পুনরায় ব্যবহারযোগ্য স্ক্রিপ্ট তৈরি করুন এবং এটিকে মূলের কাছাকাছি কোথাও সংরক্ষণ করুন যেহেতু আপনি এটি আপনার সমস্ত এএসপি.নেট কোর প্রকল্পগুলির সাথে ব্যবহার করতে পারেন:
param(
# the selector from your yml file
# selector:
# matchLabels:
# app: myweb
# -Selector app=myweb
[Parameter(Mandatory=$true)][string]$Selector
)
Write-Host '1. searching pod by selector:' $Selector '...';
$pod = kubectl get pods --selector=$Selector -o jsonpath='{.items[0].metadata.name}';
Write-Host '2. installing updates ...';
kubectl exec $pod -i -- apt-get update;
Write-Host '3. installing unzip ...';
kubectl exec $pod -i -- apt-get install -y --no-install-recommends unzip;
Write-Host '4. downloading getvsdbgsh ...';
kubectl exec $pod -i -- curl -sSL https://aka.ms/getvsdbgsh -o '/root/getvsdbg.sh';
Write-Host '5. installing vsdbg ...';
kubectl exec $pod -i -- bash /root/getvsdbg.sh -v latest -l /vsdbg;
$cmd = 'dotnet';
Write-Host '6. seaching for' $cmd 'process PID in pod:' $pod '...';
$prid = kubectl exec $pod -i -- pidof -s $cmd;
Write-Host '7. attaching debugger to process with PID:' $pid 'in pod:' $pod '...';
kubectl exec $pod -i -- /vsdbg/vsdbg --interpreter=mi --attach $prid;
টার্মিনালটি স্ক্রিপ্ট ফোল্ডার থেকে চলার সময় আপনি এই স্ক্রিপ্টটি এভাবে চালিত করতে পারেন:
powershell -ExecutionPolicy Bypass -File kubedbg.ps1 -Selector app=mywebapp
তবে আমাদের কি ভিজ্যুয়াল স্টুডিও থেকে ডিবাগ করার কথা নয়? হ্যাঁ! আসুন আরও এগিয়ে যান এবং ভিজ্যুয়াল স্টুডিও এমআইইজাইন থেকে আমাদের টার্মিনাল প্রক্রিয়া চালু করুন। আপনার প্রকল্পটি ভিজ্যুয়াল স্টুডিওতে খুলুন। নিম্নলিখিত কন্টেন্ট সহ নতুন এক্সএমএল ফাইল যুক্ত করুন এবং এর নাম রাখুন kubedbg.xML:
<PipeLaunchOptions xmlns="http://schemas.microsoft.com/vstudio/MDDDebuggerOptions/2014"
PipePath="powershell" TargetArchitecture="x64" MIMode="clrdbg"
PipeArguments="
-ExecutionPolicy Bypass
-File C:\kube\kubedbg.ps1
-Selector app=mywebapp">
<LaunchCompleteCommand>None</LaunchCompleteCommand>
</PipeLaunchOptions>
ইন -File
প্যারামিটার আপনি স্ক্রিপ্ট ফাইল আমরা আগে নির্মিত সঠিক পথটি নির্দিষ্ট করতে হবে। তারপরে কমান্ড উইন্ডোটি খুলতে এবং নিম্নলিখিত কমান্ডটি চালনার জন্য Ctrl + Alt + A টিপুন:
Debug.MIDebugLaunch /Executable:dotnet /OptionsFile:absolute_path_to_kubedbg_xml
এই কমান্ডটি আপনার প্রত্যাশিত সমস্ত স্ট্যান্ডার্ড সুবিধাগুলি দিয়ে ভিজ্যুয়াল স্টুডিওতে ডিবাগিং প্রক্রিয়া শুরু করবে। তবে ডিবাগ মেনু থেকে ডিটাচ অল টিপে অন্য কোনও উপায়ে ডিবাগিং বন্ধ করবেন না! যদিও এই আদেশটি সর্বদা লেখার পক্ষে খুব সুবিধাজনক নয়। ভাগ্যক্রমে ভিজ্যুয়াল স্টুডিওতে, আপনি পরামিতিগুলির সাথে আদেশের জন্য উপকরণ নির্দিষ্ট করতে পারেন। শেষ পর্যন্ত, আপনার kubedbg.xml
প্রতিটি প্রকল্পের জন্য একটি নতুন ফাইলের প্রয়োজন হবে । এটিকে সামনে রেখে কমান্ড উইন্ডোতে নিম্নলিখিত কমান্ডটি টাইপ করে আপনার প্রথম উপন্যাসটি তৈরি করুন:
alias kubedbg.mywebapp Debug.MIDebugLaunch /Executable:dotnet
/OptionsFile:absolute_path_to_kubedbg.xml
এর পরে, আপনি কেবল কমান্ড উইন্ডোতে kubedbg.mywebapp চালিয়ে ডিবাগিং শুরু করতে পারেন। আরও ভাল আপনি একই কমান্ডটি সন্ধান করুন টুলবার কম্বোবক্স থেকে কিন্তু উপসর্গ সহ চালনা করতে পারেন: >kubedbg.mywebapp.
এটি কোনও পাঠ্য সমাপ্তিও না হওয়ায় এটি কঠিন নয়। আপনি এখানে কমান্ড এলিয়াস সম্পর্কে আরও পড়তে পারেন। শুভ ডিবাগিং! PS: বোনাস হিসাবে একেবারে ঠিক একইভাবে আপনি কোনও পাবলিক মেঘের অভ্যন্তরে চলার পরেও আপনার অ্যাপ্লিকেশনটি ডিবাগ করতে পারেন। যখন কুবেকেটেলকে জনসাধারণের মেঘে একটি ক্লাস্টারে নির্ধারিত করা হয় তখন এটি ঠিক একই স্ক্রিপ্টের সাথে কাজ করে এবং কম অনুমান করা যায় যেহেতু বাস্তব ক্লাস্টার প্রক্রিয়া আইডি 1 এর সমান নয়