ক্রস-ক্লাউড এজেন্টিক এন্টারপ্রাইজ ডেপ্লয়মেন্ট সুরক্ষিত করা

১. ভূমিকা

এই কোডল্যাবে, আপনি এজেন্ট ডেভেলপমেন্ট কিট (ADK), এজেন্ট ইঞ্জিন এবং গুগল কুবারনেটিস ইঞ্জিন ব্যবহার করে নিরাপদে একটি একক এজেন্ট / একাধিক টুল স্থাপন করবেন। আপনি শিখবেন কিভাবে জেমিনি এন্টারপ্রাইজে একজন ব্যবহারকারী দ্বারা শুরু করা একটি এআই এজেন্ট, এমসিপি টুলের প্রতিক্রিয়া থেকে আসা সংবেদনশীল ডেটা গোপন করার জন্য সার্ভিস এক্সটেনশন সহ জিকেই গেটওয়ের উপর নির্ভর করে নিরাপদে গুগল ক্লাউডে চলাচল করে।

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

আপনার যা প্রয়োজন

  • ক্রোমের মতো একটি ওয়েব ব্রাউজার
  • বিলিং সক্ষম একটি গুগল ক্লাউড প্রজেক্ট
  • টেরাফর্ম, কুবারনেটিস এবং পাইথন সম্পর্কে প্রাথমিক ধারণা

এই কোডল্যাবটি সেইসব ডেভেলপার এবং নিরাপত্তা পেশাদারদের জন্য, যারা এন্টারপ্রাইজ পরিবেশে এজেন্টিক ওয়ার্কফ্লো স্থাপন ও সুরক্ষিত করতে চান।

২. শুরু করার আগে

একটি গুগল ক্লাউড প্রজেক্ট তৈরি করুন এবং প্রয়োজনীয় এপিআইগুলো সক্রিয় করুন।

  1. গুগল ক্লাউড কনসোলের প্রজেক্ট সিলেক্টর পেজে, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
  2. আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। কোনো প্রোজেক্টে বিলিং চালু আছে কিনা তা কীভাবে পরীক্ষা করবেন, তা জেনে নিন।

প্রয়োজনীয় IAM ভূমিকা

এই কোডল্যাবটি ধরে নেয় যে আপনার গুগল ক্লাউড প্রজেক্টের জন্য আপনার প্রজেক্ট ওনার (Project Owner) রোল রয়েছে।

এপিআই সক্ষম করুন

  1. Google Cloud কনসোলে, ‘Activate Cloud Shell’- এ ক্লিক করুন: আপনি যদি আগে কখনও Cloud Shell ব্যবহার না করে থাকেন, তাহলে একটি প্যানেল আসবে যেখানে আপনাকে বুস্ট সহ বা বুস্ট ছাড়া একটি বিশ্বস্ত পরিবেশে Cloud Shell চালু করার বিকল্প দেওয়া হবে। যদি আপনাকে Cloud Shell-কে অনুমোদন করতে বলা হয়, তাহলে ‘Authorize’-এ ক্লিক করুন।
  2. ক্লাউড শেলে, সমস্ত প্রয়োজনীয় API সক্রিয় করুন:
    gcloud services enable \
    compute.googleapis.com \
    container.googleapis.com \
    dns.googleapis.com \
    certificatemanager.googleapis.com \
    dlp.googleapis.com \
    aiplatform.googleapis.com \
    discoveryengine.googleapis.com \
    apigee.googleapis.com
    

নির্ভরতা ইনস্টল করুন

ক্লাউড শেলে, প্রয়োজনীয় টুলগুলো ইনস্টল করা আছে কিনা তা নিশ্চিত করুন। Terraform, kubectl এবং Go সাধারণত আগে থেকেই ইনস্টল করা থাকে। আপনাকে uv (পাইথন প্যাকেজ ম্যানেজার) এবং Skaffold ইনস্টল করতে হবে।

# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# Install Skaffold
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && \
sudo install skaffold /usr/local/bin/

পরিবেশ ভেরিয়েবল সেট করুন

এই কোডল্যাব জুড়ে ব্যবহৃত নিম্নলিখিত এনভায়রনমেন্ট ভেরিয়েবলগুলো সেট করুন:

export PROJECT_ID=$(gcloud config get project)
export REGION=us-central1
export LOCATION=${REGION}

একটি পাবলিক ডিএনএস জোন তৈরি করুন

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

জোনটি তৈরি করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:

gcloud dns managed-zones create "inference-gateway-zone" \
    --dns-name="gateway.example.com." \
    --description="Public zone for Inference Gateway" \
    --visibility="public" \
    --project="${PROJECT_ID}"

৩. একটি গিটহাব রিপোজিটরি ক্লোন করুন

  1. আপনার স্থানীয় মেশিনের টার্মিনালে, cloud-networking-solutions রিপোজিটরিটি ক্লোন করুন:
    git clone https://github.com/googleCloudPlatform/cloud-networking-solutions.git
    
  2. ডাউনলোড করা রিপোজিটরি ডিরেক্টরিতে যান:
    cd cloud-networking-solutions/demos/service-extensions-gke-gateway
    

৪. টেরাফর্ম ব্যবহার করে ইনফ্রাস্ট্রাকচার ডেপ্লয় করুন

আপনি টেরাফর্ম ব্যবহার করে ভিত্তিগত নেটওয়ার্ক, জিকেই ক্লাস্টার এবং প্রয়োজনীয় আইডেন্টিটি কনফিগারেশনগুলো প্রোভিশন করবেন।

  1. ক্লোন করা রিপোজিটরিতে থাকা terraform ডিরেক্টরিতে যান:
    cd terraform
    
  2. টেরাফর্ম ব্যাকএন্ড কনফিগার করুন। আংশিক ব্যাকএন্ড কনফিগারেশনের জন্য একটি backend.conf ফাইল তৈরি করুন। প্রতিস্থাপন করুন একটি বিশ্বব্যাপী অনন্য বাকেট নাম সহ।
    cat <<EOF > backend.conf
    bucket = "<YOUR_TERRAFORM_STATE_BUCKET>"
    prefix = "terraform"
    EOF
    
  1. উদাহরণ ভেরিয়েবল ফাইলটি কপি করুন এবং আপনার প্রোজেক্টের মান দিয়ে এটি আপডেট করুন:
    cp example.tfvars terraform.tfvars
    
  2. terraform.tfvars ফাইলটি সম্পাদনা করুন এবং প্লেসহোল্ডার মানগুলি প্রতিস্থাপন করুন। নিম্নলিখিতগুলি প্রতিস্থাপন করুন:
    • project_id : আপনার গুগল ক্লাউড প্রজেক্ট আইডি।
    • organization_id : আপনার সংখ্যাসূচক GCP অর্গানাইজেশন আইডি।
    • dns_zone_domain : আপনার নিয়ন্ত্রিত একটি ডোমেইন (যেমন, demo.example.com. )। এর শেষে অবশ্যই একটি ডট থাকতে হবে।
    নিম্নলিখিত ফিচার ফ্ল্যাগগুলি সক্রিয় করা আছে কিনা তা নিশ্চিত করুন (এগুলি উদাহরণ ফাইলে আগে থেকেই কনফিগার করা আছে):
    • enable_certificate_manager = true
    • enable_model_armor = true
    • enable_agent_engine = true
    • enable_psc_interface = true
  3. টেরাফর্ম কনফিগারেশন শুরু করুন এবং প্রয়োগ করুন:
    terraform init -backend-config=backend.conf
    terraform plan -out=tfplan
    terraform apply "tfplan"
    

৫. Skaffold ব্যবহার করে নমুনা ওয়ার্কলোড স্থাপন করুন

এরপরে, আপনার GKE ক্লাস্টারে MCP সার্ভার এবং এক্সটার্নাল প্রসেসিং সার্ভিসগুলো ডেপ্লয় করুন।

  1. Terraform দ্বারা তৈরি GKE ক্লাস্টারে সংযোগ করুন:
    gcloud container clusters get-credentials gateway-cluster \
        --region=${REGION} \
        --project=${PROJECT_ID}
    
  2. প্রজেক্ট রুটে ফিরে যান এবং কুবারনেটিস ম্যানিফেস্ট টেমপ্লেটগুলো কনফিগার করুন। উদাহরণ কনফিগারেশনটি কপি করুন এবং আপনার প্রজেক্ট আইডি ও বেস ডোমেইন সেট করুন: আপনার এনভায়রনমেন্টের সাথে মিলিয়ে BASE_DOMAIN সেট করুন। BASE_DOMAIN অবশ্যই আপনার dns_zone_domain টেরাফর্ম ভেরিয়েবলের (শেষের ডট ছাড়া) সাথে মিলতে হবে।
    export BASE_DOMAIN=example.com
    
  3. টেমপ্লেট থেকে Kubernetes ম্যানিফেস্ট এবং skaffold.yaml তৈরি করুন:
    bash k8s/generate.sh
    envsubst '${PROJECT_ID}' < skaffold.yaml.tmpl > skaffold.yaml
    
  4. সমস্ত ব্যাকএন্ড পরিষেবা স্থাপন করুন:
    skaffold run -m legacy-dms,income-verification-api,corporate-email,dlp-ext-proc
    
  5. গেটওয়ে এবং HTTPRoute কনফিগারেশন স্থাপন করুন:
    kubectl apply -k k8s/gateway-internal/
    

৬. মডেল আর্মার দিয়ে এআই গার্ডরেল প্রয়োগ করুন

আপনি কন্টেন্ট সুরক্ষার সিদ্ধান্ত, যেমন ক্ষতিকর প্রম্পট অপসারণ করা বা ডেটা ফাঁস প্রতিরোধ করার মতো কাজ, মডেল আর্মার-এর ওপর অর্পণ করতে পারেন।

পূর্বশর্ত: IAM ভূমিকা প্রদান করুন

আপনাকে অবশ্যই GKE গেটওয়ে সার্ভিস অ্যাকাউন্টে প্রয়োজনীয় ভূমিকাগুলো প্রদান করতে হবে। সার্ভিস অ্যাকাউন্টটির ফরম্যাট হলো: service-GATEWAY_PROJECT_NUMBER@gcp-sa-dep.iam.gserviceaccount.com

প্রয়োজনীয় অনুমতিগুলো প্রদান করতে নিম্নলিখিত কমান্ডগুলো চালান:

export GATEWAY_PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")

# Grant roles in the Gateway project
gcloud projects add-iam-policy-binding $PROJECT_ID \
 --member=serviceAccount:service-${GATEWAY_PROJECT_NUMBER}@gcp-sa-dep.iam.gserviceaccount.com \
 --role=roles/modelarmor.calloutUser

gcloud projects add-iam-policy-binding $PROJECT_ID \
 --member=serviceAccount:service-${GATEWAY_PROJECT_NUMBER}@gcp-sa-dep.iam.gserviceaccount.com \
 --role=roles/serviceusage.serviceUsageConsumer

# Grant role in the project containing Model Armor templates
gcloud projects add-iam-policy-binding $PROJECT_ID \
 --member=serviceAccount:service-${GATEWAY_PROJECT_NUMBER}@gcp-sa-dep.iam.gserviceaccount.com \
 --role=roles/modelarmor.user

মডেল আর্মার অনুমোদন এক্সটেনশন তৈরি করুন

একটি এক্সটেনশন নির্ধারণ করুন যা আপনার অঞ্চলের মডেল আর্মার পরিষেবাটিকে নির্দেশ করে। এই কনফিগারেশনটি ma-content-authz-extension.yaml নামে সংরক্ষণ করুন।

টেরাফর্ম দ্বারা তৈরি মডেল আর্মার টেমপ্লেট আইডিটি এক্সপোর্ট করুন।

export MA_TEMPLATE_ID=$(cd terraform && terraform output -raw model_armor_template_id)
cat >ma-content-authz-extension.yaml <<EOF
name: ma-ext
service: modelarmor.$LOCATION.rep.googleapis.com
metadata:
  model_armor_settings: '[
  {
  "response_template_id": "projects/${PROJECT_ID}/locations/$LOCATION/templates/${MA_TEMPLATE_ID}",
  "request_template_id": "projects/${PROJECT_ID}/locations/$LOCATION/templates/${MA_TEMPLATE_ID}"
  }
  ]'
failOpen: true
EOF

gcloud beta service-extensions authz-extensions import ma-ext \
    --source=ma-content-authz-extension.yaml \
    --location=$LOCATION

মডেল আর্মার অনুমোদন নীতি তৈরি করুন

এমন একটি পলিসি তৈরি করুন যা মডেল আর্মার এক্সটেনশনকে আপনার এজেন্ট গেটওয়ের সাথে সংযুক্ত করে। এই কনফিগারেশনটি ma-content-authz-policy.yaml নামে সংরক্ষণ করুন।

cat >ma-content-authz-policy.yaml <<EOF
name: ma-content-authz-policy
target:
  resources:
  -   "projects/$PROJECT_ID/locations/$LOCATION/gateways/mortgage-gateway"
policyProfile: CONTENT_AUTHZ
action: CUSTOM
customProvider:
  authzExtension:
    resources:
    -   "projects/$PROJECT_ID/locations/$LOCATION/authzExtensions/ma-ext"
EOF

gcloud network-security authz-policies import ma-content-authz-policy \
    --source=ma-content-authz-policy.yaml \
    --location=$LOCATION

৭. জেমিনি এন্টারপ্রাইজ কনফিগার করুন

পর্যবেক্ষণযোগ্যতা সক্ষম করুন

মর্টগেজ এজেন্টটি ওপেনটেলিমেট্রি ইন্সট্রুমেন্টেশন সহ ডেপ্লয় করা হয়েছে এবং নিম্নলিখিত টেলিমেট্রি এনভায়রনমেন্ট ভেরিয়েবলগুলো ডিফল্টরূপে সক্রিয় থাকে:

  • GOOGLE_CLOUD_AGENT_ENGINE_ENABLE_TELEMETRY=true
  • OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true
  • OTEL_TRACES_SAMPLER=parentbased_traceidratio

জেমিনি এন্টারপ্রাইজে ট্রেস এবং স্প্যান কনফিগার করার বিস্তারিত তথ্যের জন্য, ‘ম্যানেজ অবজার্ভেবিলিটি সেটিংস’ দেখুন।

জেমিনি এন্টারপ্রাইজে মডেল আর্মার সক্রিয় করুন

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

টেরাফর্ম আউটপুট থেকে টেমপ্লেটের নাম পুনরুদ্ধার করুন:

cd terraform
export GE_MA_TEMPLATE_NAME=$(terraform output -raw model_armor_gemini_enterprise_template_name)

আপনার জেমিনি এন্টারপ্রাইজ ইনস্ট্যান্সের অ্যাপ আইডিটি সংগ্রহ করুন:

  1. গুগল ক্লাউড কনসোলে, জেমিনি এন্টারপ্রাইজ পৃষ্ঠায় যান।
  2. ন্যাভিগেশন মেনু থেকে অ্যাপস-এ ক্লিক করুন।
  3. জেমিনি এন্টারপ্রাইজ ইনস্ট্যান্সের আইডিটি কপি করুন।

আইডিটি এনভায়রনমেন্ট ভেরিয়েবল হিসেবে এক্সপোর্ট করুন।

export APP_ID=<PASTE_APP_ID>

মডেল আর্মার সক্রিয় করতে অ্যাসিস্ট্যান্টকে প্যাচ করুন:

curl -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: ${PROJECT_ID}" \
  "https://global-discoveryengine.googleapis.com/v1/projects/${PROJECT_ID}/locations/global/collections/default_collection/engines/${APP_ID}/assistants/default_assistant?update_mask=customerPolicy" \
  -d '{
    "customerPolicy": {
      "modelArmorConfig": {
        "userPromptTemplate": "'"$GE_MA_TEMPLATE_NAME"'",
        "responseTemplate": "'"$GE_MA_TEMPLATE_NAME"'",
        "failureMode": "FAIL_OPEN"
      }
    }
  }'

মডেল আর্মার অনুপলব্ধ থাকলে অনুরোধগুলিকে অনুমতি দিতে failureMode FAIL_OPEN এ সেট করুন, অথবা সেগুলিকে ব্লক করতে FAIL_CLOSED সেট করুন।

৮. জেমিনি এন্টারপ্রাইজে এজেন্ট স্থাপন করুন এবং এজেন্ট যুক্ত করুন

অনুমোদনের বিবরণ সংগ্রহ করুন

অনুমোদনের বিবরণ পেতে এই ধাপগুলো অনুসরণ করুন।

  1. Google Cloud কনসোলে, APIs & Services পৃষ্ঠায়, Credentials পৃষ্ঠায় যান।
  2. পরিচয়পত্রে যান
  3. Create credentials-এ ক্লিক করুন এবং OAuth ক্লায়েন্ট আইডি নির্বাচন করুন।
  4. অ্যাপ্লিকেশন টাইপ-এ ওয়েব অ্যাপ্লিকেশন নির্বাচন করুন।
  5. অনুমোদিত রিডাইরেক্ট ইউআরআই (Authorized redirect URIs) বিভাগে, নিম্নলিখিত ইউআরআইগুলো যোগ করুন:
  • https://vertexaisearch.cloud.google.com/oauth-redirect
  • https://vertexaisearch.cloud.google.com/static/oauth/oauth.html
  1. তৈরি করুন-এ ক্লিক করুন।
  2. ডেপ্লয়মেন্টের জন্য ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট এক্সপোর্ট করুন।
export OAUTH_CLIENT_ID=<Client ID>
export OAUTH_CLIENT_SECRET=<Client Secret>

বন্ধকী এজেন্টকে নিয়োগ করুন

src/mortgage-agent/deploy_agent.py স্ক্রিপ্টটি ADK এজেন্টকে এজেন্ট ইঞ্জিনে স্থাপন করে এবং ঐচ্ছিকভাবে এটিকে জেমিনি এন্টারপ্রাইজে নিবন্ধন করে। জেমিনি এন্টারপ্রাইজ নিবন্ধন প্রক্রিয়া সম্পর্কে জানতে "একটি A2A এজেন্ট নিবন্ধন ও পরিচালনা" দেখুন।

টেরাফর্ম ডিপ্লয়মেন্ট থেকে ভেরিয়েবল এক্সপোর্ট করুন।

export VPC_NAME=$(cd terraform && terraform output -raw vpc_name)
export PSC_ATTACHMENT=$(cd terraform && terraform output -raw psc_interface_network_attachment_id)
export DNS_PEERING_DOMAIN=$(cd terraform && terraform output -raw psc_interface_dns_peering_domain)

নির্ভরতা ইনস্টল করুন এবং স্থাপন করুন:

cd src/mortgage-agent
uv sync

ভার্টেক্স এজেন্ট ইঞ্জিনে এজেন্ট স্থাপন করুন এবং জেমিনি এন্টারপ্রাইজে নিবন্ধন করুন:

uv run python deploy_agent.py \
    --project=${PROJECT_ID} \
    --dms-mcp-url=https://dms.${DNS_PEERING_DOMAIN%%.}/mcp \
    --income-verification-url=https://income-verification.${DNS_PEERING_DOMAIN%%.} \
    --email-mcp-url=https://email.${DNS_PEERING_DOMAIN%%.}/mcp \
    --network-attachment=projects/${PROJECT_ID}/regions/${REGION}/networkAttachments/${PSC_ATTACHMENT} \
    --dns-peering-domain=${DNS_PEERING_DOMAIN} \
    --dns-peering-target-project=${PROJECT_ID} \
    --dns-peering-target-network=${VPC_NAME} \
    --enable-agent-identity \
    --ge-deploy \
    --app-id=${APP_ID} \
    --oauth-client-id=${OAUTH_CLIENT_ID} \
    --agent-name=mortgage-agent

পতাকা রেফারেন্স

পতাকা

ডিফল্ট

বর্ণনা

--project

$PROJECT_ID

জিসিপি প্রকল্প আইডি

--dms-mcp-url

(প্রয়োজনীয়)

ডিএমএস এমসিপি সার্ভার ইউআরএল

--income-verification-url

(প্রয়োজনীয়)

আয় যাচাইকরণ এপিআই বেস ইউআরএল; /mcp স্বয়ংক্রিয়ভাবে যুক্ত হয়

--email-mcp-url

(প্রয়োজনীয়)

এমসিপি সার্ভার ইউআরএল ইমেল করুন

--region

$REGION

জিসিপি অঞ্চল

--staging-bucket

gs://PROJECT-staging

স্টেজিংয়ের জন্য GCS বাকেট

--display-name

Mortgage Assistant Agent

ডেপ্লয় করা এজেন্টের প্রদর্শনের নাম

--update

(ঐচ্ছিক)

বিদ্যমান এজেন্টকে সরাসরি আপডেট করুন (সম্পূর্ণ রিসোর্স নামটি দিন)

--network-attachment

(ঐচ্ছিক)

PSC ইন্টারফেসের জন্য নেটওয়ার্ক সংযুক্তি (সম্পূর্ণ পাথ বা নাম)

--dns-peering-domain

(ঐচ্ছিক)

PSC-I DNS পিয়ারিং-এর জন্য DNS ডোমেইন (অবশ্যই একটি ডট দিয়ে শেষ হতে হবে)

--dns-peering-target-project

(ঐচ্ছিক)

ডিএনএস পিয়ারিংয়ের জন্য টার্গেট ভিপিসি নেটওয়ার্ক হোস্টিং প্রজেক্ট

--dns-peering-target-network

(ঐচ্ছিক)

DNS পিয়ারিংয়ের জন্য VPC নেটওয়ার্কের নাম

--enable-agent-identity

false

প্রতি-এজেন্ট ন্যূনতম-সুবিধা ক্রেডেনশিয়াল সক্রিয় করুন

--ge-deploy

false

স্থাপনের পরে জেমিনি এন্টারপ্রাইজে এজেন্ট নিবন্ধন করুন

--app-id

(ঐচ্ছিক)

জেমিনি এন্টারপ্রাইজ ইঞ্জিন আইডি ( --ge-deploy এর সাথে আবশ্যক)

--oauth-client-id

$OAUTH_CLIENT_ID

OAuth2 ক্লায়েন্ট আইডি ( --ge-deploy সাথে আবশ্যক)

--oauth-client-secret

$OAUTH_CLIENT_SECRET

OAuth2 ক্লায়েন্ট সিক্রেট ( --ge-deploy এর সাথে আবশ্যক )

--model

gemini-3.1-flash-lite-preview

এজেন্টের জন্য জেমিনি মডেলের নাম

--agent-name

mortgage-agent

জেমিনি এন্টারপ্রাইজ অনুমোদন এবং এজেন্টের নাম

--ge-deploy-only

(ঐচ্ছিক)

পুনরায় স্থাপন না করেই জেমিনি এন্টারপ্রাইজে একটি বিদ্যমান রিজনিং ইঞ্জিন নিবন্ধন করুন (সম্পূর্ণ রিসোর্স নামটি দিন)

অনুমতিপ্রাপ্ত ব্যবহারকারী যোগ করুন

Google Cloud কনসোল ব্যবহার করে ADK এজেন্টে অনুমতিপ্রাপ্ত ব্যবহারকারী যুক্ত করতে, “ব্যবহারকারী এবং তাদের অনুমতি যোগ বা পরিবর্তন করুন” দেখুন।

৯. আপনার এজেন্টকে পরীক্ষা করুন

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

এজেন্টের সাথে সংযোগ স্থাপন

  1. গুগল ক্লাউড কনসোলে জেমিনি এন্টারপ্রাইজ পৃষ্ঠায় যান।
  2. পূর্বে কনফিগার করা Gemini Enterprise App-টি নির্বাচন করুন, যেখানে 'mortgage-agent' নিবন্ধিত আছে।
  3. ওভারভিউ ট্যাবে, 'আপনার জেমিনি এন্টারপ্রাইজ ওয়েবঅ্যাপ প্রস্তুত' বিভাগে দেখানো URL-টিতে ব্রাউজ করুন।
  4. বাম দিকের এজেন্ট গ্যালারি নামক মেনু থেকে এজেন্ট ট্যাবটি নির্বাচন করুন।
  5. এখন আপনি 'মর্টগেজ অ্যাসিস্ট্যান্ট এজেন্ট'-এর সাথে চ্যাট করতে পারবেন।

টেস্ট কেস ১: "সঠিক পথ" - ব্যক্তিগত শনাক্তকরণ তথ্য (PII) গোপন রেখে ডেটার সারসংক্ষেপ তৈরি

এই পরীক্ষাটি যাচাই করে যে এজেন্টটি এজেন্ট গেটওয়ের মাধ্যমে ব্যাকএন্ড সিস্টেমে প্রবেশ করতে পারে এবং সংবেদনশীল তথ্য গোপন করার জন্য ডেটা লস প্রিভেনশন (ডিএলপি) নীতিগুলি প্রয়োগ করা হয়েছে।

  1. মর্টগেজ অ্যাসিস্ট্যান্ট এজেন্টকে নিম্নলিখিত নির্দেশটি পাঠান:
    I'm reviewing the Sterling family's current application. Can you summarize their 2024 and 2025 tax returns and verify if their total household income meets our 2026 debt-to-income requirements?
    
  2. নেপথ্যে যা ঘটছে:
    • জেমিনি এন্টারপ্রাইজের এজেন্ট প্রয়োজনীয় টুলগুলোর (যেমন, ট্যাক্স রিটার্নের জন্য ডকুমেন্ট ম্যানেজমেন্ট সিস্টেম (ডিএমএস), ইনকাম ভেরিফিকেশন এপিআই) কাছে অনুরোধ তৈরি করে।
    • মডেল আর্মার হুমকির জন্য অনুরোধ এবং প্রতিক্রিয়া পেলোডগুলো পরীক্ষা করে।
    • আপনার কনফিগার করা "কন্টেন্ট-ভিত্তিক অনুমোদন নীতি" কাস্টম ডিএলপি এক্সটেনশন ( dlp-content-authz-ext ) সক্রিয় করে। এই এক্সটেনশনটি ব্যাকএন্ড সিস্টেমগুলো থেকে আনা ডেটা পরীক্ষা করে।
    • ডিএলপি পরিষেবাটি ট্যাক্স রিটার্নের ডেটা এজেন্টের কাছে পৌঁছানোর আগে তা থেকে সোশ্যাল সিকিউরিটি নম্বর (এসএসএন)-এর মতো যেকোনো ব্যক্তিগত শনাক্তকরণযোগ্য তথ্য (পিআইআই) মুছে ফেলে।
  3. প্রত্যাশিত ফলাফল: এজেন্ট ট্যাক্স রিটার্নের একটি সারাংশ এবং আয় যাচাইকরণ স্থিতি ফেরত দেবে। এজেন্টের দেওয়া সারাংশটি বিশেষভাবে পরীক্ষা করুন। আপনি লক্ষ্য করবেন যে করদাতা আইডি (এসএসএন)-এর মতো সংবেদনশীল তথ্য প্লেসহোল্ডার (যেমন, [REDACTED] ) দ্বারা প্রতিস্থাপিত হয়েছে। এটি গেটওয়ের মাধ্যমে ডিএলপি পলিসি কার্যকর হওয়া নিশ্চিত করে।

পর্যবেক্ষণযোগ্যতা এবং নিরীক্ষা

এই পরীক্ষাগুলো চলাকালীন, এজেন্ট প্ল্যাটফর্ম এবং সংশ্লিষ্ট পরিষেবাগুলো টেলিমেট্রি সংগ্রহ করছে:

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

আপনার সেশনগুলির ট্রেস দেখুন:

  1. গুগল ক্লাউড কনসোলে, Vertex AI Agent Engine পেজটিতে যান।
  2. এজেন্ট ইঞ্জিন- এ যান। নির্বাচিত প্রজেক্টের অংশ এমন এজেন্ট ইঞ্জিন ইনস্ট্যান্সগুলো তালিকায় প্রদর্শিত হবে। আপনি আপনার নির্দিষ্ট কলাম অনুযায়ী তালিকাটি ফিল্টার করতে ফিল্টার ফিল্ডটি ব্যবহার করতে পারেন।
  3. আপনার এজেন্ট ইঞ্জিন ইনস্ট্যান্সের নামে ক্লিক করুন।
  4. ট্রেসেস ট্যাবে ক্লিক করুন।
  5. আপনি সেশন ভিউ অথবা স্প্যান ভিউ নির্বাচন করতে পারেন।
  6. একটি সেশন বা স্প্যানের ট্রেস বিবরণ পরিদর্শন করতে সেটিতে ক্লিক করুন, যার মধ্যে এর স্প্যান, ইনপুট ও আউটপুটের একটি ডিরেক্টেড অ্যাসাইক্লিক গ্রাফ (DAG) এবং মেটাডেটা অ্যাট্রিবিউট অন্তর্ভুক্ত রয়েছে।

১০. ঐচ্ছিক: Apigee ব্যবহার করে REST API-কে MCP-তে রূপান্তর করা

যদিও আমাদের আয় যাচাইকরণ পরিষেবাটি মডেল কনটেক্সট প্রোটোকলকে (Model Context Protocol) স্বাভাবিকভাবেই সমর্থন করে, অনেক এন্টারপ্রাইজ লিগ্যাসি সিস্টেম শুধুমাত্র RESTful API প্রদান করে। এই ঐচ্ছিক ধাপে, আপনি Apigee MCP ডিসকভারি প্রক্সি ব্যবহার করে আয় যাচাইকরণ পরিষেবার REST এন্ডপয়েন্টকে একটি MCP টুলে ট্রান্সকোড করবেন। এটি আপনাকে আপনার লিগ্যাসি টুলগুলিতে Apigee-এর উন্নত গভর্নেন্স, রেট লিমিটিং এবং নিরাপত্তা নীতিগুলি প্রয়োগ করার সুযোগ দেয়।

আরও তথ্যের জন্য, Apigee MCP ওভারভিউ দেখুন।

পূর্বশর্ত

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

ধাপ ১: Apigee-এর জন্য একটি সার্ভিস অ্যাটাচমেন্ট তৈরি করুন

GKE-তে চলমান আপনার অভ্যন্তরীণ পরিষেবাগুলিতে Apigee-কে অ্যাক্সেস দেওয়ার জন্য, আপনাকে একটি পরিষেবা অ্যাটাচমেন্ট তৈরি করতে হবে।

  1. অভ্যন্তরীণ GKE গেটওয়ে ফরওয়ার্ডিং নিয়মটি খুঁজে বের করুন:
    export RULE_URI=$(gcloud compute forwarding-rules list \
      --filter="loadBalancingScheme=INTERNAL_MANAGED AND target~targetHttpsProxies" \
      --format="value(selfLink.segment(6), region.basename(), name)" | \
      awk '{print "projects/" $1 "/regions/" $2 "/forwardingRules/" $3}')
    
  2. পরিষেবা সংযুক্তি তৈরি করুন:
    gcloud compute service-attachments create internal-gke-gateway-apigee \
        --region=${REGION} \
        --target-service=$RULE_URI \
        --connection-preference=ACCEPT_AUTOMATIC \
        --nat-subnets=gateway-psc-subnet
    

ধাপ ২: Terraform-এর সাথে Apigee সক্রিয় করুন

এখন, Apigee অর্গানাইজেশন এবং ইনস্ট্যান্সটি প্রোভিশন করতে আপনার ইনফ্রাস্ট্রাকচার কনফিগারেশন আপডেট করুন।

  1. terraform ডিরেক্টরিতে যান:
    cd terraform
    
  2. terraform.tfvars সম্পাদনা করুন এবং enable_apigee = true সেট করুন।
  3. পরিবর্তনগুলো প্রয়োগ করুন:
    terraform apply
    

ধাপ ৩: ওপেনএপিআই স্পেসিফিকেশন নির্ধারণ করুন

Apigee টুলগুলি আবিষ্কার এবং ট্রান্সকোড করার জন্য স্ট্যান্ডার্ড OpenAPI (OAS) ডেফিনিশন ব্যবহার করে। income-verification-oas.yaml নামে একটি ফাইল তৈরি করুন এবং তাতে নিম্নলিখিত বিষয়বস্তু যোগ করুন:

openapi: 3.0.0
info:
  title: Income Verification API
  description: Verify applicant income through third-party employer records.
  version: 1.0.0
servers:
  -   url: https://income-verification.internal.${DNS_PEERING_DOMAIN%%.}/api
paths:
  /income-verification/verify:
    post:
      summary: Verify applicant income
      operationId: verifyApplicant
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                first_name:
                  type: string
                last_name:
                  type: string
      responses:
        '200':
          description: Successful verification
          content:
            application/json:
              schema:
                type: object

ধাপ ৪: Apigee MCP ডিসকভারি প্রক্সি স্থাপন করুন

এমসিপি ডিসকভারি প্রক্সি হলো একটি বিশেষায়িত এপিজি প্রক্সি যা এমসিপি সার্ভার হিসেবে কাজ করে।

  1. Apigee UI-তে, Develop > API Proxies- এ যান।
  2. Create New-তে ক্লিক করুন এবং MCP Discovery Proxy নির্বাচন করুন।
  3. প্রক্সি income-verification-discovery নাম দিন।
  4. OpenAPI Spec সেকশনে, আপনার তৈরি করা income-verification-oas.yaml ফাইলটি আপলোড করুন।
  5. এনভায়রনমেন্ট গ্রুপটি এমন একটিতে সেট করুন যেখান থেকে আপনার ইন্টারনাল গেটওয়েতে প্রবেশ করা যায়।
  6. ডিপ্লয়-এ ক্লিক করুন।

(ঐচ্ছিক) একটি নিরাপত্তা নীতি যোগ করুন

আপনার প্রক্সি স্থাপন বা শেয়ার করার আগে, এটিকে সুরক্ষিত করা উচিত। আপনি OAuth টোকেন বা API কী-এর মতো নিরাপত্তা সংক্রান্ত শর্তাবলী প্রয়োগ করতে পলিসি যোগ করতে পারেন। কীভাবে একটি নিরাপত্তা পলিসি যোগ করতে হয়, তার নির্দেশাবলীর জন্য API সুরক্ষিত করার বিষয়ে Apigee-এর ডকুমেন্টেশন দেখুন।

ধাপ ৫: ট্রান্সকোডেড টুলের অ্যাক্সেস যাচাই করুন

একবার স্থাপন করা হলে, Apigee স্বয়ংক্রিয়ভাবে POST /verify এন্ডপয়েন্টটিকে একটি verifyApplicant MCP টুলে রূপান্তরিত করে।

  1. Apigee MCP এন্ডপয়েন্টের মাধ্যমে উপলব্ধ টুলগুলির তালিকা দিন:
    curl -X POST https://api.internal.${DNS_PEERING_DOMAIN%%.}/income-verification-discovery/mcp \
      -H "Content-Type: application/json" \
      -d '{
        "jsonrpc": "2.0",
        "id": 1,
        "method": "tools/list",
        "params": {}
      }'
    
  2. আপনি রেসপন্সে verifyApplicant টুলটি দেখতে পাবেন, যা আপনার REST স্পেসিফিকেশন থেকে ট্রান্সকোড করা থাকবে। এখন আপনি Apigee-এর মাধ্যমে এই টুলটি কল করতে পারেন, এবং Apigee অন্তর্নিহিত REST সার্ভিসে এর অনুবাদের কাজটি করবে এবং আপনার কনফিগার করা যেকোনো নিরাপত্তা নীতি প্রয়োগ করবে।

ধাপ ৬: Apigee ব্যবহার করার জন্য মর্টগেজ এজেন্টকে আপডেট করুন।

এখন যেহেতু Apigee সফলভাবে আপনার REST API-কে একটি MCP-সম্মত টুলে রূপান্তর করছে, আপনাকে অবশ্যই এজেন্টের ডেপ্লয়মেন্ট কনফিগারেশন আপডেট করতে হবে। এজেন্টকে Apigee এন্ডপয়েন্টের দিকে নির্দেশ করার মাধ্যমে, সমস্ত আয় যাচাইকরণ অনুরোধ এখন Apigee-এর এন্টারপ্রাইজ-গ্রেড নিরাপত্তা, লগিং এবং ট্র্যাফিক ব্যবস্থাপনার সুবিধা পাবে।

  1. আপনার Apigee MCP URL শনাক্ত করুন: আপনার এন্ডপয়েন্টটি অবশ্যই এই প্যাটার্ন অনুসরণ করবে: https://api.internal.${DNS_PEERING_DOMAIN%%.}/income-verification-discovery/mcp
  2. ডিপ্লয়মেন্ট স্ক্রিপ্টটি পুনরায় চালান: নতুন --income-verification-url এর সাথে --update ফ্ল্যাগটি ব্যবহার করুন। এটি সম্পূর্ণভাবে মুছে ফেলার প্রয়োজন ছাড়াই এজেন্ট ইঞ্জিনে বিদ্যমান এজেন্টকে আপডেট করে।
    cd src/mortgage-agent
    
    # Update the agent to route income verification through Apigee
    uv run python deploy_agent.py \
        --project=${PROJECT_ID} \
        --update \
        --agent-name=mortgage-agent \
        --dms-mcp-url=https://dms.${DNS_PEERING_DOMAIN%%.}/mcp \
        --income-verification-url=https://api.internal.${DNS_PEERING_DOMAIN%%.}/income-verification-discovery/mcp \
        --email-mcp-url=https://email.${DNS_PEERING_DOMAIN%%.}/mcp \
        --network-attachment=projects/${PROJECT_ID}/regions/${REGION}/networkAttachments/${PSC_ATTACHMENT} \
        --dns-peering-domain=${DNS_PEERING_DOMAIN} \
        --dns-peering-target-project=${PROJECT_ID} \
        --dns-peering-target-network=${VPC_NAME} \
        --ge-deploy \
        --app-id=${APP_ID} \
        --oauth-client-id=${OAUTH_CLIENT_ID}
    
  1. পরিবর্তনটি যাচাই করুন: জেমিনি এন্টারপ্রাইজ ইন্টারফেসে ফিরে যান এবং এজেন্টকে একজন আবেদনকারীর আয় যাচাই করতে বলুন।
    "Can you verify the joint income for the Sterlings using the verification service?"
    
    Apigee Debug ট্যাবে , আপনি এখন দেখতে পাবেন যে GKE গেটওয়ে থেকে আসা JSON-RPC অনুরোধটি আপনার ব্যাকএন্ড GKE পরিষেবাতে একটি সাধারণ REST POST অনুরোধে রূপান্তরিত হচ্ছে।

১১. পরিষ্কার করুন

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

  1. সার্ভিস অ্যাটাচমেন্টটি যদি ম্যানুয়ালি তৈরি করা হয়ে থাকে, তাহলে সেটি মুছে ফেলুন:
    gcloud compute service-attachments delete internal-gke-gateway \
        --region=${REGION} --quiet
    
  2. terraform ডিরেক্টরিতে যান এবং সমস্ত রিসোর্স ধ্বংস করুন:
    cd terraform
    terraform destroy
    
  3. ঐচ্ছিকভাবে, গুগল ক্লাউড প্রজেক্টটি সম্পূর্ণরূপে মুছে ফেলুন:
    gcloud projects delete ${PROJECT_ID}
    

১২. অভিনন্দন

আপনি এই কোডল্যাবটি সম্পন্ন করেছেন এবং ক্রস-ক্লাউড এজেন্টিক এন্টারপ্রাইজ ডেপ্লয়মেন্ট সুরক্ষিত করার পদ্ধতি শিখেছেন।

আপনি যা কভার করেছেন

  • ওপেনটেলিমেট্রি ইন্সট্রুমেন্টেশন সহ এজেন্ট ইঞ্জিনে একটি ADK মর্টগেজ অ্যাসিস্ট্যান্ট এজেন্ট স্থাপন করা হয়েছে।
  • অভ্যন্তরীণ গেটওয়ের পিছনে GKE-তে ব্যাকএন্ড MCP সার্ভারগুলি স্থাপন করা হয়েছে।
  • PSC ইন্টারফেস এবং DNS পিয়ারিং ব্যবহার করে এজেন্ট ইঞ্জিনকে একটি প্রজেক্ট VPC-এর সাথে সংযুক্ত করা হয়েছে।
  • DLP গোপনীয়তা এবং MCP অনুমোদন সহ নিয়ন্ত্রিত এজেন্ট বহির্গমনের জন্য GKE গেটওয়ে কনফিগার করা হয়েছে।
  • দ্রুত ও প্রতিক্রিয়াশীল স্ক্রিনিংয়ের জন্য মডেল আর্মার সহ এআই গার্ডরেল প্রয়োগ করা হয়েছে।
  • Apigee MCP ডিসকভারি প্রক্সি ব্যবহার করে ঐচ্ছিকভাবে REST API-গুলিকে MCP-তে ট্রান্সকোড করা হয়।

পরবর্তী পদক্ষেপ