ভিপিসি সার্ভিস কন্ট্রোল পরিধির মধ্যে কীভাবে একটি ক্লাউড রান কাজের সময়সূচী করবেন

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 চালিয়ে সমস্ত উপলব্ধ প্রকল্পের তালিকা দেখতে পারেন।