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

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

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

কৃতিত্ব: নীল কলবান

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

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

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

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

প্রস্তুতি

এই টিউটোরিয়ালটি সম্পূর্ণ করতে আপনার দুটি Google ক্লাউড প্রকল্পের প্রয়োজন। আমরা তাদের মধ্যে একটিকে হোস্ট প্রজেক্ট এবং অন্যটিকে ক্লায়েন্ট প্রকল্প হিসাবে কল করতে যাচ্ছি। প্রথমটি হ'ল আপনি যেখানে একটি প্রকল্প তৈরি করতে যাচ্ছেন এবং অন্যটি হ'ল যেখানে আপনার অ্যাপ্লিকেশন এবং এর পরিষেবা অ্যাকাউন্ট রয়েছে।

ফাংশনের আইএএম নীতি সেট করতে সক্ষম হতে হোস্ট প্রকল্পে আপনার ক্লাউড ফাংশনস অ্যাডমিন (ক্লাউডফুনিউশনস অ্যাডমিন) এর ভূমিকা প্রয়োজন। ক্লায়েন্ট প্রকল্পে পরিষেবা অ্যাকাউন্ট এবং কীগুলি তৈরি করতে আপনার পরিষেবা অ্যাকাউন্ট প্রশাসক (iam.serviceAccountAdmin) এবং পরিষেবা অ্যাকাউন্ট ব্যবহারকারী (iam.serviceAccountUser) ভূমিকা দরকার।

ফাংশন তৈরি করা হচ্ছে

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

কয়েক সেকেন্ডের মধ্যে, কনসোলে এই ফাংশনটি অ্যাক্সেস করার জন্য আপনাকে url উপস্থাপন করা হবে। এই URL টি নিম্নলিখিত ফর্ম্যাটে রয়েছে:

https://REGION-HOST_PROJECT_ID.cloudfunctions.net/FUNCTION_NAME

চালান

কার্ল https://REGION-HOST_PROJECT_ID.cloudfunifications.net/FUNCTION_NAME

আপনাকে ফাংশনটি চালাবার অনুমতি নেই তা নিশ্চিত করার জন্য।

অন্য প্রকল্পে একটি পরিষেবা অ্যাকাউন্ট তৈরি করা হচ্ছে

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

গ্লকউড আইএএম পরিষেবা-অ্যাকাউন্টগুলি ক্লাউড-চালনার পরীক্ষা তৈরি করে C - প্রকল্প CLIENT_PROJECT_ID

পরিষেবা অ্যাকাউন্টের জন্য একটি JSON কী তৈরি করুন:

গ্লকউড আইএএম পরিষেবা-অ্যাকাউন্ট কীগুলি শংসাপত্র তৈরি করে j জেসন - আইয়াম-অ্যাকাউন্ট \ ক্লাউড-ইনভোক- টেস্ট @ সিএলআইআইপিপ্রোজেইসিT_ID.iam.gserviceaccਉਂ

পরিষেবা অ্যাকাউন্ট শংসাপত্রাদি সহ ফাংশন চালানো

আপনার ক্লকউডের জন্য পরিষেবা অ্যাকাউন্টটি সক্রিয় করুন:

gcloud auth এক্টিভেট-সার্ভিস-অ্যাকাউন্ট - কি-ফাইল = শংসাপত্র। জেসন

এখন, আপনার gcloud কমান্ড পরিষেবা অ্যাকাউন্ট হিসাবে কাজ করছে। আপনাকে যে ক্রিয়াকলাপটি শুরু করতে হবে সেই বার্নার টোকেনটি নিম্নলিখিত কমান্ডের মাধ্যমে প্রাপ্ত হবে:

gcloud auth মুদ্রণ-পরিচয়-টোকেন

কমান্ডটি চালানোর পরে নিশ্চিত হয়ে নিন যে আপনি একটি টোকেন পেয়েছেন।

এখন, আপনি অনুরোধে এই টোকেন যুক্ত করতে পারেন এবং ফাংশনটি চালনার চেষ্টা করতে পারেন:

কার্ল https://REGION-HOST_PROJECT_ID.cloudfunifications.net/FUNCTION_NAME -H "অনুমোদন: বহনকারী $ (gcloud লেখক প্রিন্ট-পরিচয়-টোকেন)"

এই অনুরোধটি ব্যর্থ হবে যেহেতু ক্লাউড ফাংশনটি এখনও এই পরিষেবা অ্যাকাউন্ট থেকে অনুরোধগুলি গ্রহণের জন্য কনফিগার করা হয়নি।

ফাংশনে অনুমতি প্রদান

যেহেতু আপনি ক্লাউড ফাংশনস অ্যাডমিন তাই আপনি প্রতিটি ক্লাউড ফাংশনের জন্য আইএএম নীতিমালা সেট করতে সক্ষম হন। এখন আপনি নিম্নলিখিত কমান্ডের মাধ্যমে ক্লায়েন্ট প্রকল্প থেকে পরিষেবা অ্যাকাউন্টে ভোল / ক্লাউডফুনিউশন.আইভোকারের অনুমতি নির্ধারণ করতে পারেন:

gcloud আলফা ফাংশনগুলি অ্যাড-আইএএম-পলিসি-বাইন্ডিং FUNCTION_NAME _NAME - অঞ্চল অঞ্চল - প্রকল্প HOST_PROJECT_ID - মেম্বার পরিষেবা অ্যাকাউন্ট: ক্লাউড[email protected]_PROJECT_ID.iam.gserviceaccاؤن.com তোমার ইমেইল

দয়া করে মনে রাখবেন যে আমাদের - অ্যাকাউন্টের প্যারামিটারটি যুক্ত করতে হয়েছিল কারণ পূর্ববর্তী পদক্ষেপে আপনি পরিষেবা অ্যাকাউন্টটি আপনার ডিফল্ট পরিচয় হিসাবে সক্রিয় করেছিলেন। তবে, পরিষেবা অ্যাকাউন্টের ক্লাউড ফাংশনে আইএএম নীতি সেট করার অনুমতি নেই, সুতরাং আমাদের আপনার অ্যাকাউন্ট হিসাবে কাজ করতে হবে।

কয়েক মিনিট পরে, অনুমতিগুলি নিষ্পত্তি হয়ে গেলে, অ্যাক্সেস টোকেন দিয়ে আবার কার্ল কমান্ডটি চালান:

কার্ল https://REGION-HOST_PROJECT_ID.cloudfunifications.net/FUNCTION_NAME -H "অনুমোদন: বহনকারী $ (gcloud লেখক প্রিন্ট-পরিচয়-টোকেন)"

আপনি মেঘ ফাংশনের আউটপুট দেখতে যাচ্ছেন।

প্রোগ্রামিংয়ে ফাংশনটিকে একটি টোকেনের সাহায্যে প্রেরণ করা হচ্ছে

প্রাক-প্রাক-পরিবেশে চলমান অ্যাপ্লিকেশনগুলির জন্য, অ্যাপ্লিকেশনটির সাথে পরিষেবা অ্যাকাউন্ট কী বিতরণ করা এবং টোকেন উত্পন্ন করতে গুগলের লেখক লাইব্রেরি ব্যবহার করা সম্ভব। নীচে আপনি নোড.জেএস-তে একটি উদাহরণ খুঁজে পেতে পারেন:

দয়া করে নোট করুন এখানে পরিষেবা অ্যাকাউন্ট কী এর মাধ্যমে অ্যাক্সেস টোকেন আনার পরে শ্রোতারা অনুরোধ URL এর সমান।

অন্যান্য প্রোগ্রামিং ভাষার আরও উদাহরণের জন্য গুগল ক্লাউড আইএপি ডকুমেন্টেশন দেখুন।

ওয়ার্কলোড পরিচয় ব্যবহার করে জি কেই ওয়ার্ক লোড থেকে প্রোগ্রামিয়ালি ফাংশনটি অনুরোধ করা হচ্ছে

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

আপনার অ্যাপ্লিকেশনটি যখন জিকেইতে চলছে, আপনি কোন কুবেরনেটস পড (আসলে এই পোডটি কুডরনেটস পরিষেবা অ্যাকাউন্টটি চলছে) কোন জিসিপি ভূমিকা ধরে নিতে পারে তা নির্ধারণ করার জন্য আপনি ওয়ার্কলোড পরিচয় ব্যবহার করতে পারেন।

যেহেতু ডকুমেন্টেশনটি যথেষ্ট বিশদযুক্ত, আমরা একটি পডের জন্য কীভাবে ওয়ার্কলোড পরিচয় সেটআপ করতে হবে তা ব্যাখ্যা করে এখানে চলে গেলাম। একবার আপনি সেটআপটি শেষ করে আপনি পূর্বে তৈরি জিসিপি পরিষেবা অ্যাকাউন্টটি দিয়ে একটি পড পরিচালনা করলে নীচের URL টি পডের ভিতরে থেকে অ্যাক্সেস কীটি ফিরিয়ে দেবে:

HTTP: // মেটাডেটা / computeMetadata / v1 এ / উদাহরণস্বরূপ / সেবা-হিসাব / ডিফল্ট / পরিচয় শ্রোতা = HTTPS: //REGION-HOST_PROJECT_ID.cloudfunctions.net/FUNCTION_NAME

আপনার অ্যাপ্লিকেশনটি এই ইউআরএলে অ্যাক্সেস করতে পারে এবং অ্যাক্সেস টোকেন আনতে পারে, তারপরে এই টোকনটিকে নিজের প্রমাণীকরণের জন্য ক্লাউড ফাংশন অনুরোধে যুক্ত করুন।

দয়া করে নোট করুন যে এই পদ্ধতিটি আপনার পূর্বে তৈরি পরিষেবা অ্যাকাউন্ট কী ব্যবহার করে না। এই সেটআপের পিছনে সমস্ত ধারণা শংসাপত্রাদি পরিচালনা না করায় আপনি আসলে আপনার তৈরি সমস্ত পরিষেবা অ্যাকাউন্ট কী মুছে ফেলতে পারেন এবং করা উচিত should

বিস্তারিত উদাহরণের জন্য দয়া করে গুগলের নথিটি দেখুন।

উপসংহার

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