কিভাবে OCI আর্টিফ্যাক্টস, ORAS এবং ডকার হাবের মাধ্যমে সফ্টওয়্যার ডেলিভারির মানসম্মত করা যায়

ORAS লোগো

ডকার হাব হল সবচেয়ে পরিচিত রেজিস্ট্রি ধারক ছবি বিতরণ এবং ভাগ করার জন্য. ডকার হাব এবং অন্যান্য ওসিআই-সম্মত রেজিস্ট্রি যদিও এখন শুধু কন্টেইনার ইমেজ ছাড়া আরও কিছু করতে পারে। দ্য ORAS (ওসিআই রেজিস্ট্রি অ্যাজ স্টোরেজ) প্রকল্প রেজিস্ট্রিগুলিকে জেনেরিক আর্টিফ্যাক্ট স্টোরে রূপান্তরিত করে, আপনার অ্যাপ্লিকেশনের সাথে প্রাসঙ্গিক যেকোন সম্পদ প্রকাশ করতে সক্ষম।

এই নিবন্ধে, আপনি শিখবেন ORAS কী, এটি যে চ্যালেঞ্জগুলি সমাধান করে এবং ডকার হাবের সাথে কীভাবে এটি ব্যবহার করা শুরু করা যায়।

ডকার হাব বনাম ওসিআই রেজিস্ট্রি

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

ডকার হাব হল একটি OCI রেজিস্ট্রি-সামঞ্জস্যপূর্ণ প্ল্যাটফর্ম যা কন্টেইনার ইমেজ প্রদানের জন্য। ওসিআই কন্টেইনার টুলগুলি ডকার হাব এবং অন্যান্য রেজিস্ট্রি থেকে কন্টেন্ট গ্রহণ করতে পারে যেমন কমান্ডের মাধ্যমে docker pull অন্যান্য docker push. যদিও এইগুলি আগে শুধুমাত্র কন্টেইনার ইমেজগুলির সাথে কাজ করেছিল, এখন আপনি আপনার অ্যাপের অন্যান্য উপাদানগুলি বিতরণ করতে একই পদ্ধতি ব্যবহার করতে পারেন৷

কেন জেনেরিক আর্টিফ্যাক্ট ম্যাটার

এই কার্যকারিতা অধীনে বিকশিত হচ্ছে ORAS ব্যানার এটি রেজিস্ট্রিগুলিকে “জেনারিক আর্টিফ্যাক্ট স্টোর” হিসাবে পুনরায় তৈরি করে যা আপনি পরিচিত পুশ/পুল ওয়ার্কফ্লো ব্যবহার করে ইন্টারঅ্যাক্ট করতে পারেন।

একটি আর্টিফ্যাক্ট এমন কিছু যা একজন ব্যবহারকারীকে সফলভাবে আপনার সফ্টওয়্যার চালানোর জন্য প্রয়োজন হতে পারে। এটি একটি কন্টেইনার ইমেজ বা অন্য ধরনের সম্পদ হতে পারে যা আপনার প্রজেক্টের জন্য বোধগম্য হয়:

  • হেলম চার্ট
  • প্রি-কম্পাইল করা বাইনারি এবং ইনস্টলার প্যাকেজ
  • SBOMs
  • প্রস্তাবিত নিরাপত্তা নীতি কনফিগারেশন, যেমন OPA নিয়ম
  • স্বাক্ষর, শংসাপত্র, এবং মেটাডেটা প্রকাশ করুন

এই অত্যাবশ্যক সম্পদগুলি প্রায়ই ব্যবহারকারীদের জন্য খুঁজে পাওয়া কঠিন হতে পারে। তারা বিভিন্ন সোর্স কন্ট্রোল প্ল্যাটফর্ম, প্যাকেজ ম্যানেজার এবং সরাসরি ওয়েবসাইট ডাউনলোডে ছড়িয়ে ছিটিয়ে থাকে। ORAS-এর সাহায্যে, আপনি একটি কেন্দ্রীভূত রেজিস্ট্রিতে সবকিছু জমা করতে পারেন, তারপর ব্যবহারকারীদের একটি একক টুল এবং শংসাপত্র ব্যবহার করে সামগ্রী পুনরুদ্ধার করতে দিন। আপনার v1.1.0 রিলিজের জন্য SBOM দেখা যতটা সহজ oras pull example.com/my-app/sbom:v1.1.0উদাহরণ স্বরূপ.

ORAS কি কনটেইনার চিত্রগুলির জন্য একটি ব্রেকিং পরিবর্তন?

ORAS কোনো বিদ্যমান কন্টেইনার রেজিস্ট্রি বৈশিষ্ট্য ভঙ্গ করে না। আপনি যেমন চালানোর কমান্ড রাখতে পারেন docker push my-image:latest আপনার ইমেজ চারপাশে সরাতে.

পর্দার আড়ালে বিষয়বস্তু সঞ্চয়স্থানে উল্লেখযোগ্য পরিবর্তন রয়েছে। ORAS ঐতিহাসিক ধারণাকে সরিয়ে দেয় যে সমস্ত রেজিস্ট্রি বিষয়বস্তু একটি চিত্র। আর্টিফ্যাক্টগুলিকে সমর্থন করার জন্য, রেজিস্ট্রিগুলিকে সম্পূর্ণ হওয়া প্রতিটি আপলোডের ধরন ট্র্যাক করতে হবে৷ বিভিন্ন ধরণের নিদর্শনকে বলা হয় “মিডিয়ার ধরন” ORAS এর মধ্যে।

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

কন্টেইনার ইমেজ মিডিয়া টাইপ স্বয়ংক্রিয়ভাবে ব্যবহৃত হয় যখন আপনি বিদ্যমান সরঞ্জাম থেকে ধাক্কা যেমন docker push. একটি ডিফল্ট “অজানা” প্রকার প্রয়োগ করা হয় যখন আপনি সরাসরি ORAS CLI থেকে আপলোড করেন, যদি না আপনি একটি নিবন্ধিত প্রকার উল্লেখ করেন।

ORAS CLI ইনস্টল করা হচ্ছে

নির্বিচারে ধরনের আর্টিফ্যাক্টগুলিকে পুশ এবং টানতে আপনার ORAS CLI প্রয়োজন। আপনি সর্বশেষ সংস্করণ ডাউনলোড করতে পারেন প্রকল্পের GitHub রিলিজ পৃষ্ঠা থেকে. শুধুমাত্র macOS এবং Linux সিস্টেম বর্তমানে সমর্থিত।

ডাউনলোড করা সংরক্ষণাগারটি বের করুন, তারপর অনুলিপি করুন oras বাইনারি একটি অবস্থান যা আপনার পথে আছে:

$ tar -zxf oras_0.16.0_*.tar.gz -C oras-install/
$ mv oras-install/oras /usr/local/bin/
$ rm -rf oras_0.16.0_*.tar.gz oras-install/

রান করে আপনার বাইনারি এর কাজ চেক করুন oras version আদেশ:

$ oras version
0.16.0

এখন আপনি ORAS ব্যবহার শুরু করতে প্রস্তুত৷

ডকার হাবের সাথে ORAS ব্যবহার করা

ORAS শুধুমাত্র রেজিস্ট্রিগুলির সাথে সামঞ্জস্যপূর্ণ যে সমর্থন বাস্তবায়ন করেছে OCI আর্টিফ্যাক্ট স্পেসিফিকেশনের জন্য। এই তালিকায় এখন অ্যামাজন ECR, Azure, Google এবং GitHub সহ বেশিরভাগ প্রধান বিক্রেতাদের পাশাপাশি স্ব-হোস্ট করা উদাহরণগুলি সিএনসিএফ বিতরণ.

আমরা এই নিবন্ধটির জন্য ডকার হাব ব্যবহার করব কারণ এটি সবচেয়ে জনপ্রিয় রেজিস্ট্রি সমাধান। এটা পূর্ণ সমর্থন যোগ করা হয়েছে নভেম্বর 2022-এ OCI আর্টিফ্যাক্টের জন্য।

আপনার রেজিস্ট্রি লগইন করুন

ORAS স্বয়ংক্রিয়ভাবে পুনরায় ব্যবহার করা হয় রেজিস্ট্রি শংসাপত্র আপনি আগে যোগ করেছেন আপনার ~/.docker/config.json ফাইল আপনার যদি ডকার হাবে লগইন করতে হয়, আপনি যেকোনও চালাতে পারেন docker login বা oras login এই মত করতে:

$ oras login -u username -p password_or_personal_access_token

$ docker login -u username -p password_or_personal_access_token

এরপর রেজিস্ট্রিতে আপলোড করার জন্য একটি সাধারণ ফাইল তৈরি করুন। মনে রাখবেন আপনি যে ধরনের সম্পদ পুশ করবেন তার উপর কোন সীমাবদ্ধতা নেই। এই উদাহরণটি একটি কল্পিত JSON ফাইল যা প্রকল্পের স্থিতি বর্ণনা করে, তবে আপনি এমন কিছু আপলোড করতে পারেন যা আপনার ব্যবহারকারী বা বিকাশকারীদের জন্য উপযোগী হবে৷

$ echo '{"app": "oras-demo", "version": "1.1.0"}' > artifact.json

এখন আপনি ORAS CLI দিয়ে আপনার ফাইল পুশ করতে প্রস্তুত।

আপনার আর্টিফ্যাক্ট ধাক্কা

প্রতিস্থাপনের পরে, আপনার শিল্পকর্মটি পুশ করতে নিম্নলিখিত কমান্ডটি চালান <username> আপনার প্রকৃত ডকার হাব ব্যবহারকারীর নামের সাথে:

$ oras push docker.io/<username>/oras-demo:1.1.0 \
    artifact.json:application/json \
    --artifact-type application/vnd.unknown.config.v1+json
Uploading 7ac68d8d2a12 artifact.json
Uploaded  7ac68d8d2a12 artifact.json
Pushed docker.io/ilmiont/oras-demo:1.1.0
Digest: sha256:41abfed0ab43a24933c5eafe3c363418264a59eee527821a39fe7c0abf25570b

এই কমান্ডে কয়েকটি উল্লেখযোগ্য বিবরণ রয়েছে:

  • প্রথম আর্গুমেন্টটি পুশ করার জন্য রেজিস্ট্রি এবং আর্টিফ্যাক্টে বরাদ্দ করার জন্য ট্যাগকে সংজ্ঞায়িত করে। এটি একটি কন্টেইনার ইমেজ ট্যাগ পুশ করার অনুরূপ।
  • অসদৃশ docker CLI, ORAS এর জন্য আপনাকে রেজিস্ট্রি URL উল্লেখ করতে হবে (docker.io ডকার হাবের জন্য)। ORAS হল একটি জেনেরিক টুল যা আপনি কী বা কোথায় চাপ দিচ্ছেন সে সম্পর্কে অনুমান করতে পারে না।
  • দ্বিতীয় যুক্তিটি আপনি যে ফাইলটিতে আপলোড করছেন তার পথটি নির্দিষ্ট করে৷ filename:content-type বিন্যাস উদাহরণ ফাইল হিসাবে JSON, application/json বিষয়বস্তুর প্রকার নির্বাচন করা হয়েছে।
  • তৃতীয় আর্গুমেন্টটি ORAS আর্টিফ্যাক্ট টাইপ (মিডিয়া টাইপ) নির্দিষ্ট করে আপনার আর্টিফ্যাক্টে বরাদ্দ করার জন্য। আপনি একটি মান ব্যবহার করা উচিত আমি আজ খুশি আপনি যদি একটি নিবন্ধিত ধরনের আর্টিফ্যাক্ট আপলোড করছেন, যেমন একটি হেলম চার্ট, কিন্তু “অজানা” ডিফল্ট এই ডেমোর জন্য উপযুক্ত।

আপলোডের অগ্রগতি আপনার টার্মিনালে দেখানো হয়, একইভাবে নিয়মিত docker push. চালানোর চেষ্টা করুন oras repo tags পুশ সম্পূর্ণ হয়েছে নিশ্চিত করার জন্য কমান্ড:

$ oras repo tags docker.io/<username>/oras-demo
1.1.0

ডকার হাবের UI এ শিল্পকর্ম পরিচালনা করা

আপনার শিল্পকর্ম ডকার হাব ওয়েবসাইটেও প্রদর্শিত হবে। সংগ্রহস্থল তালিকায়, আপনি দেখতে পাবেন Contains: Other বোঝানোর জন্য যে সংগ্রহস্থলে একটি জেনেরিক আর্টিফ্যাক্ট রয়েছে। ধারক চিত্র সংগ্রহস্থল হিসাবে লেবেল করা হয় Contains: Image.

ডকার হাবে একটি জেনেরিক আর্টিফ্যাক্ট দেখানো ছবি

এর বিশদ বিবরণ দেখতে সংগ্রহস্থলটি নির্বাচন করুন, একটি বিবরণ যোগ করুন এবং সমস্ত উপলব্ধ ট্যাগগুলি দেখুন। এটি ধারক চিত্রগুলির সাথে কাজ করার মতো।

ডকার হাবে একটি জেনেরিক আর্টিফ্যাক্ট দেখানো ছবি

আপনার শিল্পকর্ম টানা

রেজিস্ট্রিতে উপলব্ধ আপনার শিল্পকর্মের সাথে, আপনি এখন অন্য মেশিনে স্যুইচ করতে পারেন এবং ORAS CLI ইনস্টল করার পদক্ষেপগুলি পুনরাবৃত্তি করতে পারেন এবং আপনার ডকার হাব অ্যাকাউন্টে লগইন করতে পারেন। একবার আপনি প্রমাণীকরণ করেছেন, ব্যবহার করুন oras pull আপনার আর্টিফ্যাক্ট পুনরুদ্ধার করার আদেশ:

$ oras pull docker.io/<username>/oras-demo:1.1.0
Downloading 7ac68d8d2a12 artifact.json
Downloaded  7ac68d8d2a12 artifact.json
Pulled docker.io/ilmiont/oras-demo:1.1.0
Digest: sha256:41abfed0ab43a24933c5eafe3c363418264a59eee527821a39fe7c0abf25570b

আর্টিফ্যাক্টের ফাইলগুলি আপনার কাজের ডিরেক্টরিতে জমা করা হবে:

$ ls
artifact.json

$ cat artifact.json
{"app": "demo-oras", "version": "1.1.0"}

আপনি আপনার কন্টেইনার রেজিস্ট্রি প্রদানকারী থেকে উপলব্ধ বিদ্যমান অবকাঠামো ব্যবহার করে আপনার অ্যাপ্লিকেশনের আর্টিফ্যাক্টগুলি বিতরণ করতে সফলভাবে ORAS ব্যবহার করেছেন।

সারসংক্ষেপ

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

জনপ্রিয় ইকোসিস্টেম টুলেও ORAS সমর্থন যোগ করা হচ্ছে। হেলম আপনাকে সরাসরি চার্টগুলিকে একটি ORAS রেজিস্ট্রিতে পুশ করতে দেয় এটি ব্যবহার করে helm push আদেশ, উদাহরণ স্বরূপ. এটি ম্যানুয়ালি চার্ট রপ্তানি করা এড়ায় যাতে আপনি এটির সাথে ধাক্কা দিতে পারেন oras push. এটি আপনার জন্য সঠিক ORAS মিডিয়া টাইপ সেট করাও পরিচালনা করে। আপনি ORAS সংহত করা শুরু করার জন্য আরও সরঞ্জাম আশা করতে পারেন, যা আপনাকে সমস্ত ধরণের বিষয়বস্তু সরাসরি আপনার কেন্দ্রীভূত রেজিস্ট্রিতে পুশ করতে দেয়।