উন্নয়ন পরিবেশ

১. সংক্ষিপ্ত বিবরণ

এই ল্যাবটি এমন সব ফিচার ও সক্ষমতা প্রদর্শন করে, যা কন্টেইনারাইজড পরিবেশে পাইথন অ্যাপ্লিকেশন তৈরির দায়িত্বে থাকা সফটওয়্যার ইঞ্জিনিয়ারদের জন্য ডেভেলপমেন্ট ওয়ার্কফ্লোকে সহজ ও সাবলীল করার উদ্দেশ্যে ডিজাইন করা হয়েছে। সাধারণ কন্টেইনার ডেভেলপমেন্টের জন্য ব্যবহারকারীকে কন্টেইনার এবং কন্টেইনার বিল্ড প্রসেসের খুঁটিনাটি বিষয়গুলো বুঝতে হয়। এছাড়াও, ডেভেলপারদের প্রায়শই তাদের কাজের ধারাবাহিকতা ভেঙে দূরবর্তী পরিবেশে অ্যাপ্লিকেশন পরীক্ষা ও ডিবাগ করার জন্য IDE থেকে বেরিয়ে যেতে হয়। এই টিউটোরিয়ালে উল্লিখিত টুলস এবং প্রযুক্তিগুলোর সাহায্যে ডেভেলপাররা তাদের IDE না ছেড়েই কন্টেইনারাইজড অ্যাপ্লিকেশন নিয়ে কার্যকরভাবে কাজ করতে পারবেন।

58a4cdd3ed7a123a.png

ক্লাউড ওয়ার্কস্টেশন বলতে কী বোঝায়?

ক্লাউড ওয়ার্কস্টেশনস গুগল ক্লাউডে অন্তর্নির্মিত নিরাপত্তা এবং পূর্ব-কনফিগার করা কিন্তু কাস্টমাইজযোগ্য ডেভেলপমেন্ট এনভায়রনমেন্ট সহ পরিচালিত ডেভেলপমেন্ট এনভায়রনমেন্ট প্রদান করে। একটি ব্রাউজার-ভিত্তিক IDE, একাধিক স্থানীয় কোড এডিটর (যেমন VSCode বা JetBrains IDE, যেমন IntelliJ IDEA Ultimate এবং PyCharm Professional), অথবা SSH-এর মাধ্যমে ক্লাউড ওয়ার্কস্টেশনস অ্যাক্সেস করা যায়।

ক্লাউড ওয়ার্কস্টেশন নিম্নলিখিত রিসোর্সগুলো ব্যবহার করে:

  • প্রশাসকরা ওয়ার্কস্টেশন ক্লাস্টার তৈরি করেন
  • প্রতিটি ওয়ার্কস্টেশন ক্লাস্টারে, প্রশাসকগণ এক বা একাধিক ওয়ার্কস্টেশন কনফিগারেশন তৈরি করেন যা ওয়ার্কস্টেশনগুলোর জন্য টেমপ্লেট হিসেবে কাজ করে।
  • ডেভেলপাররা এমন ওয়ার্কস্টেশন তৈরি করতে পারেন যা ক্লাউড আইডিই, ল্যাঙ্গুয়েজ টুলিং, লাইব্রেরি এবং আরও অনেক কিছু প্রদানকারী ডেভেলপমেন্ট এনভায়রনমেন্ট নির্ধারণ করে।

ক্লাউড ওয়ার্কস্টেশন আইটি এবং নিরাপত্তা প্রশাসকদের তাদের ডেভেলপমেন্ট এনভায়রনমেন্ট সহজে প্রোভিশন, স্কেল, পরিচালনা ও সুরক্ষিত করতে সক্ষম করে এবং ডেভেলপারদের সামঞ্জস্যপূর্ণ কনফিগারেশন ও কাস্টমাইজযোগ্য টুলিং সহ ডেভেলপমেন্ট এনভায়রনমেন্ট অ্যাক্সেস করার সুযোগ দেয়।

ক্লাউড ওয়ার্কস্টেশন আপনার অ্যাপ্লিকেশন ডেভেলপমেন্ট এনভায়রনমেন্টের নিরাপত্তা ব্যবস্থা উন্নত করার মাধ্যমে নিরাপত্তাকে বাম দিকে স্থানান্তরিত করতে সাহায্য করে। এতে ভিপিসি সার্ভিস কন্ট্রোল, প্রাইভেট ইনগ্রেস বা ইগ্রেস, ফোর্সড ইমেজ আপডেট এবং আইডেন্টিটি অ্যান্ড অ্যাক্সেস ম্যানেজমেন্ট অ্যাক্সেস পলিসির মতো নিরাপত্তা বৈশিষ্ট্য রয়েছে।

ক্লাউড কোড কী?

স্যাম্পল টেমপ্লেট থেকে একটি নতুন অ্যাপ্লিকেশন তৈরি ও কাস্টমাইজ করা থেকে শুরু করে আপনার তৈরি অ্যাপ্লিকেশনটি চালানো পর্যন্ত, ক্লাউড কোড কুবারনেটিস এবং ক্লাউড রান অ্যাপ্লিকেশনগুলির সম্পূর্ণ ডেভেলপমেন্ট চক্রের জন্য IDE সাপোর্ট প্রদান করে। ক্লাউড কোড আপনাকে রান-রেডি স্যাম্পল, রেডি-টু-দ্য-বক্স কনফিগারেশন স্নিপেট এবং একটি বিশেষভাবে তৈরি ডিবাগিং অভিজ্ঞতার মাধ্যমে এই পুরো প্রক্রিয়া জুড়ে সহায়তা করে — যা কুবারনেটিস এবং ক্লাউড রান দিয়ে ডেভেলপ করাকে অনেক বেশি সহজ করে তোলে!

এখানে ক্লাউড কোডের কিছু বৈশিষ্ট্য দেওয়া হলো:

  • ক্রমাগত অ্যাপ্লিকেশন তৈরি এবং চালান
  • আপনার নির্মাণাধীন কুবারনেটিস অ্যাপ্লিকেশনের জন্য ডিবাগিং সহায়তা
  • লগ স্ট্রিমিং এবং দেখা

ক্লাউড কোডের অন্যান্য বৈশিষ্ট্য সম্পর্কে আরও জানুন।

আপনি যা শিখবেন

এই ল্যাবে আপনি GCP-তে কন্টেইনার ব্যবহার করে ডেভেলপ করার পদ্ধতিগুলো শিখবেন, যার মধ্যে অন্তর্ভুক্ত রয়েছে:

  • ক্লাউড ওয়ার্কস্টেশন পর্যালোচনা করুন
  • লঞ্চ ওয়ার্কস্টেশন
  • ক্লাউড কোড পর্যালোচনা করুন
  • কুবারনেটিসে ডিবাগ করুন

২. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিতে পরিবেশ সেটআপ

  1. Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
  • প্রজেক্ট আইডি সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (একবার সেট করার পর এটি পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর প্রয়োজন হয় না। বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এটি সাধারণত PROJECT_ID হিসাবে চিহ্নিত করা হয়)। তৈরি করা আইডিটি আপনার পছন্দ না হলে, আপনি এলোমেলোভাবে আরেকটি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রজেক্টের পুরো সময়কাল জুড়ে এটি অপরিবর্তিত থাকবে।
  • আপনার অবগতির জন্য জানাচ্ছি যে, তৃতীয় একটি ভ্যালু রয়েছে, যা হলো প্রজেক্ট নাম্বার এবং কিছু এপিআই এটি ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি ভ্যালু সম্পর্কে আরও বিস্তারিত জানুন।
  1. এরপর, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হওয়ার কথা নয়, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর যাতে কোনো বিলিং না হয়, সেজন্য রিসোর্সগুলো বন্ধ করতে আপনি আপনার তৈরি করা রিসোর্সগুলো অথবা পুরো প্রজেক্টটিই ডিলিট করে দিতে পারেন। গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

পরিবেশ সেটআপ

ক্লাউড শেলে, আপনার প্রজেক্টের জন্য প্রজেক্ট আইডি এবং প্রজেক্ট নম্বর সেট করুন। এগুলোকে PROJECT_ID এবং PROJECT_ID ভেরিয়েবল হিসেবে সংরক্ষণ করুন।

export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \
    --format='value(projectNumber)')

এই ল্যাবে আপনি GKE-তে কোড ডেপ্লয় করবেন। এছাড়াও আপনি IDE হিসেবে ক্লাউড ওয়ার্কস্টেশন ব্যবহার করবেন।

নিচের সেটআপ স্ক্রিপ্টটি আপনার জন্য এই পরিকাঠামোটি প্রস্তুত করে।

  1. সেটআপ স্ক্রিপ্টটি ডাউনলোড করে এটিকে এক্সিকিউটেবল করুন।
wget https://raw.githubusercontent.com/GoogleCloudPlatform/container-developer-workshop/main/labs/python/setup_with_cw.sh
chmod +x setup_with_cw.sh
  1. setup_with_cw.sh ফাইলটি খুলুন এবং বর্তমানে CHANGEME হিসেবে সেট করা পাসওয়ার্ডের মানগুলো সম্পাদনা করুন।
  2. এই ল্যাবে ব্যবহারের জন্য একটি GKE ক্লাস্টার তৈরি করতে সেটআপ স্ক্রিপ্টটি চালান। এই সেটআপ করতে প্রায় ২০ মিনিট সময় লাগবে।
./setup_with_cw.sh &
  1. ক্লাউড কনসোলে ক্লাউড ওয়ার্কস্টেশনগুলো খুলুন। পরবর্তী ধাপে যাওয়ার আগে ক্লাস্টারটি READY অবস্থায় আসা পর্যন্ত অপেক্ষা করুন।
  2. আপনার ক্লাউড শেল সেশনটি সংযোগ বিচ্ছিন্ন হয়ে গেলে, "পুনরায় সংযোগ করুন" (Reconnect) বোতামে ক্লিক করুন এবং তারপরে প্রজেক্ট আইডি সেট করার জন্য gcloud cli কমান্ডটি চালান। কমান্ডটি চালানোর আগে, নীচের নমুনা প্রজেক্ট আইডিটি আপনার কুইকল্যাবস প্রজেক্ট আইডি দিয়ে প্রতিস্থাপন করুন।
gcloud config set project qwiklabs-gcp-project-id
  1. ক্লাউড ওয়ার্কস্টেশন কনফিগারেশন তৈরি করতে নিচের স্ক্রিপ্টটি ডাউনলোড করে টার্মিনালে চালান।
wget https://raw.githubusercontent.com/GoogleCloudPlatform/container-developer-workshop/main/labs/python/workstation_config_setup.sh
chmod +x workstation_config_setup.sh
./workstation_config_setup.sh

ক্লাউড ওয়ার্কস্টেশন ক্লাস্টার এবং কনফিগারেশন

ক্লাউড কনসোলে ক্লাউড ওয়ার্কস্টেশনগুলো খুলুন। ক্লাস্টারটি READY অবস্থায় আছে কিনা তা যাচাই করুন।

305e1a3d63ac7ff6.png

বিদ্যমান কনফিগারেশনগুলোর অবস্থা যাচাই করুন।

2e23c2e9983d1ccf.png

একটি নতুন ওয়ার্কস্টেশন তৈরি করুন।

a53adeeac81a78c8.png

নাম পরিবর্তন করে my-workstation রাখুন এবং বিদ্যমান কনফিগারেশন codeoss-python নির্বাচন করুন।

f052cd47701ec774.png

লঞ্চ ওয়ার্কস্টেশন

  1. ওয়ার্কস্টেশনটি চালু করুন। ওয়ার্কস্টেশনটি চালু হতে কয়েক মুহূর্ত সময় লাগবে।

682f8a307032cba3.png

  1. অ্যাড্রেস বারের আইকনটিতে ক্লিক করে থার্ড পার্টি কুকিজের অনুমতি দিন। 1b8923e2943f9bc4.png

fcf9405b6957b7d7.png

  1. 'সাইট কাজ করছে না?'-এ ক্লিক করুন।

36a84c0e2e3b85b.png

  1. "কুকিজের অনুমতি দিন"-এ ক্লিক করুন।

2259694328628fba.png

  1. ওয়ার্কস্টেশনটি চালু হলেই আপনি Code OSS IDE দেখতে পাবেন।

ওয়ার্কস্টেশন IDE-র Getting Started পেজে থাকা 'Mark Done'-এ ক্লিক করুন।

94874fba9b74cc22.png

৩. ক্লাউড কোডের সংক্ষিপ্ত বিবরণ

ক্লাউড কোডে উপলব্ধ বিভিন্ন বিভাগ পর্যালোচনা করুন।

  • কুবারনেটিস ডেভেলপমেন্ট। আপনার IDE-এর মধ্যেই একটি সম্পূর্ণ সমন্বিত কুবারনেটিস ডেভেলপমেন্ট এবং ডিবাগিং পরিবেশ পান। সরাসরি IDE-এর ভেতর থেকেই ক্লাস্টার তৈরি এবং পরিচালনা করুন।
  • চলমান অ্যাপ্লিকেশন ডিবাগ করুন। Cloud Code for VS Code এবং Cloud Code for IntelliJ ব্যবহার করে আপনার IDE-এর বিল্ট-ইন ডিবাগিং ফিচারগুলোর সাহায্যে IDE-এর ভেতরের কোড ডিবাগ করুন।
  • ডিপ্লয়মেন্টগুলো অন্বেষণ করুন। আপনার কুবারনেটিস ক্লাস্টার এবং ক্লাউড রান পরিষেবাগুলোর অন্তর্নিহিত রিসোর্স ও মেটাডেটা দেখুন। আপনি বিবরণ সংগ্রহ করতে, লগ দেখতে, সিক্রেট পরিচালনা করতে, অথবা সরাসরি একটি পডে টার্মিনাল অ্যাক্সেস করতে পারেন।
  • Kubernetes লোকাল ডেভেলপমেন্ট সহজ করুন। নেপথ্যে, Cloud Code for IDEs আপনার কোডের উপর রিয়েল-টাইমে অবিরাম ফিডব্যাক দেওয়ার জন্য Skaffold, Jib, এবং kubectl-এর মতো জনপ্রিয় টুল ব্যবহার করে।

e4e89eea9ff45dff.png

গুগল ক্লাউডে সাইন ইন করুন

  1. ক্লাউড কোড আইকনে ক্লিক করুন এবং 'গুগল ক্লাউডে সাইন ইন করুন' নির্বাচন করুন:

1769afd39be372ff.png

  1. 'সাইন ইন করতে এগিয়ে যান'-এ ক্লিক করুন।

923bb1c8f63160f9.png

  1. টার্মিনালে আউটপুটটি দেখুন এবং লিঙ্কটি খুলুন:

517fdd579c34aa21.png

  1. আপনার কুইকল্যাবস ছাত্র পরিচয়পত্র দিয়ে লগইন করুন।

db99b345f7a8e72c.png

  1. "অনুমতি দিন" নির্বাচন করুন:

a5376553c430ac84.png

  1. যাচাইকরণ কোডটি কপি করে ওয়ার্কস্টেশন ট্যাবে ফিরে যান।

6719421277b92eac.png

  1. যাচাইকরণ কোডটি পেস্ট করে এন্টার চাপুন।

e9847cfe3fa8a2ce.png

এই বার্তাটি দেখতে পেলে "Allow" বোতামে ক্লিক করুন, যাতে আপনি ওয়ার্কস্টেশনে কপি পেস্ট করতে পারেন।

58149777e5cc350a.png

৪. একটি নতুন পাইথন স্টার্টার অ্যাপ্লিকেশন তৈরি করুন।

এই অংশে আপনি একটি নতুন পাইথন অ্যাপ্লিকেশন তৈরি করবেন।

  1. একটি নতুন টার্মিনাল খুলুন।

c31d48f2e4938c38.png

  1. একটি নতুন ডিরেক্টরি তৈরি করুন এবং এটিকে ওয়ার্কস্পেস হিসেবে খুলুন।
mkdir music-service && cd music-service

code-oss-cloud-workstations -r --folder-uri="$PWD"
  1. requirements.txt নামে একটি ফাইল তৈরি করুন এবং নিম্নলিখিত বিষয়বস্তুগুলো এর মধ্যে কপি করুন।

789e8389170bd900.png

Flask
gunicorn
ptvsd==4.3.2
  1. app.py নামে একটি ফাইল তৈরি করুন এবং এতে নিম্নলিখিত কোডটি পেস্ট করুন।
import os
from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route("/")
def hello_world():
    message="Hello, World!"
    return message

if __name__ == '__main__':
    server_port = os.environ.get('PORT', '8080')
    app.run(debug=False, port=server_port, host='0.0.0.0')

  1. Dockerfile নামে একটি ফাইল তৈরি করুন এবং এর মধ্যে নিম্নলিখিত বিষয়বস্তু পেস্ট করুন।
FROM python:3.8
ARG FLASK_DEBUG=0
ENV FLASK_DEBUG=$FLASK_DEBUG
ENV FLASK_APP=app.py
WORKDIR /app
COPY requirements.txt .
RUN pip install --trusted-host pypi.python.org -r requirements.txt
COPY . .
ENTRYPOINT ["python3", "-m", "flask", "run", "--port=8080", "--host=0.0.0.0"]

দ্রষ্টব্য : FLASK_DEBUG=1 একটি পাইথন ফ্লাস্ক অ্যাপে কোডের পরিবর্তনগুলো স্বয়ংক্রিয়ভাবে রিলোড করতে দেয়। এই ডকারফাইলটি আপনাকে এই মানটিকে একটি বিল্ড আর্গুমেন্ট হিসেবে পাস করার সুযোগ দেয়।

ম্যানিফেস্ট তৈরি করুন

আপনার টার্মিনালে একটি ডিফল্ট skaffold.yaml এবং deployment.yaml ফাইল তৈরি করতে নিম্নলিখিত কমান্ডটি চালান।

  1. নিম্নলিখিত কমান্ডের সাহায্যে Skaffold চালু করুন।
skaffold init --generate-manifests

নির্দেশিত হলে, কার্সার সরাতে অ্যারো কী এবং অপশনগুলো নির্বাচন করতে স্পেসবার ব্যবহার করুন।

বেছে নিন:

  • বন্দরের জন্য 8080
  • কনফিগারেশন সংরক্ষণ করতে y চাপুন

স্ক্যাফোল্ড কনফিগারেশন আপডেট করুন

  • ডিফল্ট অ্যাপ্লিকেশনের নাম পরিবর্তন করুন
  • skaffold.yaml খুলুন
  • বর্তমানে dockerfile-image হিসেবে সেট করা ইমেজের নামটি নির্বাচন করুন।
  • ডান ক্লিক করুন এবং সমস্ত ঘটনা পরিবর্তন করুন নির্বাচন করুন
  • নতুন নামটি python-app হিসেবে টাইপ করুন।
  • বিল্ড বিভাগটি আরও সম্পাদনা করুন
  • FLASK_DEBUG=1 পাস করার জন্য docker.buildArgs যোগ করুন
  • IDE থেকে চলমান কন্টেইনারে *.py ফাইলগুলির যেকোনো পরিবর্তন লোড করতে সেটিংস সিঙ্ক করুন।

সম্পাদনাগুলোর পর, skaffold.yaml ফাইলের বিল্ড সেকশনটি নিম্নরূপ হবে:

build:
 artifacts:
 - image: python-app
   docker:
     buildArgs:
       FLASK_DEBUG: "1"
     dockerfile: Dockerfile
   sync:
     infer:
     - '**/*.py'

কুবারনেটিস কনফিগারেশন ফাইল পরিবর্তন করুন

  1. ডিফল্ট নাম পরিবর্তন করুন
  • deployment.yaml ফাইলটি খুলুন
  • বর্তমানে dockerfile-image হিসেবে সেট করা ইমেজের নামটি নির্বাচন করুন।
  • ডান ক্লিক করুন এবং সমস্ত ঘটনা পরিবর্তন করুন নির্বাচন করুন
  • নতুন নামটি python-app হিসেবে টাইপ করুন।

৫. উন্নয়ন প্রক্রিয়াটি পর্যালোচনা করা

বিজনেস লজিক যোগ করার পর আপনি এখন আপনার অ্যাপ্লিকেশনটি ডেপ্লয় এবং টেস্ট করতে পারবেন। পরবর্তী অংশে ক্লাউড কোড প্লাগইনের ব্যবহার দেখানো হবে। অন্যান্য কাজের পাশাপাশি, এই প্লাগইনটি আপনার ডেভেলপমেন্ট প্রক্রিয়াকে আরও সহজ করতে স্ক্যাফোল্ডের সাথে ইন্টিগ্রেট করে। পরবর্তী ধাপগুলোতে যখন আপনি GKE-তে ডেপ্লয় করবেন, ক্লাউড কোড এবং স্ক্যাফোল্ড স্বয়ংক্রিয়ভাবে আপনার কন্টেইনার ইমেজ বিল্ড করবে, সেটিকে একটি কন্টেইনার রেজিস্ট্রি-তে পুশ করবে এবং তারপর your অ্যাপ্লিকেশনটি GKE-তে ডেপ্লয় করবে। এই পুরো প্রক্রিয়াটি নেপথ্যে সম্পন্ন হয়, যা ডেভেলপারের কাজের ধারা থেকে এর খুঁটিনাটি বিষয়গুলো আড়াল করে রাখে।

কুবারনেটিস ক্লাস্টার যোগ করুন

  1. একটি ক্লাস্টার যোগ করুন

62a3b97bdbb427e5.png

  1. গুগল কুবারনেটিস ইঞ্জিন নির্বাচন করুন:

9577de423568bbaa.png

  1. প্রকল্প নির্বাচন করুন।

c5202fcbeebcd41c.png

  1. প্রাথমিক সেটআপে তৈরি করা 'python-cluster' নির্বাচন করুন।

719c2fc0a7f9e84f.png

  1. ক্লাস্টারটি এখন কুবারনেটিস ক্লাস্টার তালিকায় ক্লাউড কোডের অধীনে দেখা যাচ্ছে। এখান থেকে ক্লাস্টারটি নেভিগেট ও অন্বেষণ করুন।

7e5f50662d4eea3c.png

কুবারনেটিসে ডিপ্লয় করুন

  1. Cloud Shell Editor-এর নিচের প্যানে, Cloud Code নির্বাচন করুন।

d99a88992e15fea9.png

  1. উপরে প্রদর্শিত প্যানেলে, ‘Run on Kubernetes’ নির্বাচন করুন।

অনুরোধ করা হলে, বর্তমান Kubernetes কনটেক্সট ব্যবহার করতে 'হ্যাঁ' নির্বাচন করুন।

bfd65e9df6d4a6cb.png

এই কমান্ডটি সোর্স কোডের একটি বিল্ড শুরু করে এবং তারপর টেস্টগুলো চালায়। বিল্ড এবং টেস্টগুলো চলতে কয়েক মিনিট সময় লাগবে। এই টেস্টগুলোর মধ্যে ইউনিট টেস্ট এবং একটি ভ্যালিডেশন ধাপ অন্তর্ভুক্ত রয়েছে, যা ডেপ্লয়মেন্ট এনভায়রনমেন্টের জন্য সেট করা নিয়মগুলো যাচাই করে। এই ভ্যালিডেশন ধাপটি আগে থেকেই কনফিগার করা থাকে, এবং এটি নিশ্চিত করে যে আপনি আপনার ডেভেলপমেন্ট এনভায়রনমেন্টে কাজ করার সময়েও ডেপ্লয়মেন্ট সংক্রান্ত সমস্যার সতর্কতা পাবেন।

  1. প্রথমবার কমান্ডটি চালালে স্ক্রিনের উপরে একটি প্রম্পট আসবে, যেখানে জিজ্ঞাসা করা হবে আপনি বর্তমান কুবারনেটিস কনটেক্সটটি চান কিনা। বর্তমান কনটেক্সটটি গ্রহণ ও ব্যবহার করতে 'Yes' নির্বাচন করুন।
  2. এরপর কোন কন্টেইনার রেজিস্ট্রি ব্যবহার করতে হবে তা জানতে চেয়ে একটি প্রম্পট প্রদর্শিত হবে। প্রদত্ত ডিফল্ট মানটি গ্রহণ করতে এন্টার চাপুন।
  3. অগ্রগতি এবং বিজ্ঞপ্তি দেখতে নিচের প্যানে 'আউটপুট' ট্যাবটি নির্বাচন করুন। ড্রপডাউন ব্যবহার করে 'Kubernetes: Run/Debug' নির্বাচন করুন।

9c87ccbf5d06f50a.png

  1. কন্টেইনারগুলো থেকে সরাসরি সম্প্রচারিত অতিরিক্ত বিবরণ এবং লগ দেখতে ডানদিকের চ্যানেল ড্রপ-ডাউন থেকে 'Kubernetes: Run/Debug - Detailed' নির্বাচন করুন।

804abc8833ffd571.png

বিল্ড এবং টেস্ট সম্পন্ন হলে, আউটপুট ট্যাবের লগগুলিতে "Kubernetes: Run/Debug" ভিউতে http://localhost:8080 ইউআরএলটি তালিকাভুক্ত থাকবে।

  1. ক্লাউড কোড টার্মিনালে, আউটপুটের প্রথম URL-টির (http://localhost:8080) উপর মাউস রাখুন এবং তারপরে যে টুল টিপটি প্রদর্শিত হবে, সেখান থেকে 'Open Web Preview' নির্বাচন করুন।
  2. একটি নতুন ব্রাউজার ট্যাব খুলবে এবং বার্তাটি প্রদর্শন করবে: Hello, World!

হট রিলোড

  1. app.py ফাইলটি খুলুন
  2. শুভেচ্ছা বার্তাটি পরিবর্তন করে Hello from Python

অবিলম্বে লক্ষ্য করুন যে Output উইন্ডোর Kubernetes: Run/Debug ভিউতে, ওয়াচারটি Kubernetes-এর কন্টেইনারের সাথে আপডেট হওয়া ফাইলগুলো সিঙ্ক করে।

Update initiated
Build started for artifact python-app
Build completed for artifact python-app

Deploy started
Deploy completed

Status check started
Resource pod/python-app-6f646ffcbb-tn7qd status updated to In Progress
Resource deployment/python-app status updated to In Progress
Resource deployment/python-app status completed successfully
Status check succeeded
...
  1. আপনি যদি Kubernetes: Run/Debug - Detailed view-তে যান, তাহলে লক্ষ্য করবেন যে এটি ফাইলের পরিবর্তন শনাক্ত করে অ্যাপটি বিল্ড ও রিডিপ্লয় করে।
files modified: [app.py]
Syncing 1 files for gcr.io/veer-pylab-01/python-app:3c04f58-dirty@sha256:a42ca7250851c2f2570ff05209f108c5491d13d2b453bb9608c7b4af511109bd
Copying files:map[app.py:[/app/app.py]]togcr.io/veer-pylab-01/python-app:3c04f58-dirty@sha256:a42ca7250851c2f2570ff05209f108c5491d13d2b453bb9608c7b4af511109bd
Watching for changes...
[python-app] * Detected change in '/app/app.py', reloading
[python-app] * Restarting with stat
[python-app] * Debugger is active!
[python-app] * Debugger PIN: 744-729-662
  1. আপডেট করা ফলাফল দেখতে, আপনার ব্রাউজার ট্যাবটি রিফ্রেশ করুন যেখানে আপনি আগের ফলাফল দেখেছিলেন।

ডিবাগিং

  1. ডিবাগ ভিউতে যান এবং বর্তমান থ্রেডটি বন্ধ করুন। 647213126d7a4c7b.png জিজ্ঞাসা করা হলে, আপনি প্রতিটি রানের পরে পরিষ্কার করার বিকল্পটি বেছে নিতে পারেন।
  2. 70d6bd947d04d1e6.png
  3. অ্যাপ্লিকেশনটি debug মোডে চালানোর জন্য নিচের মেনুতে থাকা Cloud Code -এ ক্লিক করুন এবং Debug on Kubernetes নির্বাচন করুন।

b9465c6825caf685.png

  • Kubernetes Run/Debug - Detailed view of Output উইন্ডোতে লক্ষ্য করুন যে, skaffold এই অ্যাপ্লিকেশনটি ডিবাগ মোডে ডেপ্লয় করবে।
  1. প্রথমবার এটি চালানোর সময় একটি প্রম্পট জিজ্ঞাসা করবে যে কন্টেইনারের ভিতরে সোর্সটি কোথায় আছে। এই মানটি Dockerfile-এর ডিরেক্টরিগুলোর সাথে সম্পর্কিত।

ডিফল্ট গ্রহণ করতে এন্টার চাপুন।

fccc866f32b5ed86.png

অ্যাপ্লিকেশনটি বিল্ড এবং ডেপ্লয় হতে কয়েক মিনিট সময় লাগবে। যদি ডিবাগ সেশনটি বিচ্ছিন্ন হয়ে যায়, তাহলে "ডেভেলপমেন্ট সেশনস" সেকশন থেকে "ডিবাগ অন কুবারনেটিস" ধাপগুলো পুনরায় অনুসরণ করুন।

  1. প্রক্রিয়াটি সম্পন্ন হলে, আপনি দেখবেন একটি ডিবাগার সংযুক্ত হয়েছে এবং আউটপুট ট্যাবে লেখা থাকবে: Attached debugger to container "python-app-8476f4bbc-h6dsl" successfully. , এবং http://localhost:8080 ইউআরএলটি তালিকাভুক্ত থাকবে।
Port forwarding pod/python-app-8bd64cf8b-cskfl in namespace default, remote port 5678 -> http://127.0.0.1:5678
  1. নিচের স্ট্যাটাস বারটির রঙ নীল থেকে কমলায় পরিবর্তিত হলে তা ডিবাগ মোডে থাকার ইঙ্গিত দেয়।

b2abd61a129ed76.png

  1. Kubernetes Run/Debug ভিউতে লক্ষ্য করুন যে একটি Debuggable কন্টেইনার চালু হয়েছে।
**************URLs*****************
Forwarded URL from service python-app: http://localhost:8080
Debuggable container started pod/python-app-8bd64cf8b-cskfl:python-app (default)
Update succeeded
***********************************

ব্রেকপয়েন্ট ব্যবহার করুন

  1. app.py ফাইলটি খুলুন
  2. যে স্টেটমেন্টটিতে return message লেখা আছে, সেটি খুঁজে বের করুন।
  3. লাইন নম্বরের বাম পাশের ফাঁকা জায়গায় ক্লিক করে ওই লাইনে একটি ব্রেকপয়েন্ট যোগ করুন। ব্রেকপয়েন্ট সেট করা হয়েছে তা বোঝাতে একটি লাল ইন্ডিকেটর দেখা যাবে।
  4. আপনার ব্রাউজারটি রিলোড করুন এবং লক্ষ্য করুন যে ডিবাগারটি ব্রেকপয়েন্টে প্রসেসটিকে থামিয়ে দেয় এবং আপনাকে GKE-তে দূরবর্তীভাবে চলমান অ্যাপ্লিকেশনটির ভেরিয়েবল ও অবস্থা খতিয়ে দেখার সুযোগ করে দেয়।
  5. VARIABLES বিভাগে ক্লিক করুন
  6. Locals-এ ক্লিক করুন, সেখানে আপনি "message" ভেরিয়েবলটি খুঁজে পাবেন।
  7. 'message' ভেরিয়েবল নামের উপর ডাবল ক্লিক করুন এবং পপ-আপে, মানটি পরিবর্তন করে "Greetings from Python"
  8. ডিবাগ কন্ট্রোল প্যানেলে থাকা কন্টিনিউ বাটনে ক্লিক করুন। 607c33934f8d6b39.png
  9. আপনার ব্রাউজারে প্রাপ্ত প্রতিক্রিয়াটি পর্যালোচনা করুন, যেখানে এখন আপনার এইমাত্র প্রবেশ করানো হালনাগাদ মানটি দেখাচ্ছে।
  10. স্টপ বাটন টিপে 'ডিবাগ' মোড বন্ধ করুন। 647213126d7a4c7b.png এবং ব্রেকপয়েন্টটিতে আবার ক্লিক করে সেটি সরিয়ে ফেলুন।

৬. পরিষ্কার-পরিচ্ছন্নতা

অভিনন্দন! এই ল্যাবে আপনি একেবারে শুরু থেকে একটি নতুন পাইথন অ্যাপ্লিকেশন তৈরি করেছেন এবং এটিকে কন্টেইনারের সাথে কার্যকরভাবে কাজ করার জন্য কনফিগার করেছেন। এরপর আপনি প্রচলিত অ্যাপ্লিকেশন স্ট্যাকে পাওয়া ডেভেলপার ফ্লো অনুসরণ করে আপনার অ্যাপ্লিকেশনটি একটি রিমোট GKE ক্লাস্টারে ডেপ্লয় ও ডিবাগ করেছেন।

ল্যাব শেষ করার পর পরিষ্কার করার জন্য:

  1. ল্যাবে ব্যবহৃত ফাইলগুলো মুছে ফেলুন।
cd ~ && rm -rf ~/music-service
  1. সম্পর্কিত সমস্ত পরিকাঠামো ও সম্পদ অপসারণ করতে প্রকল্পটি মুছে ফেলুন।

সর্বশেষ হালনাগাদ: ২২/৩/২৩