1. ভূমিকা
ওভারভিউ
যদি আপনার GCP প্রকল্পটি একটি VPC SC পরিধির মধ্যে থাকে, তাহলে আপনাকে নির্ধারিত কাজ সেট আপ করার জন্য অতিরিক্ত পদক্ষেপ নিতে হবে। যেহেতু ক্লাউড শিডিউলার সরাসরি VPC SC পরিধির মধ্যে কাজগুলি ট্রিগার করতে পারে না, তাই আপনাকে অন্য উপাদানের মাধ্যমে অনুরোধটি প্রক্সি করতে হবে। আমরা এই প্রক্সি হিসাবে একটি ক্লাউড রান পরিষেবা ব্যবহার করার পরামর্শ দিই৷
স্থাপত্য এই মত দেখায়:
আপনি কি শিখবেন
- ভিপিসি এসসি পরিধির মধ্যে একটি সময়সূচীতে কীভাবে একটি ক্লাউড রান জব চালানো যায়
- কীভাবে একটি ক্লাউড রান পরিষেবা তৈরি করবেন যা ক্লাউড রান ক্লায়েন্ট লাইব্রেরি ব্যবহার করে একটি ক্লাউড রান জব ট্রিগার করে
- একটি সময়সূচীতে একটি ক্লাউড রান পরিষেবা চালু করতে ক্লাউড শিডিউলারকে কীভাবে কনফিগার করবেন
2. আপনি শুরু করার আগে
প্রথমে, নিশ্চিত করুন যে আপনি VPC পরিষেবা নিয়ন্ত্রণের জন্য ক্লাউড রান সেট আপ করার পদক্ষেপগুলি অনুসরণ করেছেন৷
এরপরে, পরিবেশের ভেরিয়েবল সেট করুন যা এই কোডল্যাব জুড়ে ব্যবহার করা হবে।
PROJECT_ID=<YOUR_PROJECT_ID> REGION=<YOUR_REGION> AR_REPO=sample-job-repo CLOUD_RUN_SERVICE=job-runner-service CLOUD_RUN_JOB=sample-job CLOUD_SCHEDULER=job-scheduler SERVICE_ACCOUNT="cloud-run-invoker-sa" SERVICE_ACCOUNT_ADDRESS=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com NETWORK=default SUBNET=default
3. ক্লাউড রান কাজ তৈরি করুন
এই কোডল্যাব নমুনা ক্লাউড রান কাজের ধারক ব্যবহার করে।
প্রথমে, আপনার ক্লাউড রান জব কন্টেইনারের জন্য একটি আর্টিফ্যাক্ট রেজিস্ট্রি রেপো তৈরি করুন।
gcloud artifacts repositories create $AR_REPO --repository-format=docker --location=$REGION --description="codelab for Cloud Run jobs on schedule within VPC SC"
এরপর, আপনার VPC SC-কনফিগার করা প্রকল্পের মধ্যে একটি আর্টিফ্যাক্ট রেজিস্ট্রিতে নমুনা ক্লাউড রান জব কন্টেইনারটি অনুলিপি করুন। আপনি এই ইনস্টলেশন নির্দেশাবলী অনুসরণ করে এটি করতে gcrane টুল ব্যবহার করতে পারেন। আপনি সংগ্রহস্থলগুলির মধ্যে চিত্রগুলি অনুলিপি করার জন্য ডকুমেন্টেশনে গ্রেন সম্পর্কে আরও শিখতে পারেন।
gcrane cp us-docker.pkg.dev/cloudrun/container/job:latest $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$CLOUD_RUN_JOB:latest
দ্বিতীয়ত, আপনার ক্লাউড রানের কাজটি স্থাপন করুন যা ভিপিসি পরিষেবা নিয়ন্ত্রণের জন্য অভিযোগ।
gcloud run jobs create $CLOUD_RUN_JOB --region $REGION \ --image $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$CLOUD_RUN_JOB:latest \ --network=$NETWORK \ --subnet=$SUBNET \ --vpc-egress=all-traffic
চাকরি তৈরির বিষয়ে আরও তথ্যের জন্য, দয়া করে ক্লাউড রান জবস ডকুমেন্টেশনে তালিকাভুক্ত ধাপগুলি অনুসরণ করুন।
4. একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন
ক্লাউড রান জব কল করার জন্য এই পরিষেবা অ্যাকাউন্টটি ক্লাউড রান ব্যবহার করবে।
প্রথমে, এই কমান্ডটি চালিয়ে পরিষেবা অ্যাকাউন্ট তৈরি করুন:
gcloud iam service-accounts create $SERVICE_ACCOUNT \ --display-name="Cloud Run to run a Cloud Run job"
দ্বিতীয়ত, পরিষেবা অ্যাকাউন্টে ক্লাউড রান ইনভোকার ভূমিকা এবং ক্লাউড রান ভিউয়ার ভূমিকা মঞ্জুর করুন৷
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_ADDRESS \ --role=roles/run.invoker gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_ADDRESS \ --role=roles/run.viewer
5. ক্লাউড রান পরিষেবা তৈরি করুন৷
এই ধাপে, আপনি একটি ক্লাউড রান পরিষেবা স্থাপন করবেন যা একটি প্রক্সি হিসাবে কাজ করে৷
mkdir job-runner-service && cd $_
নিম্নলিখিত কোড দিয়ে main.py
নামে একটি ফাইল তৈরি করুন।
import os from flask import Flask app = Flask(__name__) # pip install google-cloud-run from google.cloud import run_v2 @app.route('/') def hello(): client = run_v2.JobsClient() # UPDATE TO YOUR JOB NAME, REGION, AND PROJECT ID job_name = 'projects/YOUR_PROJECT_ID/locations/YOUR_JOB_REGION/jobs/YOUR_JOB_NAME' print("Triggering job...") request = run_v2.RunJobRequest(name=job_name) operation = client.run_job(request=request) response = operation.result() print(response) return "Done!" if __name__ == '__main__': app.run(debug=True, host="0.0.0.0", port=int(os.environ.get("PORT", 8080)))
নিম্নলিখিত কোড সহ requirements.txt
নামে একটি ফাইল তৈরি করুন।
google-cloud-run flask
অবশেষে, একটি Dockerfile
তৈরি করুন।
FROM python:3.9-slim-buster # for logging purposes ENV PYTHONUNBUFFERED=True WORKDIR /app COPY requirements.txt requirements.txt RUN pip install -r requirements.txt COPY . . CMD ["python3", "main.py"]
এরপরে, নিম্নলিখিত ডকার কমান্ডগুলি ব্যবহার করে ধারকটি তৈরি করুন। মনে রাখবেন যে উৎস-ভিত্তিক স্থাপনাগুলি একটি VPC SC পরিবেশে সেট আপ করা চ্যালেঞ্জিং হতে পারে। আপনার যদি একটি বিদ্যমান বিল্ড এবং ডিপ্লোয় পাইপলাইন থাকে, তাহলে এটিকে একটি কন্টেইনারে সোর্স কোড তৈরি করতে ব্যবহার করুন এবং ক্লাউড রান পরিষেবা হিসাবে কন্টেইনারটি স্থাপন করুন৷
docker build -t $CLOUD_RUN_SERVICE . docker tag $CLOUD_RUN_SERVICE $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$CLOUD_RUN_SERVICE docker push $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$CLOUD_RUN_SERVICE
এখন আপনার ক্লাউড রান পরিষেবা স্থাপন করুন যা ভিপিসি পরিষেবা নিয়ন্ত্রণের জন্য অভিযোগ।
gcloud run deploy $CLOUD_RUN_SERVICE --region $REGION \ --image $REGION-docker.pkg.dev/$PROJECT_ID/$AR_REPO/$CLOUD_RUN_SERVICE \ --service-account $SERVICE_ACCOUNT_ADDRESS \ --network=$NETWORK \ --subnet=$SUBNET \ --vpc-egress=all-traffic \ --no-allow-unauthenticated \ --ingress internal
এই কমান্ডটি চালিয়ে পরিষেবার শেষ পয়েন্ট URL সংরক্ষণ করুন:
SERVICE_URL=$(gcloud run services describe $CLOUD_RUN_SERVICE --region $REGION --format 'value(status.url)')
6. পরিষেবাটি ট্রিগার করতে একটি ক্লাউড শিডিউল কাজ তৈরি করুন৷
# create the Cloud Scheduler job gcloud scheduler jobs create http $CLOUD_SCHEDULER \ --location=$REGION \ --schedule="0 0 1 * *" \ --uri=$SERVICE_URL \ --http-method=GET \ --oidc-service-account-email=$SERVICE_ACCOUNT_ADDRESS
একবার ক্লাউড শিডিউলার কাজ তৈরি হয়ে গেলে, আপনি পরীক্ষার উদ্দেশ্যে অবিলম্বে ক্লাউড শিডিউলার জব চালানোর জন্য নিম্নলিখিত কমান্ডটি চালাতে পারেন:
gcloud scheduler jobs run $CLOUD_SCHEDULER --location=$REGION
দ্রষ্টব্য:
কাজ সম্পাদন সম্পূর্ণ করার জন্য আপনাকে কয়েক মিনিট অপেক্ষা করতে হতে পারে। আপনি ক্লাউড রান শিডিউলার পৃষ্ঠায় এর স্থিতি ট্র্যাক করতে পারেন।
নিম্নলিখিত কমান্ডগুলি চালিয়ে ক্লাউড রানের কাজটি সফলভাবে চালানো হয়েছে তা যাচাই করুন:
EXECUTION_NAME=$(gcloud run jobs describe $CLOUD_RUN_JOB --region $REGION --format 'value(status.latestCreatedExecution.name)') gcloud run jobs executions describe $EXECUTION_NAME --region $REGION
এবং আপনি নিম্নলিখিত অনুরূপ কিছু দেখতে হবে:
✔ Execution sample-job-w6hrj in region us-central1 1 task completed successfully Elapsed time: 28 seconds
7. অভিনন্দন!
কোডল্যাব সম্পূর্ণ করার জন্য অভিনন্দন!
আমরা কভার করেছি কি
- ভিপিসি এসসি পরিধির মধ্যে একটি সময়সূচীতে কীভাবে একটি ক্লাউড রান জব চালানো যায়
- কীভাবে একটি ক্লাউড রান পরিষেবা তৈরি করবেন যা ক্লাউড রান ক্লায়েন্ট লাইব্রেরি ব্যবহার করে একটি ক্লাউড রান জব ট্রিগার করে
- একটি সময়সূচীতে একটি ক্লাউড রান পরিষেবা চালু করতে ক্লাউড শিডিউলারকে কীভাবে কনফিগার করবেন
8. পরিষ্কার করুন
অসাবধানতাবশত চার্জ এড়াতে, (উদাহরণস্বরূপ, যদি ক্লাউড রান পরিষেবাগুলি আপনার মাসিক ক্লাউড রান ইনভোকমেন্ট বরাদ্দের চেয়ে বিনামূল্যের স্তরে অসাবধানতাবশত বেশি বার আহ্বান করা হয়), আপনি হয় GCP পরিষেবাগুলি মুছে ফেলতে পারেন বা ধাপ 2 এ আপনার তৈরি করা প্রকল্প মুছে ফেলতে পারেন৷
ক্লাউড রান পরিষেবা এবং ক্লাউড রান কাজ মুছে ফেলতে, https://console.cloud.google.com/run-এ ক্লাউড রান ক্লাউড কনসোলে যান এবং পরিষেবাটি মুছুন৷
আপনি যদি সম্পূর্ণ প্রকল্প মুছে ফেলার সিদ্ধান্ত নেন, আপনি https://console.cloud.google.com/cloud-resource-manager- এ যেতে পারেন, ধাপ 2-এ আপনার তৈরি করা প্রকল্পটি নির্বাচন করুন এবং মুছুন নির্বাচন করুন৷ আপনি যদি প্রকল্পটি মুছে ফেলেন, তাহলে আপনাকে আপনার ক্লাউড SDK-এ প্রকল্পগুলি পরিবর্তন করতে হবে৷ আপনি gcloud projects list
চালিয়ে সমস্ত উপলব্ধ প্রকল্পের তালিকা দেখতে পারেন।