ক্লাউড ডিপ্লোয়ের সাথে ক্লাউড রান অ্যাপ্লিকেশন স্থাপন করা হচ্ছে

1। সংক্ষিপ্ত বিবরণ

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

916a54f51af5ee54.png

ক্লাউড বিল্ড কি?

ক্লাউড বিল্ডের সাহায্যে আপনি সমস্ত প্রোগ্রামিং ভাষা জুড়ে দ্রুত সফ্টওয়্যার তৈরি করতে পারেন।

Cloud Deploy কি?

ক্লাউড ডিপ্লোয় একটি সম্পূর্ণরূপে পরিচালিত ক্রমাগত বিতরণ পরিষেবা। Cloud Deploy এর মাধ্যমে আপনি GKE, Anthos এবং Cloud Ruনের জন্য স্থাপনার পাইপলাইন তৈরি করতে পারেন।

ক্লাউড রান কি?

ক্লাউড রানের সাহায্যে আপনি সম্পূর্ণরূপে পরিচালিত প্ল্যাটফর্মে যেকোনো ভাষায় (গো, পাইথন, জাভা, Node.js, .NET, এবং রুবি সহ) লেখা স্কেলেবল কন্টেইনারাইজড অ্যাপ্লিকেশন স্থাপন করতে পারেন।

Skaffold কি?

Skaffold হল একটি কমান্ড-লাইন টুল যা Kubernetes-নেটিভ অ্যাপ্লিকেশনগুলির জন্য ক্রমাগত বিকাশকে সক্ষম করে। ক্লাউড ডিপ্লয় রেন্ডার এবং ডিপ্লোয় অপারেশনের জন্য স্ক্যাফোল্ড ব্যবহার করে।

যা শিখবেন

এই ল্যাবে, আপনি নিম্নলিখিতগুলি কীভাবে করবেন তা শিখবেন:

  • ক্লাউড ডিপ্লয় পাইপলাইন তৈরি করুন
  • ডকারফাইল ব্যবহার না করে ক্লাউড বিল্ডের সাথে নেট অ্যাপ্লিকেশনের জন্য কন্টেইনার ইমেজ তৈরি করুন
  • ক্লাউড ডিপ্লয় সহ ক্লাউড রানে অ্যাপ্লিকেশন স্থাপন করুন
  • ক্লাউড ডিপ্লয় রিলিজ প্রচার করুন

পূর্বশর্ত

  • এই ল্যাবটি ক্লাউড কনসোল এবং শেল পরিবেশের সাথে পরিচিতি অনুমান করে।

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

ক্লাউড প্রজেক্ট সেটআপ

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

এনভায়রনমেন্ট সেটআপ

অনুসন্ধান বারের ডানদিকে আইকনে ক্লিক করে ক্লাউড শেল সক্রিয় করুন।

eb0157a992f16fa3.png

ক্লাউড শেল থেকে, প্রকল্প পরিবেশ ভেরিয়েবল সেট করতে নিম্নলিখিত কমান্ডটি চালান:

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

APIs সক্ষম করুন:

gcloud services enable \
  run.googleapis.com \
  cloudbuild.googleapis.com \
  clouddeploy.googleapis.com \
  artifactregistry.googleapis.com

অ্যাপ্লিকেশন কন্টেইনার ইমেজ সংরক্ষণ করতে আর্টিফ্যাক্ট রেজিস্ট্রি সংগ্রহস্থল তৈরি করুন:

gcloud artifacts repositories create containers-repo \
  --repository-format=docker \
  --location=${REGION} \
  --description="Containers repository"

3. কনফিগারেশন ফাইল পর্যালোচনা করুন

29c2533441779de0.png

ক্লোন অ্যাপ্লিকেশন সোর্স কোড:

git clone https://github.com/gitrey/deploy-cloudrun-app-with-clouddeploy.git
cd deploy-cloudrun-app-with-clouddeploy

ক্লাউড ডিপ্লোয় পাইপলাইন কনফিগারেশন পর্যালোচনা করুন:

clouddeploy.yaml

apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
 name: cloud-run-pipeline
description: application deployment pipeline
serialPipeline:
 stages:
 - targetId: dev-env
   profiles: [dev]
 - targetId: qa-env
   profiles: [qa]
 - targetId: prod-env
   profiles: [prod]
---

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: dev-env
description: Cloud Run development service
run:
 location: projects/_PROJECT_ID/locations/us-west1
---

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: qa-env
description: Cloud Run QA service
run:
 location: projects/_PROJECT_ID/locations/us-central1
---

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: prod-env
description: Cloud Run PROD service
run:
 location: projects/_PROJECT_ID/locations/us-south1

skaffold.yaml ফাইলটি পর্যালোচনা করুন যা তিনটি পরিবেশকে সংজ্ঞায়িত করে এবং এটি লক্ষ্য পরিষেবা হিসাবে ক্লাউড রান ব্যবহার করছে৷

skaffold.yaml

apiVersion: skaffold/v3alpha1
kind: Config
metadata: 
  name: cloud-run-app
profiles:
- name: dev
  manifests:
    rawYaml:
    - deploy-dev.yaml
- name: qa
  manifests:
    rawYaml:
    - deploy-qa.yaml
- name: prod
  manifests:
    rawYaml:
    - deploy-prod.yaml
deploy:
  cloudrun: {}

পরিষেবা কনফিগারেশন ফাইল পর্যালোচনা করুন.

deploy-dev.yaml

kind: Service
metadata:
  name: app-dev
spec:
  template:
    spec:
      containers:
      - image: app
        resources:
          limits:
            cpu: 1000m
            memory: 128Mi

deploy-qa.yaml

kind: Service
metadata:
  name: app-dev
spec:
  template:
    spec:
      containers:
      - image: app

deploy-prod.yaml

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: app-prod
spec:
  template:
    spec:
      containers:
      - image: app

একটি কন্টেইনার ইমেজ তৈরি করতে এবং ক্লাউড ডিপ্লোয় রিলিজ তৈরি করার ধাপ সহ cloudbuild.yaml ফাইল পর্যালোচনা করুন:

cloudbuild.yaml

steps:
- name: 'gcr.io/k8s-skaffold/pack'
  entrypoint: 'pack'
  args: ['build',
         '--builder=gcr.io/buildpacks/builder',
         '--publish', '${_REGION}-docker.pkg.dev/${PROJECT_ID}/containers-repo/app:$BUILD_ID']
  id: Build and package .net app
- name: gcr.io/google.com/cloudsdktool/cloud-sdk:slim
  args: 
      [
        "deploy", "releases", "create", "release-$_RELEASE_TIMESTAMP",
        "--delivery-pipeline", "cloud-run-pipeline",
        "--region", "${_REGION}",
        "--images", "app=${_REGION}-docker.pkg.dev/${PROJECT_ID}/containers-repo/app:$BUILD_ID"
      ]
  entrypoint: gcloud

4. ক্লাউড ডিপ্লয় পাইপলাইন তৈরি করুন

clouddeploy.yaml-এ _PROJECT_ID মান প্রতিস্থাপন করুন:

sed -i "s/_PROJECT_ID/$PROJECT_ID/g" clouddeploy.yaml

ক্লাউড ডিপ্লয় পাইপলাইন তৈরি করুন:

gcloud deploy apply \
  --file=clouddeploy.yaml \
  --region=${REGION} \
  --project=${PROJECT_ID}

Cloud Deploy- এ তৈরি পাইপলাইন পর্যালোচনা করুন।

5. কনটেইনার ইমেজ তৈরি করুন এবং একটি রিলিজ তৈরি করুন

ক্লাউড বিল্ড পরিষেবা অ্যাকাউন্টে ক্লাউড ডিপ্লয় অপারেটর অনুমতি যোগ করুন:

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
    --member=serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com \
    --role=roles/clouddeploy.operator

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
    --member=serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com \
    --role=roles/iam.serviceAccountUser

কন্টেইনার ইমেজ এবং ক্লাউড ডিপ্লয় রিলিজ তৈরি করুন:

export RELEASE_TIMESTAMP=$(date '+%Y%m%d-%H%M%S')

gcloud builds submit \
  --config cloudbuild-plus.yaml \
  --substitutions=_REGION=${REGION},_RELEASE_TIMESTAMP=${RELEASE_TIMESTAMP}

Cloud Deploy- এ রিভিউ তৈরি করা রিলিজ। দেব পরিবেশে স্থাপনা সম্পূর্ণ না হওয়া পর্যন্ত অপেক্ষা করুন।

6. QA এবং PROD পরিবেশে প্রকাশের প্রচার করুন

ক্লাউড কনসোল বা ক্লাউড শেল ব্যবহার করে, রিলিজকে পরবর্তী টার্গেটে (qa-env) প্রচার করুন।

ক্লাউড শেল দিয়ে রিলিজ প্রচার করুন, রিলিজ প্রচার করতে gcloud কমান্ড চালান।

gcloud beta deploy releases promote \
    --release="release-${RELEASE_TIMESTAMP}" \
    --delivery-pipeline=cloud-run-pipeline \
    --region=${REGION} \
    --quiet

QA পরিবেশে স্থাপনা সম্পন্ন না হওয়া পর্যন্ত অপেক্ষা করুন। রিলিজকে পরবর্তী টার্গেটে (prod-env) প্রচার করুন।

gcloud beta deploy releases promote \
    --release="release-${RELEASE_TIMESTAMP}" \
    --delivery-pipeline=cloud-run-pipeline \
    --region=${REGION} \
    --quiet

ক্লাউড কনসোলে ক্লাউড ডিপ্লয় খুলুন এবং প্রোডাকশন ডিপ্লয়মেন্টের জন্য রিলিজ অনুমোদন করুন।

4c838b60770e9691.png

ক্লাউড ডিপ্লোয় পাইপলাইন অবস্থা এবং উপলব্ধ DORA মেট্রিক্স পর্যালোচনা করুন ("ডিপ্লয়মেন্ট কাউন্ট", "ডিপ্লয়মেন্ট ফ্রিকোয়েন্সি", "ডিপ্লয়মেন্ট ব্যর্থতার হার")।

মেট্রিক

বর্ণনা

স্থাপনার সংখ্যা

আপনার ডেলিভারি পাইপলাইনে চূড়ান্ত লক্ষ্যে সফল এবং ব্যর্থ স্থাপনার মোট সংখ্যা।

স্থাপনার ফ্রিকোয়েন্সি

কত ঘন ঘন ডেলিভারি পাইপলাইন আপনার ডেলিভারি পাইপলাইনে চূড়ান্ত লক্ষ্যে স্থাপন করে। DevOps রিসার্চ অ্যান্ড অ্যাসেসমেন্ট (DORA) প্রোগ্রাম দ্বারা সংজ্ঞায়িত চারটি মূল মেট্রিকের মধ্যে একটি।

স্থাপনার ব্যর্থতার হার

আপনার ডেলিভারি পাইপলাইনে চূড়ান্ত লক্ষ্যে ব্যর্থ রোলআউটের শতাংশ।

ক্লাউড রানে স্থাপন করা অ্যাপ্লিকেশন পর্যালোচনা করুন:

d6372b5350f10875.png

7. অভিনন্দন!

অভিনন্দন, আপনি কোডল্যাব শেষ করেছেন!

আমরা যা কভার করেছি:

  • ক্লাউড ডিপ্লয় পাইপলাইন কিভাবে তৈরি করবেন
  • ক্লাউড বিল্ডের সাথে নেট অ্যাপ্লিকেশনের জন্য কন্টেইনার ইমেজ কীভাবে তৈরি করবেন
  • ক্লাউড ডিপ্লোয় সহ ক্লাউড রানে অ্যাপ্লিকেশন কীভাবে স্থাপন করবেন
  • কিভাবে ক্লাউড ডিপ্লয় রিলিজ প্রচার করা যায়

পরিষ্কার কর

এই টিউটোরিয়ালে ব্যবহৃত সংস্থানগুলির জন্য আপনার Google ক্লাউড অ্যাকাউন্টে চার্জ এড়াতে, হয় সংস্থানগুলি রয়েছে এমন প্রকল্পটি মুছুন, অথবা প্রকল্পটি রাখুন এবং পৃথক সংস্থানগুলি মুছুন৷

প্রকল্প মুছে ফেলা হচ্ছে

বিলিং দূর করার সবচেয়ে সহজ উপায় হল আপনি টিউটোরিয়ালের জন্য তৈরি করা প্রকল্পটি মুছে ফেলা।

8. পরবর্তী কি