diff --git a/README-bn.md b/README-bn.md index 5c0041dfb1..765d05e2af 100644 --- a/README-bn.md +++ b/README-bn.md @@ -1,83 +1,84 @@ -# Kubernetes ডকুমেন্টেশন +# কুবারনেটিস ডকুমেন্টেশন -[![Build Status](https://api.travis-ci.org/kubernetes/website.svg?branch=master)](https://travis-ci.org/kubernetes/website) -[![GitHub release](https://img.shields.io/github/release/kubernetes/website.svg)](https://github.com/kubernetes/website/releases/latest) - -স্বাগত! এই সংগ্রহস্থলে [Kubernetes ওয়েবসাইট এবং ডকুমেন্টেশন](https://kubernetes.io/) তৈরি করার জন্য প্রয়োজনীয় সমস্ত উপাদান রয়েছে। আমরা খুবই আনন্দিত যে আপনি অবদান রাখতে চান! +[![Netlify Status](https://api.netlify.com/api/v1/badges/be93b718-a6df-402a-b4a4-855ba186c97d/deploy-status)](https://app.netlify.com/sites/kubernetes-io-main-staging/deploys) [![GitHub release](https://img.shields.io/github/release/kubernetes/website.svg)](https://github.com/kubernetes/website/releases/latest) +এই রিপোজিটোরিতে [কুবারনেটিস ওয়েবসাইট এবং ডকুমেন্টেশন](https://kubernetes.io/) তৈরি করার জন্য প্রয়োজনীয় সমস্ত উপাদান রয়েছে। আমরা খুবই আনন্দিত যে আপনি অবদান রাখতে চান! - [ডকুমেন্টেশন এ অবদান](#contributing-to-the-docs) -- [স্থানীয়করণ ReadMeগুলি](#localization-readmemds) +- [স্থানীয়করণ ReadMeগুলো](#localization-readmemds) -## `README.md` এর স্থানীয়করণ কুবারনেটস ডকুমেন্টেশন -আপনি বাংলা স্থানীয়করণের রক্ষণাবেক্ষণকারীদের (maintainers) কাছে পৌঁছাতে পারেন: -* MD Shahriyar Al Mustakim Mitul ([LinkedIn](https://www.linkedin.com/in/md-shahriyar-al-mustakim-mitul-9084b31a0/), [Twitter](https://twitter.com/ShahriyarMitul), [GitHub](https://github.com/mitul3737)) -* [Slack চ্যানেল](https://kubernetes.slack.com/messages/kubernetes-docs-bn) +## এই রিপোজিটোরি ব্যবহার - - -## এই সংগ্রহস্থল ব্যবহার করে - - -আপনি Hugo (বর্ধিত সংস্করণ) ব্যবহার করে স্থানীয়ভাবে ওয়েবসাইটটি চালাতে পারেন, অথবা আপনি এটি একটি কন্টেইনার রানটাইমে চালাতে পারেন। আমরা দৃঢ়ভাবে কন্টেইনার রানটাইম ব্যবহার করার পরামর্শ দিই, কারণ এটি লাইভ ওয়েবসাইটের সাথে স্থাপনার ধারাবাহিকতা দেয়। +আপনি [Hugo (বর্ধিত সংস্করণ)](https://gohugo.io/) ব্যবহার করে স্থানীয়ভাবে ওয়েবসাইটটি চালাতে পারেন, অথবা আপনি এটি একটি কন্টেইনার রানটাইমে চালাতে পারেন। আমরা দৃঢ়ভাবে কন্টেইনার রানটাইম ব্যবহার করার পরামর্শ দিই, কারণ এটি লাইভ ওয়েবসাইটের সাথে ডিপ্লয়মেন্টের ধারাবাহিকতা দেয়। ## পূর্বশর্ত -এই সংগ্রহস্থলটি(repository) ব্যবহার করার জন্য, আপনাকে লোকাল সিস্টেম বা, ডিভাইস এ নিম্নলিখিত জিনিস ইনস্টল করতে হবে: +এই রিপোজিটোরিটি ব্যবহার করার জন্য, আপনাকে লোকাল সিস্টেম বা, ডিভাইস এ নিম্নলিখিত জিনিস ইনস্টল করতে হবে: - [npm](https://www.npmjs.com/) -- [Go](https://golang.org/) +- [Go](https://go.dev/) - [Hugo (বর্ধিত সংস্করণ)](https://gohugo.io/) -- একটি ধারক রানটাইম, উদাহরন হিসেবে [Docker](https://www.docker.com/). +- একটি কন্টেইনার রানটাইম, যেমন [Docker](https://www.docker.com/). + +> [!NOTE] +[`netlify.toml`](netlify.toml#L11) ফাইলে `HUGO_VERSION` এনভায়রনমেন্ট ভেরিয়েবল দ্বারা নির্দিষ্ট করা Hugo বর্ধিত সংস্করণ ইনস্টল করা নিশ্চিত করুন৷ + +আপনি কাজ শুরু করার আগে, দরকারি জিনিসগুলো ইনস্টল করুন। রিপোজিটোরি ক্লোন(clone) করুন এবং ডিরেক্টরিতে(directory) প্রবেশ করুন: -আপনি কাজ শুরু করার আগে, দরকারি জিনিসগুলো ইনস্টল করুন। সংগ্রহস্থল ক্লোন(clone) করুন এবং ডিরেক্টরিতে(directory) প্রবেশ করুন: ```bash git clone https://github.com/kubernetes/website.git cd website ``` -কুবারনেটিস ওয়েবসাইটটি [Docsy Hugo থিম](https://github.com/google/docsy#readme) ব্যবহার করে। এমনকি যদি আপনি একটি কনটেইনার ওয়েবসাইট চালানোর পরিকল্পনা করেন, আমরা দৃঢ়ভাবে নিম্নলিখিতগুলি চালিয়ে সাবমডিউল এবং অন্যান্য প্রয়োজনীয় জিনিসগুলিশগুলি পুল(pull) করার পরামর্শ দিই: +কুবারনেটিস ওয়েবসাইটটি [Docsy Hugo থিম](https://github.com/google/docsy#readme) ব্যবহার করে। এমনকি যদি আপনি একটি কন্টেইনারে ওয়েবসাইট চালানোর পরিকল্পনা করেন, আমরা দৃঢ়ভাবে নিম্নলিখিতগুলি চালিয়ে সাবমডিউল এবং অন্যান্য প্রয়োজনীয় জিনিসগুলো পুল(pull) করার পরামর্শ দিই: - -```bash -# ডকসি সাবমডিউল পুল করুন +### Windows +```powershell +# fetch submodule dependencies git submodule update --init --recursive --depth 1 ``` -## একটি কনটেইনার ব্যবহার করে ওয়েবসাইট চালানো +### Linux / other Unix +```bash +# fetch submodule dependencies +make module-init +``` -একটি কনটেইনারে সাইটটি তৈরি করতে, কনটেইনার চিত্র(container image) তৈরি করতে এবং এটি চালাতে নিম্নলিখিতটি চালান: +## একটি কন্টেইনার ব্যবহার করে ওয়েবসাইট চালানো + +একটি কন্টেইনারে সাইটটি তৈরি করতে, নিম্নলিখিতটি চালান: ```bash -make container-image +# You can set $CONTAINER_ENGINE to the name of any Docker-like container tool make container-serve ``` -আপনি যদি ত্রুটি দেখতে পান, তাহলে সম্ভবত এর অর্থ হল Hugo কন্টেইনারে যথেষ্ট কম্পিউটিং স্থান উপস্থিত ছিল না। এটি সমাধান করতে, আপনার মেশিনে ডকারের (Docker) জন্য অনুমোদিত CPU এবং মেমরি ব্যবহারের পরিমাণ বাড়ান [MacOSX](https://docs.docker.com/docker-for-mac/#resources) এবং [Windows](https://docs.docker.com/docker-for-windows/#resources) +আপনি যদি ত্রুটি দেখতে পান, তাহলে সম্ভবত এর অর্থ হলো Hugo কন্টেইনারে যথেষ্ট কম্পিউটিং রিসোর্স নেই। এটি সমাধান করতে, আপনার মেশিনে Docker এর জন্য অনুমোদিত CPU এবং মেমরি ব্যবহারের পরিমাণ বাড়ান ([MacOS](https://docs.docker.com/desktop/settings/mac/) এবং [Windows](https://docs.docker.com/desktop/settings/windows/))। -ওয়েবসাইটটি দেখতে -এ আপনার ব্রাউজার খুলুন। আপনি সোর্স ফাইলগুলিতে পরিবর্তন করার সাথে সাথে, Hugo ওয়েবসাইট আপডেট করে এবং একটি ব্রাউজার রিফ্রেশ করতে বাধ্য করে। +ওয়েবসাইটটি দেখতে -এ আপনার ব্রাউজার খুলুন। আপনি সোর্স ফাইলগুলোতে পরিবর্তন করার সাথে সাথে, Hugo ওয়েবসাইট আপডেট করে এবং একটি ব্রাউজার রিফ্রেশ করতে বাধ্য করে। ## Hugo ব্যবহার করে লোকাল ডিভাইস এ ওয়েবসাইট চালানো -নিশ্চিত করুন যে Hugo বর্ধিত সংস্করণ ইনস্টল করা হয়েছে `HUGO_VERSION`নামক এনভায়রনমেন্ট ভেরিয়েবল দ্বারা[`netlify.toml`](netlify.toml#L10) - -স্থানীয়ভাবে সাইট তৈরি এবং পরীক্ষা করতে, চালান: - -```bash -# নির্ভরতা গুলি ইনস্টল করুন -npm ci -make serve -``` - -এটি পোর্ট 1313-এ স্থানীয় হুগো সার্ভার শুরু করবে। ওয়েবসাইট দেখতে -এ আপনার ব্রাউজার খুলুন। আপনি সোর্স ফাইলগুলিতে পরিবর্তন করার সাথে সাথে, Hugo ওয়েবসাইট আপডেট হবে এবং একটি ব্রাউজার রিফ্রেশ করতে বাধ্য করে। +দরকারি জিনিসগুলো ইনস্টল করতে, স্থানীয়ভাবে সাইট তৈরি এবং পরীক্ষা করতে, চালান: +- For macOS and Linux + ```bash + npm ci + make serve + ``` +- For Windows (PowerShell) + ```powershell + npm ci + hugo.exe server --buildFuture --environment development + ``` + +এটি পোর্ট 1313-এ স্থানীয় Hugo সার্ভার শুরু করবে। ওয়েবসাইট দেখতে -এ আপনার ব্রাউজার খুলুন। আপনি সোর্স ফাইলগুলোতে পরিবর্তন করার সাথে সাথে, Hugo ওয়েবসাইট আপডেট হবে এবং একটি ব্রাউজার রিফ্রেশ করতে বাধ্য করে। ## API রেফারেন্স পৃষ্ঠা তৈরি করা +`content/en/docs/reference/kubernetes-api` এ অবস্থিত API রেফারেন্স পৃষ্ঠাগুলো ব্যবহার করে Swagger স্পেসিফিকেশন থেকে তৈরি করা হয়েছে, যা OpenAPI স্পেসিফিকেশন নামেও পরিচিত। -`content/en/docs/reference/kubernetes-api` এ অবস্থিত API রেফারেন্স পৃষ্ঠাগুলি ব্যবহার করে Swagger স্পেসিফিকেশন থেকে তৈরি করা হয়েছে - -একটি নতুন কুবারনেটিস(Kubernetes) রিলিজের জন্য রেফারেন্স পৃষ্ঠাগুলি আপডেট করতে এই পদক্ষেপগুলি অনুসরণ করুন: +একটি নতুন কুবারনেটিস রিলিজের জন্য রেফারেন্স পৃষ্ঠাগুলো আপডেট করতে এই পদক্ষেপগুলো অনুসরণ করুন: 1. `api-ref-generator` সাবমডিউল পুল (Pull) করুন: @@ -91,36 +92,31 @@ make serve curl 'https://raw.githubusercontent.com/kubernetes/kubernetes/master/api/openapi-spec/swagger.json' > api-ref-assets/api/swagger.json ``` -3. `api-ref-assets/config/`-এ, নতুন রিলিজের পরিবর্তনগুলি প্রতিফলিত করতে `toc.yaml` এবং `fields.yaml` ফাইলগুলিকে হালনাগাদ করে নিন। +3. `api-ref-assets/config/`-এ, নতুন রিলিজের পরিবর্তনগুলো প্রতিফলিত করতে `toc.yaml` এবং `fields.yaml` ফাইলগুলোকে হালনাগাদ করে নিন। - -4. পরবর্তী, পৃষ্ঠাগুলি তৈরি করুন: +4. পরবর্তী, পৃষ্ঠাগুলো তৈরি করুন: ```bash make api-reference ``` - আপনি একটি কনটেইনার চিত্র (Container image) থেকে সাইট তৈরি এবং পরিবেশন করে স্থানীয়ভাবে ফলাফল পরীক্ষা করতে পারেন: - + আপনি একটি কন্টেইনার থেকে সাইট তৈরি এবং পরিবেশন করে স্থানীয়ভাবে ফলাফল পরীক্ষা করতে পারেন: + ```bash - make container-image make container-serve ``` একটি ওয়েব ব্রাউজারে, API রেফারেন্স দেখতে এ যান। -5.যখন নতুন চুক্তির সমস্ত পরিবর্তন কনফিগারেশন ফাইল `toc.yaml` এবং `fields.yaml`-এ প্রতিফলিত হয়, তখন নতুন জেনারেট করা API রেফারেন্স পৃষ্ঠাগুলির সাথে একটি পুল অনুরোধ (Pull request) তৈরি করুন। +5. যখন নতুন চুক্তির সমস্ত পরিবর্তন কনফিগারেশন ফাইল `toc.yaml` এবং `fields.yaml`-এ প্রতিফলিত হয়, তখন নতুন তৈরি করা API রেফারেন্স পৃষ্ঠাগুলোর সাথে একটি পুল রিকোয়েস্ট তৈরি করুন। - -## সমস্যা সমাধান +## সমস্যা সমাধান (Troubleshooting) ### error: failed to transform resource: TOCSS: failed to transform "scss/main.scss" (text/x-scss): this feature is not available in your current Hugo version +প্রযুক্তিগত কারণে Hugo কে দুই সেট বাইনারিতে পাঠানো হয়। বর্তমান ওয়েবসাইটটি শুধুমাত্র **Hugo Extended** সংস্করণের উপর ভিত্তি করে চলে। [রিলিজ পৃষ্ঠা](https://github.com/gohugoio/hugo/releases) নামের মধ্যে `বর্ধিত(extended)` সহ সংরক্ষণাগারগুলো খুঁজুন। নিশ্চিত করতে, `hugo version` চালান এবং `extended` শব্দটি সন্ধান করুন। -প্রযুক্তিগত কারণে হুগোকে দুই সেট বাইনারিতে পাঠানো হয়েছে। বর্তমান ওয়েবসাইটটি শুধুমাত্র **Hugo Extended** সংস্করণের উপর ভিত্তি করে চলে। [রিলিজ পৃষ্ঠা](https://github.com/gohugoio/hugo/releases) নামের মধ্যে `বর্ধিত(extended)` সহ সংরক্ষণাগারগুলি খুঁজুন। নিশ্চিত করতে, `হুগো সংস্করণ (hugo version)` চালান এবং `বর্ধিত (extended)` শব্দটি সন্ধান করুন। - - -### অনেকগুলি খোলা ফাইলের জন্য macOS সমস্যা সমাধান করা হচ্ছে +### অনেকগুলো খোলা ফাইলের জন্য macOS সমস্যা সমাধান করা আপনি যদি macOS-এ `make serve` চালান এবং নিম্নলিখিত ত্রুটি পান: @@ -137,57 +133,78 @@ make: *** [serve] Error 1 ```shell #!/bin/sh -# নিচের গুলি মূল সারাংশ(gist) লিঙ্ক, এবং আমার সারাংশ(gist) লিঙ্ক এর সাথে সম্পর্ক স্থাপন করি. + +# These are the original gist links, linking to my gists now. # curl -O https://gist.githubusercontent.com/a2ikm/761c2ab02b7b3935679e55af5d81786a/raw/ab644cb92f216c019a2f032bbf25e258b01d87f9/limit.maxfiles.plist # curl -O https://gist.githubusercontent.com/a2ikm/761c2ab02b7b3935679e55af5d81786a/raw/ab644cb92f216c019a2f032bbf25e258b01d87f9/limit.maxproc.plist + curl -O https://gist.githubusercontent.com/tombigel/d503800a282fcadbee14b537735d202c/raw/ed73cacf82906fdde59976a0c8248cce8b44f906/limit.maxfiles.plist curl -O https://gist.githubusercontent.com/tombigel/d503800a282fcadbee14b537735d202c/raw/ed73cacf82906fdde59976a0c8248cce8b44f906/limit.maxproc.plist + sudo mv limit.maxfiles.plist /Library/LaunchDaemons sudo mv limit.maxproc.plist /Library/LaunchDaemons + sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist sudo chown root:wheel /Library/LaunchDaemons/limit.maxproc.plist + sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist ``` +এটি Catalina পাশাপাশি Mojave macOS এর জন্য কাজ করে। -এটি ক্যাটালিনার(Catalina) পাশাপাশি Mojave macOS এর জন্য কাজ করে। +## SIG Docs এর সাথে জড়িত হন -## SIG ডক্সের সাথে জড়িত হন - -[কমিউনিটি পৃষ্ঠা](https://github.com/kubernetes/community/tree/master/sig-docs#meetings) এ SIG ডক্স কুবারনেটিস সম্প্রদায় এবং মিটিং সম্পর্কে আরও জানুন। +[কমিউনিটি পৃষ্ঠা](https://github.com/kubernetes/community/tree/master/sig-docs#meetings) থেকে SIG Docs কুবারনেটিস কমিউনিটি এবং মিটিং সম্পর্কে আরও জানুন। এছাড়াও আপনি এই প্রকল্পের রক্ষণাবেক্ষণকারীদের কাছে পৌঁছাতে পারেন: + - [Slack](https://kubernetes.slack.com/messages/sig-docs) - [এই Slack এর জন্য একটি আমন্ত্রণ পান](https://slack.k8s.io/) - [মেইলিং তালিকা](https://groups.google.com/forum/#!forum/kubernetes-sig-docs) -## ডক্স এ অবদান রাখুন +## Docs এ অবদান রাখুন -আপনি আপনার GitHub অ্যাকাউন্টে এই সংগ্রহস্থলের (repository) একটি অনুলিপি তৈরি করতে স্ক্রিনের উপরের ডানদিকে **Fork** বোতামে ক্লিক করতে পারেন। এই অনুলিপিটিকে _ফর্ক(fork)_ বলা হয়। আপনার ফর্কটতিতে আপনি যে কোনো পরিবর্তন করতে চান এবং আপনি যখন সেই পরিবর্তনগুলি আমাদের কাছে পাঠাতে প্রস্তুত হন, তখন আপনার ফর্কে যান এবং এটি সম্পর্কে আমাদের জানাতে একটি নতুন পুল অনুরোধ (Pull request) তৈরি করুন৷ +আপনি আপনার GitHub অ্যাকাউন্টে এই রিপোজিটোরি এর একটি অনুলিপি তৈরি করতে স্ক্রিনের উপরের ডানদিকে **Fork** বোতামে ক্লিক করতে পারেন। এই অনুলিপিটিকে _ফর্ক(fork)_ বলা হয়। আপনার ফর্কটিতে আপনি যে কোনো পরিবর্তন করতে চান এবং আপনি যখন সেই পরিবর্তনগুলো আমাদের কাছে পাঠাতে প্রস্তুত হন, তখন আপনার ফর্কে যান এবং এটি সম্পর্কে আমাদের জানাতে একটি নতুন পুল রিকোয়েস্ট (Pull request) তৈরি করুন৷ -একবার আপনার পুল অনুরোধ(Pull request) তৈরি হয়ে গেলে, একজন Kubernetes পর্যালোচক স্পষ্ট, কার্যকর প্রতিক্রিয়া প্রদানের দায়িত্ব নেবেন। পুল অনুরোধের মালিক হিসাবে, **কুবারনেটস (Kubernetes) পর্যালোচক আপনাকে যে প্রতিক্রিয়া প্রদান করেছেন তা সমাধান করার জন্য আপনার পুল অনুরোধ (Pull request) সংশোধন করার দায়িত্ব আপনার।** +একবার আপনার পুল রিকোয়েস্ট তৈরি হয়ে গেলে, একজন কুবারনেটিস পর্যালোচক স্পষ্ট, কার্যকর প্রতিক্রিয়া প্রদানের দায়িত্ব নেবেন। পুল রিকোয়েস্টের মালিক হিসাবে, **কুবারনেটিস পর্যালোচক আপনাকে যে প্রতিক্রিয়া প্রদান করেছেন তা সমাধান করার জন্য আপনার পুল রিকোয়েস্ট সংশোধন করার দায়িত্ব আপনার।** +এছাড়াও, মনে রাখবেন যে আপনার কাছে একাধিক কুবারনেটিস পর্যালোচক আপনাকে প্রতিক্রিয়া প্রদান করতে পারেন বা আপনি একজন কুবারনেটিস পর্যালোচকের কাছ থেকে প্রতিক্রিয়া পেতে পারেন যা আপনাকে প্রতিক্রিয়া প্রদানের জন্য প্রাথমিকভাবে নির্ধারিত একটি থেকে আলাদা। -এছাড়াও, মনে রাখবেন যে আপনার কাছে একাধিক Kubernetes পর্যালোচক আপনাকে প্রতিক্রিয়া প্রদান করতে পারেন বা আপনি একজন Kubernetes পর্যালোচকের কাছ থেকে প্রতিক্রিয়া পেতে পারেন যা আপনাকে প্রতিক্রিয়া প্রদানের জন্য প্রাথমিকভাবে নির্ধারিত একটি থেকে আলাদা। +তদুপরি, কিছু ক্ষেত্রে, আপনার একজন পর্যালোচক প্রয়োজনের সময় একজন কুবারনেটিস টেকনিকাল পর্যালোচনাকারীর কাছ থেকে প্রযুক্তিগত পর্যালোচনা চাইতে পারেন। পর্যালোচকরা যথাসময়ে প্রতিক্রিয়া প্রদানের জন্য তাদের যথাসাধ্য চেষ্টা করবেন কিন্তু প্রতিক্রিয়ার সময় পরিস্থিতির উপর ভিত্তি করে পরিবর্তিত হতে পারে। +কুবারনেটিস ডকুমেন্টেশনে অবদান সম্পর্কে আরও তথ্যের জন্য, দেখুন: -তদুপরি, কিছু ক্ষেত্রে, আপনার একজন পর্যালোচক প্রয়োজনের সময় একজন কুবারনেটস কারিগরি পর্যালোচনাকারীর কাছ থেকে প্রযুক্তিগত পর্যালোচনা চাইতে পারেন। পর্যালোচকরা যথাসময়ে প্রতিক্রিয়া প্রদানের জন্য তাদের যথাসাধ্য চেষ্টা করবেন কিন্তু প্রতিক্রিয়ার সময় পরিস্থিতির উপর ভিত্তি করে পরিবর্তিত হতে পারে। - -Kubernetes ডকুমেন্টেশনে অবদান সম্পর্কে আরও তথ্যের জন্য, দেখুন: - [কুবারনেটিস ডক্সে অবদান রাখুন](https://kubernetes.io/docs/contribute/) - [পৃষ্ঠা বিষয়বস্তুর প্রকার](https://kubernetes.io/docs/contribute/style/page-content-types/) - [ডকুমেন্টেশন শৈলী গাইড](https://kubernetes.io/docs/contribute/style/style-guide/) - [কুবারনেটিস ডকুমেন্টেশন স্থানীয়করণ](https://kubernetes.io/docs/contribute/localization/) +- [কুবারনেটিস ডক্সের পরিচিতি](https://www.youtube.com/watch?v=pprMgmNzDcw) +### নতুন অবদানকারী অ্যাম্বাসেডর +অবদান রাখার সময় আপনার যদি যেকোনো সময়ে সাহায্যের প্রয়োজন হয়, [নতুন কন্ট্রিবিউটর অ্যাম্বাসেডর](https://kubernetes.io/docs/contribute/advanced/#serve-as-a-new-contributor-ambassador) যোগাযোগের একটি ভালো জায়গা। . এগুলো হলো SIG ডক্স অনুমোদনকারীযাদের দায়িত্ব গুলোর মধ্যে নতুন অবদানকারীদের পরামর্শ দেওয়া এবং তাদের প্রথম কয়েকটি পুল রিকোয়েস্টের মাধ্যমে তাদের সাহায্য করা অন্তর্ভুক্ত৷ নতুন কন্ট্রিবিউটর অ্যাম্বাসেডরদের সাথে যোগাযোগ করার সবচেয়ে ভালো জায়গা হবে [Kubernetes Slack](https://slack.k8s.io/)। SIG ডক্সের জন্য বর্তমান নতুন অবদানকারী অ্যাম্বাসেডর: -## আচরণ বিধি +| Name | Slack | GitHub | +| -------------------------- | -------------------------- | -------------------------- | +| Arsh Sharma | @arsh | @RinkiyaKeDad | -Kubernetes সম্প্রদায়ে অংশগ্রহণ [CNCF কোড অফ কন্ডাক্ট](https://github.com/cncf/foundation/blob/master/code-of-conduct.md) দ্বারা পরিচালিত হয়। +## Localization READMEs + +| Language | Language | +| -------------------------- | -------------------------- | +| [Bengali](README-bn.md) | [Korean](README-ko.md) | +| [Chinese](README-zh.md) | [Polish](README-pl.md) | +| [French](README-fr.md) | [Portuguese](README-pt.md) | +| [German](README-de.md) | [Russian](README-ru.md) | +| [Hindi](README-hi.md) | [Spanish](README-es.md) | +| [Indonesian](README-id.md) | [Ukrainian](README-uk.md) | +| [Italian](README-it.md) | [Vietnamese](README-vi.md) | +| [Japanese](README-ja.md) | | + +## কোড অফ কন্ডাক্ট + +কুবারনেটিস কমিউনিটিয়ের অংশগ্রহণ [CNCF কোড অফ কন্ডাক্ট](https://github.com/cncf/foundation/blob/main/code-of-conduct.md) দ্বারা পরিচালিত হয়। ## ধন্যবাদ -Kubernetes সম্প্রদায়ের অংশগ্রহণে উন্নতি লাভ করে, এবং আমরা আমাদের ওয়েবসাইট এবং আমাদের ডকুমেন্টেশনে আপনার অবদানের প্রশংসা করি! - - - +কুবারনেটিস কমিউনিটিয়ের অংশগ্রহণে উন্নতি লাভ করে, এবং আমরা আমাদের ওয়েবসাইট এবং আমাদের ডকুমেন্টেশনে আপনার অবদানের প্রশংসা করি! diff --git a/README.md b/README.md index a47bdd6b44..82851d59ad 100644 --- a/README.md +++ b/README.md @@ -192,13 +192,14 @@ If you need help at any point when contributing, the [New Contributor Ambassador | Language | Language | | -------------------------- | -------------------------- | -| [Chinese](README-zh.md) | [Korean](README-ko.md) | -| [French](README-fr.md) | [Polish](README-pl.md) | -| [German](README-de.md) | [Portuguese](README-pt.md) | -| [Hindi](README-hi.md) | [Russian](README-ru.md) | -| [Indonesian](README-id.md) | [Spanish](README-es.md) | -| [Italian](README-it.md) | [Ukrainian](README-uk.md) | -| [Japanese](README-ja.md) | [Vietnamese](README-vi.md) | +| [Bengali](README-bn.md) | [Korean](README-ko.md) | +| [Chinese](README-zh.md) | [Polish](README-pl.md) | +| [French](README-fr.md) | [Portuguese](README-pt.md) | +| [German](README-de.md) | [Russian](README-ru.md) | +| [Hindi](README-hi.md) | [Spanish](README-es.md) | +| [Indonesian](README-id.md) | [Ukrainian](README-uk.md) | +| [Italian](README-it.md) | [Vietnamese](README-vi.md) | +| [Japanese](README-ja.md) | | ## Code of conduct diff --git a/content/bn/_index.html b/content/bn/_index.html index 27ce14aab8..999713808f 100644 --- a/content/bn/_index.html +++ b/content/bn/_index.html @@ -1,6 +1,6 @@ --- title: "প্রোডাকশন-গ্রেড কন্টেইনার অর্কেস্ট্রেশন" -abstract: "স্বয়ংক্রিয় কন্টেইনার স্থাপনা, স্কেলিং এবং ব্যবস্থাপনা" +abstract: "স্বয়ংক্রিয় কন্টেইনার ডিপ্লয়মেন্ট, স্কেলিং এবং ব্যবস্থাপনা" cid: home sitemap: priority: 1.0 @@ -10,9 +10,9 @@ sitemap: {{< blocks/section id="oceanNodes" >}} {{% blocks/feature image="flower" %}} -[কুবারনেটিস]({{< relref "/docs/concepts/overview/" >}}), K8s নামেও পরিচিত, কনটেইনারাইজড অ্যাপ্লিকেশনের স্বয়ংক্রিয় স্থাপনা, স্কেলিং এবং পরিচালনার জন্য একটি ওপেন-সোর্স সিস্টেম। +[কুবারনেটিস]({{< relref "/docs/concepts/overview/" >}}), K8s নামেও পরিচিত, কনটেইনারাইজড অ্যাপ্লিকেশনের স্বয়ংক্রিয় ডিপ্লয়মেন্ট, স্কেলিং এবং পরিচালনার জন্য একটি ওপেন-সোর্স সিস্টেম। -এটি সহজ ব্যবস্থাপনা এবং আবিষ্কারের জন্য লজিক্যাল ইউনিটে একটি অ্যাপ্লিকেশন তৈরি করে এমন কন্টেইনারগুলিকে গোষ্ঠীভুক্ত করে। কুবারনেটিস Google-এ প্রোডাকশন ওয়ার্কলোড চালানোর 15 বছরের অভিজ্ঞতার ভিত্তিতে তৈরি করে, কমিউনিটির সেরা ধারণা এবং অনুশীলনের সাথে মিলিত ভাবে। +এটি সহজ ব্যবস্থাপনা এবং আবিষ্কারের জন্য লজিক্যাল ইউনিটে একটি অ্যাপ্লিকেশন তৈরি করে এমন কন্টেইনারগুলিকে গোষ্ঠীভুক্ত করে। কুবারনেটিস [Google-এ প্রোডাকশন ওয়ার্কলোড চালানোর 15 বছরের অভিজ্ঞতার ভিত্তিতে](http://queue.acm.org/detail.cfm?id=2898444) তৈরি করে, কমিউনিটির সেরা ধারণা এবং অনুশীলনের সাথে মিলিত ভাবে। {{% /blocks/feature %}} {{% blocks/feature image="scalable" %}} @@ -62,4 +62,4 @@ Google সপ্তাহে বিলিয়ন কন্টেইনার {{< blocks/kubernetes-features >}} -{{< blocks/case-studies >}} \ No newline at end of file +{{< blocks/case-studies >}} diff --git a/content/bn/blog/_index.md b/content/bn/blog/_index.md index afb22d0c8c..feaefbf8a3 100644 --- a/content/bn/blog/_index.md +++ b/content/bn/blog/_index.md @@ -4,7 +4,11 @@ linkTitle: ব্লগ menu: main: title: "ব্লগ" - weight: 40 - post: > -

কুবারনেটিস এবং সাধারণভাবে কন্টেইনার স্পেসের জন্য সাম্প্রতিক সংবাদ পড়ুন, এবং প্রেস থেকে সরাসরি প্রাপ্ত প্রযুক্তিগত কিভাবে-কী পেতে থাকুন।

+ weight: 20 --- +{{< comment >}} + +ব্লগে অবদান সম্পর্কে তথ্যের জন্য, দেখুন +https://kubernetes.io/docs/contribute/new-content/blogs-case-studies/#write-a-blog-post + +{{< /comment >}} diff --git a/content/bn/blog/_posts/2023-12-18-read-write-once-pod-access-mode-ga.md b/content/bn/blog/_posts/2023-12-18-read-write-once-pod-access-mode-ga.md new file mode 100644 index 0000000000..03366c8c9f --- /dev/null +++ b/content/bn/blog/_posts/2023-12-18-read-write-once-pod-access-mode-ga.md @@ -0,0 +1,99 @@ +--- +layout: blog +title: "কুবারনেটিস 1.29: পারসিস্টেন্টভলিউম গ্র্যাজুয়েটদের জন্য একক পড অ্যাক্সেস মোড" +date: 2023-12-18 +slug: read-write-once-pod-access-mode-ga +author: > + Chris Henzie (Google) +--- + +Kubernetes v1.29 প্রকাশের সাথে, ReadWriteOncePod ভলিউম অ্যাক্সেস মোড +সবার জন্য গ্র্যাজুয়েট হয়েছে: এটি কুবারনেটিস এর স্থিতিশীল API এর অংশ। +এই ব্লগ পোস্টে, আমি এই অ্যাক্সেস মোড এবং এটি কী করে তা আরও ঘনিষ্ঠভাবে দেখব। + +## `ReadWriteOncePod` কি? + +`ReadWriteOncePod` হলো +[পারসিস্টেন্টভলিউম(PersistentVolumes (PVs))](/docs/concepts/storage/persistent-volumes/#persistent-volumes) এবং +[পারসিস্টেন্টভলিউমক্লেমস(PersistentVolumeClaims (PVCs))](/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims) +এর জন্য একটি অ্যাক্সেস মোড যা কুবারনেটিস v1.22-এ চালু করা হয়েছে। এই অ্যাক্সেস মোড +আপনাকে ক্লাস্টারে একটি একক পডে ভলিউম অ্যাক্সেস সীমাবদ্ধ করতে সক্ষম করে, এটি নিশ্চিত +করে যে একটি সময়ে শুধুমাত্র একটি পড ভলিউমে লিখতে পারে। এটি স্টেটফুল ওয়ার্কলোডগুলির +জন্য বিশেষভাবে উপযোগী হতে পারে যার জন্য স্টোরেজে একক-লেখকের অ্যাক্সেস প্রয়োজন। + +অ্যাক্সেস মোড এবং `ReadWriteOncePod` কীভাবে কাজ করে সে সম্পর্কে আরও প্রসঙ্গের জন্য পড়ুন +[অ্যাক্সেস মোডগুলি কী এবং কেন সেগুলি গুরুত্বপূর্ণ?](/blog/2021/09/13/read-write-once-pod-access-mode-alpha/#what-are-access-modes-and-why-are-they-important) +2021 থেকে পারসিস্টেন্টভলিউম নিবন্ধের জন্য একক পড অ্যাক্সেস মোড প্রবর্তন করা হয়েছে । + +## কিভাবে আমি `ReadWriteOncePod` ব্যবহার শুরু করতে পারি? + +ReadWriteOncePod ভলিউম অ্যাক্সেস মোড ডিফল্টরূপে কুবারনেটিস ভার্সন v1.27 +এবং তার পরে উপলব্ধ। কুবারনেটিস v1.29 এবং পরবর্তীতে, কুবারনেটিস API +সর্বদা এই অ্যাক্সেস মোডকে স্বীকৃতি দেয়। + +মনে রাখবেন যে `ReadWriteOncePod` +[শুধুমাত্র CSI ভলিউমগুলির জন্য সাপোর্টেড](/docs/concepts/storage/persistent-volumes/#access-modes), +এবং এই বৈশিষ্ট্যটি ব্যবহার করার আগে, আপনাকে নিম্নলিখিত +[CSI সাইডকারগুলিকে](https://kubernetes-csi.github.io/docs/sidecar-containers.html) +এই ভার্সনগুলিতে বা তার বেশি আপডেট করতে হবে: + +- [csi-provisioner:v3.0.0+](https://github.com/kubernetes-csi/external-provisioner/releases/tag/v3.0.0) +- [csi-attacher:v3.3.0+](https://github.com/kubernetes-csi/external-attacher/releases/tag/v3.3.0) +- [csi-resizer:v1.3.0+](https://github.com/kubernetes-csi/external-resizer/releases/tag/v1.3.0) + +`ReadWriteOncePod` ব্যবহার শুরু করতে, আপনাকে `ReadWriteOncePod` +অ্যাক্সেস মোড সহ একটি PVC তৈরি করতে হবে: + +```yaml +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: single-writer-only +spec: + accessModes: + - ReadWriteOncePod # Allows only a single pod to access single-writer-only. + resources: + requests: + storage: 1Gi +``` + +যদি আপনার স্টোরেজ প্লাগইন +[ডায়নামিক প্রভিশনিং সাপোর্টে করে](/docs/concepts/storage/dynamic-provisioning/), +তাহলে `ReadWriteOncePod` অ্যাক্সেস মোড প্রয়োগ করে নতুন +পারসিস্টেন্টভলিউম তৈরি করা হবে। + +`ReadWriteOncePod` ব্যবহার করার জন্য বিদ্যমান ভলিউম স্থানান্তরিত করার বিশদ বিবরণের জন্য +[বিদ্যমান পারসিস্টেন্টভলিউম স্থানান্তর করা](/blog/2021/09/13/read-write-once-pod-access-mode-alpha/#migrating-existing-persistentvolumes) পড়ুন । + +## আমি কীভাবে আরও শিখতে পারি? + +`ReadWriteOncePod` অ্যাক্সেস মোড এবং CSI স্পেক পরিবর্তনের প্রেরণা সম্পর্কে +আরও বিশদ বিবরণের জন্য অনুগ্রহ করে ব্লগ পোস্টগুলি +[alpha](/blog/2021/09/13/read-write-once-pod-access-mode-alpha), +[beta](/blog/2023/04/20/read-write-once-pod-access-mode-beta), এবং +[KEP-2485](https://github.com/kubernetes/enhancements/blob/master/keps/sig-storage/2485-read-write-once-pod-pv-access-mode/README.md) দেখুন৷ + +## আমি কিভাবে জড়িত হতে পারি? + +[কুবারনেটিস #csi স্ল্যাক চ্যানেল](https://kubernetes.slack.com/messages/csi) এবং +যে কোনো স্ট্যান্ডার্ড +[SIG স্টোরেজ কমিউনিকেশন চ্যানেল](https://github.com/kubernetes/community/blob/master/sig-storage/README.md#contact) +হলো SIG স্টোরেজ এবং CSI টিমের কাছে পৌঁছানোর দুর্দান্ত পদ্ধতি। + +নিম্নলিখিত ব্যক্তিদের বিশেষ ধন্যবাদ যাদের চিন্তাশীল পর্যালোচনা এবং প্রতিক্রিয়া এই বৈশিষ্ট্যটি গঠনে সহায়তা করেছে: + +* Abdullah Gharaibeh (ahg-g) +* Aldo Culquicondor (alculquicondor) +* Antonio Ojea (aojea) +* David Eads (deads2k) +* Jan Šafránek (jsafrane) +* Joe Betz (jpbetz) +* Kante Yin (kerthcet) +* Michelle Au (msau42) +* Tim Bannister (sftim) +* Xing Yang (xing-yang) + +আপনি যদি CSI বা কুবারনেটিস স্টোরেজ সিস্টেমের যেকোন অংশের ডিজাইন +এবং বিকাশের সাথে জড়িত হতে আগ্রহী হন, তাহলে +[কুবারনেটিস স্টোরেজ স্পেশাল ইন্টারেস্ট গ্রুপে](https://github.com/kubernetes/community/tree/master/sig-storage) (Special Interest Group(SIG)) যোগ দিন। +আমরা দ্রুত বৃদ্ধি করছি এবং সবসময় নতুন অবদানকারীদের স্বাগত জানাই। diff --git a/content/bn/case-studies/_index.html b/content/bn/case-studies/_index.html index a552c723d1..48b93d73c7 100644 --- a/content/bn/case-studies/_index.html +++ b/content/bn/case-studies/_index.html @@ -1,9 +1,13 @@ --- -title: কেস অনুযায়ী পরীক্ষা -linkTitle: কেস অনুযায়ী পরীক্ষা -bigheader: কুবারনেটিস ব্যবহারকারীদের কেস অনুযায়ী পরীক্ষা -abstract: কুবারনেটিস ব্যবহারকারীদের একটি সংগ্রহ যারা উৎপাদনে এটি ব্যবহার করে +title: কেস স্টাডিজ +linkTitle: কেস স্টাডিজ +bigheader: কুবারনেটিস ব্যবহারকারীদের কেস স্টাডিজ +abstract: কুবারনেটিস ব্যবহারকারীদের একটি সংগ্রহ যারা প্রোডাকশনে এটি ব্যবহার করে. layout: basic class: gridPage +body_class: caseStudies cid: caseStudies +menu: + main: + weight: 60 --- diff --git a/content/bn/case-studies/adform/adform_featured_logo.png b/content/bn/case-studies/adform/adform_featured_logo.png index e69de29bb2..cd0fa7b6c9 100644 Binary files a/content/bn/case-studies/adform/adform_featured_logo.png and b/content/bn/case-studies/adform/adform_featured_logo.png differ diff --git a/content/bn/case-studies/adform/adform_featured_logo.svg b/content/bn/case-studies/adform/adform_featured_logo.svg index e69de29bb2..b31ef3235a 100644 --- a/content/bn/case-studies/adform/adform_featured_logo.svg +++ b/content/bn/case-studies/adform/adform_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/adidas/adidas-featured.svg b/content/bn/case-studies/adidas/adidas-featured.svg index e69de29bb2..a53d467552 100644 --- a/content/bn/case-studies/adidas/adidas-featured.svg +++ b/content/bn/case-studies/adidas/adidas-featured.svg @@ -0,0 +1 @@ +kubernetes.io-54664 \ No newline at end of file diff --git a/content/bn/case-studies/amadeus/amadeus_featured.png b/content/bn/case-studies/amadeus/amadeus_featured.png index e69de29bb2..d23d7b0163 100644 Binary files a/content/bn/case-studies/amadeus/amadeus_featured.png and b/content/bn/case-studies/amadeus/amadeus_featured.png differ diff --git a/content/bn/case-studies/amadeus/amadeus_featured.svg b/content/bn/case-studies/amadeus/amadeus_featured.svg index e69de29bb2..9d0c40b8e1 100644 --- a/content/bn/case-studies/amadeus/amadeus_featured.svg +++ b/content/bn/case-studies/amadeus/amadeus_featured.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/amadeus/amadeus_logo.png b/content/bn/case-studies/amadeus/amadeus_logo.png index e69de29bb2..6191c7f681 100644 Binary files a/content/bn/case-studies/amadeus/amadeus_logo.png and b/content/bn/case-studies/amadeus/amadeus_logo.png differ diff --git a/content/bn/case-studies/ancestry/ancestry_featured.png b/content/bn/case-studies/ancestry/ancestry_featured.png index e69de29bb2..6d63daae32 100644 Binary files a/content/bn/case-studies/ancestry/ancestry_featured.png and b/content/bn/case-studies/ancestry/ancestry_featured.png differ diff --git a/content/bn/case-studies/ancestry/ancestry_featured.svg b/content/bn/case-studies/ancestry/ancestry_featured.svg index e69de29bb2..9a3e80186b 100644 --- a/content/bn/case-studies/ancestry/ancestry_featured.svg +++ b/content/bn/case-studies/ancestry/ancestry_featured.svg @@ -0,0 +1 @@ +kubernetes.io-logos-ancestry \ No newline at end of file diff --git a/content/bn/case-studies/ancestry/ancestry_logo.png b/content/bn/case-studies/ancestry/ancestry_logo.png index e69de29bb2..5fbade8dec 100644 Binary files a/content/bn/case-studies/ancestry/ancestry_logo.png and b/content/bn/case-studies/ancestry/ancestry_logo.png differ diff --git a/content/bn/case-studies/ant-financial/ant-financial_featured_logo.png b/content/bn/case-studies/ant-financial/ant-financial_featured_logo.png index e69de29bb2..cb40345027 100644 Binary files a/content/bn/case-studies/ant-financial/ant-financial_featured_logo.png and b/content/bn/case-studies/ant-financial/ant-financial_featured_logo.png differ diff --git a/content/bn/case-studies/ant-financial/ant-financial_featured_logo.svg b/content/bn/case-studies/ant-financial/ant-financial_featured_logo.svg index e69de29bb2..4eb8a51127 100644 --- a/content/bn/case-studies/ant-financial/ant-financial_featured_logo.svg +++ b/content/bn/case-studies/ant-financial/ant-financial_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/appdirect/appdirect_featured_logo.png b/content/bn/case-studies/appdirect/appdirect_featured_logo.png index e69de29bb2..724a8a7568 100644 Binary files a/content/bn/case-studies/appdirect/appdirect_featured_logo.png and b/content/bn/case-studies/appdirect/appdirect_featured_logo.png differ diff --git a/content/bn/case-studies/appdirect/appdirect_featured_logo.svg b/content/bn/case-studies/appdirect/appdirect_featured_logo.svg index e69de29bb2..36fcba1abb 100644 --- a/content/bn/case-studies/appdirect/appdirect_featured_logo.svg +++ b/content/bn/case-studies/appdirect/appdirect_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/babylon/babylon_featured_logo.png b/content/bn/case-studies/babylon/babylon_featured_logo.png index e69de29bb2..8b158b5ed3 100644 Binary files a/content/bn/case-studies/babylon/babylon_featured_logo.png and b/content/bn/case-studies/babylon/babylon_featured_logo.png differ diff --git a/content/bn/case-studies/babylon/babylon_featured_logo.svg b/content/bn/case-studies/babylon/babylon_featured_logo.svg index e69de29bb2..e84da19268 100644 --- a/content/bn/case-studies/babylon/babylon_featured_logo.svg +++ b/content/bn/case-studies/babylon/babylon_featured_logo.svg @@ -0,0 +1 @@ +babylon_featured_logo \ No newline at end of file diff --git a/content/bn/case-studies/blablacar/blablacar_featured.png b/content/bn/case-studies/blablacar/blablacar_featured.png index e69de29bb2..cfe37257b9 100644 Binary files a/content/bn/case-studies/blablacar/blablacar_featured.png and b/content/bn/case-studies/blablacar/blablacar_featured.png differ diff --git a/content/bn/case-studies/blablacar/blablacar_featured.svg b/content/bn/case-studies/blablacar/blablacar_featured.svg index e69de29bb2..5b887f24a8 100644 --- a/content/bn/case-studies/blablacar/blablacar_featured.svg +++ b/content/bn/case-studies/blablacar/blablacar_featured.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/blablacar/blablacar_logo.png b/content/bn/case-studies/blablacar/blablacar_logo.png index e69de29bb2..14606e0360 100644 Binary files a/content/bn/case-studies/blablacar/blablacar_logo.png and b/content/bn/case-studies/blablacar/blablacar_logo.png differ diff --git a/content/bn/case-studies/blackrock/blackrock_featured.png b/content/bn/case-studies/blackrock/blackrock_featured.png index e69de29bb2..3898b88c9f 100644 Binary files a/content/bn/case-studies/blackrock/blackrock_featured.png and b/content/bn/case-studies/blackrock/blackrock_featured.png differ diff --git a/content/bn/case-studies/blackrock/blackrock_featured.svg b/content/bn/case-studies/blackrock/blackrock_featured.svg index e69de29bb2..f98ea323d7 100644 --- a/content/bn/case-studies/blackrock/blackrock_featured.svg +++ b/content/bn/case-studies/blackrock/blackrock_featured.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/blackrock/blackrock_logo.png b/content/bn/case-studies/blackrock/blackrock_logo.png index e69de29bb2..51e914a63b 100644 Binary files a/content/bn/case-studies/blackrock/blackrock_logo.png and b/content/bn/case-studies/blackrock/blackrock_logo.png differ diff --git a/content/bn/case-studies/booking-com/booking.com_featured_logo.png b/content/bn/case-studies/booking-com/booking.com_featured_logo.png index e69de29bb2..623ca67345 100644 Binary files a/content/bn/case-studies/booking-com/booking.com_featured_logo.png and b/content/bn/case-studies/booking-com/booking.com_featured_logo.png differ diff --git a/content/bn/case-studies/booking-com/booking.com_featured_logo.svg b/content/bn/case-studies/booking-com/booking.com_featured_logo.svg index e69de29bb2..0b245c2700 100644 --- a/content/bn/case-studies/booking-com/booking.com_featured_logo.svg +++ b/content/bn/case-studies/booking-com/booking.com_featured_logo.svg @@ -0,0 +1 @@ +booking.com_featured_logo \ No newline at end of file diff --git a/content/bn/case-studies/booz-allen/booz-allen-featured-logo.svg b/content/bn/case-studies/booz-allen/booz-allen-featured-logo.svg index e69de29bb2..3ce58c68f7 100644 --- a/content/bn/case-studies/booz-allen/booz-allen-featured-logo.svg +++ b/content/bn/case-studies/booz-allen/booz-allen-featured-logo.svg @@ -0,0 +1 @@ +booz-allen-featured \ No newline at end of file diff --git a/content/bn/case-studies/booz-allen/booz-allen_featured_logo.png b/content/bn/case-studies/booz-allen/booz-allen_featured_logo.png new file mode 100644 index 0000000000..f9bc64ba3b Binary files /dev/null and b/content/bn/case-studies/booz-allen/booz-allen_featured_logo.png differ diff --git a/content/bn/case-studies/bose/bose_featured_logo.png b/content/bn/case-studies/bose/bose_featured_logo.png index e69de29bb2..d4af69ed72 100644 Binary files a/content/bn/case-studies/bose/bose_featured_logo.png and b/content/bn/case-studies/bose/bose_featured_logo.png differ diff --git a/content/bn/case-studies/bose/bose_featured_logo.svg b/content/bn/case-studies/bose/bose_featured_logo.svg index e69de29bb2..58b2add614 100644 --- a/content/bn/case-studies/bose/bose_featured_logo.svg +++ b/content/bn/case-studies/bose/bose_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/box/box_featured.png b/content/bn/case-studies/box/box_featured.png index e69de29bb2..fc6dec602a 100644 Binary files a/content/bn/case-studies/box/box_featured.png and b/content/bn/case-studies/box/box_featured.png differ diff --git a/content/bn/case-studies/box/box_featured.svg b/content/bn/case-studies/box/box_featured.svg index e69de29bb2..2b4fb6552b 100644 --- a/content/bn/case-studies/box/box_featured.svg +++ b/content/bn/case-studies/box/box_featured.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/box/box_logo.png b/content/bn/case-studies/box/box_logo.png index e69de29bb2..b401dec624 100644 Binary files a/content/bn/case-studies/box/box_logo.png and b/content/bn/case-studies/box/box_logo.png differ diff --git a/content/bn/case-studies/box/box_small.png b/content/bn/case-studies/box/box_small.png index e69de29bb2..105b66a583 100644 Binary files a/content/bn/case-studies/box/box_small.png and b/content/bn/case-studies/box/box_small.png differ diff --git a/content/bn/case-studies/box/box_small.svg b/content/bn/case-studies/box/box_small.svg index e69de29bb2..7030785935 100644 --- a/content/bn/case-studies/box/box_small.svg +++ b/content/bn/case-studies/box/box_small.svg @@ -0,0 +1 @@ +box \ No newline at end of file diff --git a/content/bn/case-studies/box/video.png b/content/bn/case-studies/box/video.png index e69de29bb2..4c61e7440f 100644 Binary files a/content/bn/case-studies/box/video.png and b/content/bn/case-studies/box/video.png differ diff --git a/content/bn/case-studies/buffer/buffer_featured.png b/content/bn/case-studies/buffer/buffer_featured.png index e69de29bb2..cd6aaba4ca 100644 Binary files a/content/bn/case-studies/buffer/buffer_featured.png and b/content/bn/case-studies/buffer/buffer_featured.png differ diff --git a/content/bn/case-studies/buffer/buffer_featured.svg b/content/bn/case-studies/buffer/buffer_featured.svg index e69de29bb2..b8e321f31d 100644 --- a/content/bn/case-studies/buffer/buffer_featured.svg +++ b/content/bn/case-studies/buffer/buffer_featured.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/buffer/buffer_logo.png b/content/bn/case-studies/buffer/buffer_logo.png index e69de29bb2..1b4b3b7e52 100644 Binary files a/content/bn/case-studies/buffer/buffer_logo.png and b/content/bn/case-studies/buffer/buffer_logo.png differ diff --git a/content/bn/case-studies/capital-one/capitalone_featured_logo.png b/content/bn/case-studies/capital-one/capitalone_featured_logo.png index e69de29bb2..f57c7697e3 100644 Binary files a/content/bn/case-studies/capital-one/capitalone_featured_logo.png and b/content/bn/case-studies/capital-one/capitalone_featured_logo.png differ diff --git a/content/bn/case-studies/capital-one/capitalone_featured_logo.svg b/content/bn/case-studies/capital-one/capitalone_featured_logo.svg index e69de29bb2..124adae9af 100644 --- a/content/bn/case-studies/capital-one/capitalone_featured_logo.svg +++ b/content/bn/case-studies/capital-one/capitalone_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/cern/cern_featured_logo.png b/content/bn/case-studies/cern/cern_featured_logo.png index e69de29bb2..b873b828b1 100644 Binary files a/content/bn/case-studies/cern/cern_featured_logo.png and b/content/bn/case-studies/cern/cern_featured_logo.png differ diff --git a/content/bn/case-studies/cern/cern_logo.svg b/content/bn/case-studies/cern/cern_logo.svg index e69de29bb2..c242aafc13 100644 --- a/content/bn/case-studies/cern/cern_logo.svg +++ b/content/bn/case-studies/cern/cern_logo.svg @@ -0,0 +1 @@ +cern \ No newline at end of file diff --git a/content/bn/case-studies/chinaunicom/chinaunicom_featured_logo.png b/content/bn/case-studies/chinaunicom/chinaunicom_featured_logo.png index e69de29bb2..f90ff1e509 100644 Binary files a/content/bn/case-studies/chinaunicom/chinaunicom_featured_logo.png and b/content/bn/case-studies/chinaunicom/chinaunicom_featured_logo.png differ diff --git a/content/bn/case-studies/chinaunicom/chinaunicom_featured_logo.svg b/content/bn/case-studies/chinaunicom/chinaunicom_featured_logo.svg index e69de29bb2..aae1978cf2 100644 --- a/content/bn/case-studies/chinaunicom/chinaunicom_featured_logo.svg +++ b/content/bn/case-studies/chinaunicom/chinaunicom_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/city-of-montreal/city-of-montreal_featured_logo.png b/content/bn/case-studies/city-of-montreal/city-of-montreal_featured_logo.png index e69de29bb2..be2af029f0 100644 Binary files a/content/bn/case-studies/city-of-montreal/city-of-montreal_featured_logo.png and b/content/bn/case-studies/city-of-montreal/city-of-montreal_featured_logo.png differ diff --git a/content/bn/case-studies/city-of-montreal/city-of-montreal_featured_logo.svg b/content/bn/case-studies/city-of-montreal/city-of-montreal_featured_logo.svg index e69de29bb2..44ac9b0b1d 100644 --- a/content/bn/case-studies/city-of-montreal/city-of-montreal_featured_logo.svg +++ b/content/bn/case-studies/city-of-montreal/city-of-montreal_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/crowdfire/crowdfire_featured_logo.png b/content/bn/case-studies/crowdfire/crowdfire_featured_logo.png index e69de29bb2..ef84b16ea0 100644 Binary files a/content/bn/case-studies/crowdfire/crowdfire_featured_logo.png and b/content/bn/case-studies/crowdfire/crowdfire_featured_logo.png differ diff --git a/content/bn/case-studies/crowdfire/crowdfire_featured_logo.svg b/content/bn/case-studies/crowdfire/crowdfire_featured_logo.svg index e69de29bb2..a4f020161a 100644 --- a/content/bn/case-studies/crowdfire/crowdfire_featured_logo.svg +++ b/content/bn/case-studies/crowdfire/crowdfire_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/daocloud/daocloud_featured_logo.png b/content/bn/case-studies/daocloud/daocloud_featured_logo.png index e69de29bb2..ca6fbcdc44 100644 Binary files a/content/bn/case-studies/daocloud/daocloud_featured_logo.png and b/content/bn/case-studies/daocloud/daocloud_featured_logo.png differ diff --git a/content/bn/case-studies/daocloud/daocloud_featured_logo.svg b/content/bn/case-studies/daocloud/daocloud_featured_logo.svg index e69de29bb2..2d05acd730 100644 --- a/content/bn/case-studies/daocloud/daocloud_featured_logo.svg +++ b/content/bn/case-studies/daocloud/daocloud_featured_logo.svg @@ -0,0 +1 @@ +DaoCloud_logo \ No newline at end of file diff --git a/content/bn/case-studies/denso/denso_featured_logo.svg b/content/bn/case-studies/denso/denso_featured_logo.svg index e69de29bb2..e2b26b2c8c 100644 --- a/content/bn/case-studies/denso/denso_featured_logo.svg +++ b/content/bn/case-studies/denso/denso_featured_logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/content/bn/case-studies/golfnow/golfnow_featured.png b/content/bn/case-studies/golfnow/golfnow_featured.png index e69de29bb2..0b99ac3b8f 100644 Binary files a/content/bn/case-studies/golfnow/golfnow_featured.png and b/content/bn/case-studies/golfnow/golfnow_featured.png differ diff --git a/content/bn/case-studies/golfnow/golfnow_featured.svg b/content/bn/case-studies/golfnow/golfnow_featured.svg index e69de29bb2..b5b42d6fcd 100644 --- a/content/bn/case-studies/golfnow/golfnow_featured.svg +++ b/content/bn/case-studies/golfnow/golfnow_featured.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/golfnow/golfnow_logo.png b/content/bn/case-studies/golfnow/golfnow_logo.png index e69de29bb2..dbeb127b02 100644 Binary files a/content/bn/case-studies/golfnow/golfnow_logo.png and b/content/bn/case-studies/golfnow/golfnow_logo.png differ diff --git a/content/bn/case-studies/haufegroup/haufegroup_featured.png b/content/bn/case-studies/haufegroup/haufegroup_featured.png index e69de29bb2..08b09ec9db 100644 Binary files a/content/bn/case-studies/haufegroup/haufegroup_featured.png and b/content/bn/case-studies/haufegroup/haufegroup_featured.png differ diff --git a/content/bn/case-studies/haufegroup/haufegroup_featured.svg b/content/bn/case-studies/haufegroup/haufegroup_featured.svg index e69de29bb2..a61b577ab8 100644 --- a/content/bn/case-studies/haufegroup/haufegroup_featured.svg +++ b/content/bn/case-studies/haufegroup/haufegroup_featured.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/haufegroup/haufegroup_logo.png b/content/bn/case-studies/haufegroup/haufegroup_logo.png index e69de29bb2..5d8245b0f6 100644 Binary files a/content/bn/case-studies/haufegroup/haufegroup_logo.png and b/content/bn/case-studies/haufegroup/haufegroup_logo.png differ diff --git a/content/bn/case-studies/huawei/huawei_featured.png b/content/bn/case-studies/huawei/huawei_featured.png index e69de29bb2..22071b4691 100644 Binary files a/content/bn/case-studies/huawei/huawei_featured.png and b/content/bn/case-studies/huawei/huawei_featured.png differ diff --git a/content/bn/case-studies/huawei/huawei_featured.svg b/content/bn/case-studies/huawei/huawei_featured.svg index e69de29bb2..a8a8f22c8f 100644 --- a/content/bn/case-studies/huawei/huawei_featured.svg +++ b/content/bn/case-studies/huawei/huawei_featured.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/huawei/huawei_logo.png b/content/bn/case-studies/huawei/huawei_logo.png index e69de29bb2..94361a27eb 100644 Binary files a/content/bn/case-studies/huawei/huawei_logo.png and b/content/bn/case-studies/huawei/huawei_logo.png differ diff --git a/content/bn/case-studies/ibm/ibm_featured_logo.png b/content/bn/case-studies/ibm/ibm_featured_logo.png index e69de29bb2..adb07a8cdf 100644 Binary files a/content/bn/case-studies/ibm/ibm_featured_logo.png and b/content/bn/case-studies/ibm/ibm_featured_logo.png differ diff --git a/content/bn/case-studies/ibm/ibm_featured_logo.svg b/content/bn/case-studies/ibm/ibm_featured_logo.svg index e69de29bb2..f79fd7847b 100644 --- a/content/bn/case-studies/ibm/ibm_featured_logo.svg +++ b/content/bn/case-studies/ibm/ibm_featured_logo.svg @@ -0,0 +1 @@ +ibm_featured_logo \ No newline at end of file diff --git a/content/bn/case-studies/ing/ing_featured_logo.png b/content/bn/case-studies/ing/ing_featured_logo.png index e69de29bb2..f6d4489715 100644 Binary files a/content/bn/case-studies/ing/ing_featured_logo.png and b/content/bn/case-studies/ing/ing_featured_logo.png differ diff --git a/content/bn/case-studies/ing/ing_featured_logo.svg b/content/bn/case-studies/ing/ing_featured_logo.svg index e69de29bb2..5a2df497c7 100644 --- a/content/bn/case-studies/ing/ing_featured_logo.svg +++ b/content/bn/case-studies/ing/ing_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/jd-com/jd-com_featured_logo.png b/content/bn/case-studies/jd-com/jd-com_featured_logo.png index e69de29bb2..e897998429 100644 Binary files a/content/bn/case-studies/jd-com/jd-com_featured_logo.png and b/content/bn/case-studies/jd-com/jd-com_featured_logo.png differ diff --git a/content/bn/case-studies/jd-com/jd.com_featured_logo.svg b/content/bn/case-studies/jd-com/jd.com_featured_logo.svg new file mode 100644 index 0000000000..d13de0240a --- /dev/null +++ b/content/bn/case-studies/jd-com/jd.com_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/naic/naic_featured_logo.png b/content/bn/case-studies/naic/naic_featured_logo.png index e69de29bb2..f2497114bf 100644 Binary files a/content/bn/case-studies/naic/naic_featured_logo.png and b/content/bn/case-studies/naic/naic_featured_logo.png differ diff --git a/content/bn/case-studies/naic/naic_featured_logo.svg b/content/bn/case-studies/naic/naic_featured_logo.svg index e69de29bb2..b4af63931d 100644 --- a/content/bn/case-studies/naic/naic_featured_logo.svg +++ b/content/bn/case-studies/naic/naic_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/nav/nav_featured_logo.png b/content/bn/case-studies/nav/nav_featured_logo.png index e69de29bb2..22d96017c4 100644 Binary files a/content/bn/case-studies/nav/nav_featured_logo.png and b/content/bn/case-studies/nav/nav_featured_logo.png differ diff --git a/content/bn/case-studies/nav/nav_featured_logo.svg b/content/bn/case-studies/nav/nav_featured_logo.svg index e69de29bb2..42b4ffa967 100644 --- a/content/bn/case-studies/nav/nav_featured_logo.svg +++ b/content/bn/case-studies/nav/nav_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/nerdalize/nerdalize_featured_logo.png b/content/bn/case-studies/nerdalize/nerdalize_featured_logo.png index e69de29bb2..eb959b8ecf 100644 Binary files a/content/bn/case-studies/nerdalize/nerdalize_featured_logo.png and b/content/bn/case-studies/nerdalize/nerdalize_featured_logo.png differ diff --git a/content/bn/case-studies/nerdalize/nerdalize_featured_logo.svg b/content/bn/case-studies/nerdalize/nerdalize_featured_logo.svg index e69de29bb2..aa2661e503 100644 --- a/content/bn/case-studies/nerdalize/nerdalize_featured_logo.svg +++ b/content/bn/case-studies/nerdalize/nerdalize_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/netease/netease_featured_logo.png b/content/bn/case-studies/netease/netease_featured_logo.png index e69de29bb2..5700b940f3 100644 Binary files a/content/bn/case-studies/netease/netease_featured_logo.png and b/content/bn/case-studies/netease/netease_featured_logo.png differ diff --git a/content/bn/case-studies/netease/netease_featured_logo.svg b/content/bn/case-studies/netease/netease_featured_logo.svg index e69de29bb2..0ea176812d 100644 --- a/content/bn/case-studies/netease/netease_featured_logo.svg +++ b/content/bn/case-studies/netease/netease_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/newyorktimes/newyorktimes_featured.png b/content/bn/case-studies/newyorktimes/newyorktimes_featured.png index e69de29bb2..fad0927883 100644 Binary files a/content/bn/case-studies/newyorktimes/newyorktimes_featured.png and b/content/bn/case-studies/newyorktimes/newyorktimes_featured.png differ diff --git a/content/bn/case-studies/newyorktimes/newyorktimes_featured.svg b/content/bn/case-studies/newyorktimes/newyorktimes_featured.svg index e69de29bb2..e386c15806 100644 --- a/content/bn/case-studies/newyorktimes/newyorktimes_featured.svg +++ b/content/bn/case-studies/newyorktimes/newyorktimes_featured.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/newyorktimes/newyorktimes_logo.png b/content/bn/case-studies/newyorktimes/newyorktimes_logo.png index e69de29bb2..693a742c3e 100644 Binary files a/content/bn/case-studies/newyorktimes/newyorktimes_logo.png and b/content/bn/case-studies/newyorktimes/newyorktimes_logo.png differ diff --git a/content/bn/case-studies/nokia/nokia_featured_logo.png b/content/bn/case-studies/nokia/nokia_featured_logo.png index e69de29bb2..8e046f021f 100644 Binary files a/content/bn/case-studies/nokia/nokia_featured_logo.png and b/content/bn/case-studies/nokia/nokia_featured_logo.png differ diff --git a/content/bn/case-studies/nokia/nokia_featured_logo.svg b/content/bn/case-studies/nokia/nokia_featured_logo.svg index e69de29bb2..1e3cce4956 100644 --- a/content/bn/case-studies/nokia/nokia_featured_logo.svg +++ b/content/bn/case-studies/nokia/nokia_featured_logo.svg @@ -0,0 +1 @@ +nokia \ No newline at end of file diff --git a/content/bn/case-studies/nordstrom/nordstrom_featured_logo.png b/content/bn/case-studies/nordstrom/nordstrom_featured_logo.png index e69de29bb2..a557ffa82f 100644 Binary files a/content/bn/case-studies/nordstrom/nordstrom_featured_logo.png and b/content/bn/case-studies/nordstrom/nordstrom_featured_logo.png differ diff --git a/content/bn/case-studies/nordstrom/nordstrom_featured_logo.svg b/content/bn/case-studies/nordstrom/nordstrom_featured_logo.svg index e69de29bb2..a162e93f03 100644 --- a/content/bn/case-studies/nordstrom/nordstrom_featured_logo.svg +++ b/content/bn/case-studies/nordstrom/nordstrom_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos2 \ No newline at end of file diff --git a/content/bn/case-studies/northwestern-mutual/northwestern_featured_logo.png b/content/bn/case-studies/northwestern-mutual/northwestern_featured_logo.png index e69de29bb2..7c1422f32b 100644 Binary files a/content/bn/case-studies/northwestern-mutual/northwestern_featured_logo.png and b/content/bn/case-studies/northwestern-mutual/northwestern_featured_logo.png differ diff --git a/content/bn/case-studies/northwestern-mutual/northwestern_featured_logo.svg b/content/bn/case-studies/northwestern-mutual/northwestern_featured_logo.svg index 1b0fb12619..7a2f09de54 100644 --- a/content/bn/case-studies/northwestern-mutual/northwestern_featured_logo.svg +++ b/content/bn/case-studies/northwestern-mutual/northwestern_featured_logo.svg @@ -1 +1 @@ -kubernetes.io-logos2kubernetes.io-logos2 \ No newline at end of file +kubernetes.io-logos2 \ No newline at end of file diff --git a/content/bn/case-studies/ocado/ocado_featured_logo.png b/content/bn/case-studies/ocado/ocado_featured_logo.png index e69de29bb2..0c2ef19ec3 100644 Binary files a/content/bn/case-studies/ocado/ocado_featured_logo.png and b/content/bn/case-studies/ocado/ocado_featured_logo.png differ diff --git a/content/bn/case-studies/ocado/ocado_featured_logo.svg b/content/bn/case-studies/ocado/ocado_featured_logo.svg index e69de29bb2..d9e2886e36 100644 --- a/content/bn/case-studies/ocado/ocado_featured_logo.svg +++ b/content/bn/case-studies/ocado/ocado_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos2 \ No newline at end of file diff --git a/content/bn/case-studies/openAI/openai_featured.png b/content/bn/case-studies/openAI/openai_featured.png index e69de29bb2..b2b667c0bb 100644 Binary files a/content/bn/case-studies/openAI/openai_featured.png and b/content/bn/case-studies/openAI/openai_featured.png differ diff --git a/content/bn/case-studies/openAI/openai_featured.svg b/content/bn/case-studies/openAI/openai_featured.svg index e69de29bb2..cf9b79721e 100644 --- a/content/bn/case-studies/openAI/openai_featured.svg +++ b/content/bn/case-studies/openAI/openai_featured.svg @@ -0,0 +1 @@ +kubernetes.io-logos2 \ No newline at end of file diff --git a/content/bn/case-studies/openAI/openai_logo.png b/content/bn/case-studies/openAI/openai_logo.png index e69de29bb2..a85a81ea06 100644 Binary files a/content/bn/case-studies/openAI/openai_logo.png and b/content/bn/case-studies/openAI/openai_logo.png differ diff --git a/content/bn/case-studies/peardeck/peardeck_featured.png b/content/bn/case-studies/peardeck/peardeck_featured.png index e69de29bb2..ce87ee2d47 100644 Binary files a/content/bn/case-studies/peardeck/peardeck_featured.png and b/content/bn/case-studies/peardeck/peardeck_featured.png differ diff --git a/content/bn/case-studies/peardeck/peardeck_featured.svg b/content/bn/case-studies/peardeck/peardeck_featured.svg index e69de29bb2..1c42e71920 100644 --- a/content/bn/case-studies/peardeck/peardeck_featured.svg +++ b/content/bn/case-studies/peardeck/peardeck_featured.svg @@ -0,0 +1 @@ +kubernetes.io-logos2 \ No newline at end of file diff --git a/content/bn/case-studies/peardeck/peardeck_logo.png b/content/bn/case-studies/peardeck/peardeck_logo.png index e69de29bb2..c1b9772ec4 100644 Binary files a/content/bn/case-studies/peardeck/peardeck_logo.png and b/content/bn/case-studies/peardeck/peardeck_logo.png differ diff --git a/content/bn/case-studies/pearson/pearson_featured.png b/content/bn/case-studies/pearson/pearson_featured.png index e69de29bb2..6f8ffec49e 100644 Binary files a/content/bn/case-studies/pearson/pearson_featured.png and b/content/bn/case-studies/pearson/pearson_featured.png differ diff --git a/content/bn/case-studies/pearson/pearson_featured.svg b/content/bn/case-studies/pearson/pearson_featured.svg index e69de29bb2..ed1602ac1a 100644 --- a/content/bn/case-studies/pearson/pearson_featured.svg +++ b/content/bn/case-studies/pearson/pearson_featured.svg @@ -0,0 +1,52 @@ + + + diff --git a/content/bn/case-studies/pearson/pearson_logo.png b/content/bn/case-studies/pearson/pearson_logo.png index e69de29bb2..57e586f3eb 100644 Binary files a/content/bn/case-studies/pearson/pearson_logo.png and b/content/bn/case-studies/pearson/pearson_logo.png differ diff --git a/content/bn/case-studies/pingcap/pingcap_featured_logo.png b/content/bn/case-studies/pingcap/pingcap_featured_logo.png index e69de29bb2..8b57f417ae 100644 Binary files a/content/bn/case-studies/pingcap/pingcap_featured_logo.png and b/content/bn/case-studies/pingcap/pingcap_featured_logo.png differ diff --git a/content/bn/case-studies/pingcap/pingcap_featured_logo.svg b/content/bn/case-studies/pingcap/pingcap_featured_logo.svg index e69de29bb2..46d2d2543d 100644 --- a/content/bn/case-studies/pingcap/pingcap_featured_logo.svg +++ b/content/bn/case-studies/pingcap/pingcap_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos2 \ No newline at end of file diff --git a/content/bn/case-studies/pinterest/pinterest_feature.png b/content/bn/case-studies/pinterest/pinterest_feature.png index e69de29bb2..ea5d625789 100644 Binary files a/content/bn/case-studies/pinterest/pinterest_feature.png and b/content/bn/case-studies/pinterest/pinterest_feature.png differ diff --git a/content/bn/case-studies/pinterest/pinterest_feature.svg b/content/bn/case-studies/pinterest/pinterest_feature.svg index e69de29bb2..96cd6ded97 100644 --- a/content/bn/case-studies/pinterest/pinterest_feature.svg +++ b/content/bn/case-studies/pinterest/pinterest_feature.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/pinterest/pinterest_logo.png b/content/bn/case-studies/pinterest/pinterest_logo.png index e69de29bb2..0f744e7828 100644 Binary files a/content/bn/case-studies/pinterest/pinterest_logo.png and b/content/bn/case-studies/pinterest/pinterest_logo.png differ diff --git a/content/bn/case-studies/prowise/prowise_featured_logo.png b/content/bn/case-studies/prowise/prowise_featured_logo.png index e69de29bb2..e6dc1a35ec 100644 Binary files a/content/bn/case-studies/prowise/prowise_featured_logo.png and b/content/bn/case-studies/prowise/prowise_featured_logo.png differ diff --git a/content/bn/case-studies/prowise/prowise_featured_logo.svg b/content/bn/case-studies/prowise/prowise_featured_logo.svg index e69de29bb2..1f2d5ce41a 100644 --- a/content/bn/case-studies/prowise/prowise_featured_logo.svg +++ b/content/bn/case-studies/prowise/prowise_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos2 \ No newline at end of file diff --git a/content/bn/case-studies/ricardo-ch/ricardo-ch_featured_logo.png b/content/bn/case-studies/ricardo-ch/ricardo-ch_featured_logo.png index e69de29bb2..c462c7ba56 100644 Binary files a/content/bn/case-studies/ricardo-ch/ricardo-ch_featured_logo.png and b/content/bn/case-studies/ricardo-ch/ricardo-ch_featured_logo.png differ diff --git a/content/bn/case-studies/ricardo-ch/ricardo.ch_featured_logo.svg b/content/bn/case-studies/ricardo-ch/ricardo.ch_featured_logo.svg new file mode 100644 index 0000000000..caefc4b96f --- /dev/null +++ b/content/bn/case-studies/ricardo-ch/ricardo.ch_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos2 \ No newline at end of file diff --git a/content/bn/case-studies/slamtec/slamtec_featured_logo.png b/content/bn/case-studies/slamtec/slamtec_featured_logo.png index e69de29bb2..598db9fe43 100644 Binary files a/content/bn/case-studies/slamtec/slamtec_featured_logo.png and b/content/bn/case-studies/slamtec/slamtec_featured_logo.png differ diff --git a/content/bn/case-studies/slamtec/slamtec_featured_logo.svg b/content/bn/case-studies/slamtec/slamtec_featured_logo.svg index e69de29bb2..7b4f6d6af1 100644 --- a/content/bn/case-studies/slamtec/slamtec_featured_logo.svg +++ b/content/bn/case-studies/slamtec/slamtec_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos2 \ No newline at end of file diff --git a/content/bn/case-studies/slingtv/slingtv_featured_logo.png b/content/bn/case-studies/slingtv/slingtv_featured_logo.png index e69de29bb2..b52143ee8b 100644 Binary files a/content/bn/case-studies/slingtv/slingtv_featured_logo.png and b/content/bn/case-studies/slingtv/slingtv_featured_logo.png differ diff --git a/content/bn/case-studies/slingtv/slingtv_featured_logo.svg b/content/bn/case-studies/slingtv/slingtv_featured_logo.svg index e69de29bb2..764f8ddd88 100644 --- a/content/bn/case-studies/slingtv/slingtv_featured_logo.svg +++ b/content/bn/case-studies/slingtv/slingtv_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos2 \ No newline at end of file diff --git a/content/bn/case-studies/sos/sos_featured_logo.png b/content/bn/case-studies/sos/sos_featured_logo.png index e69de29bb2..a97671af6d 100644 Binary files a/content/bn/case-studies/sos/sos_featured_logo.png and b/content/bn/case-studies/sos/sos_featured_logo.png differ diff --git a/content/bn/case-studies/sos/sos_featured_logo.svg b/content/bn/case-studies/sos/sos_featured_logo.svg index e69de29bb2..4e611798ac 100644 --- a/content/bn/case-studies/sos/sos_featured_logo.svg +++ b/content/bn/case-studies/sos/sos_featured_logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/content/bn/case-studies/spotify/spotify-featured.svg b/content/bn/case-studies/spotify/spotify-featured.svg new file mode 100644 index 0000000000..d1cc3418de --- /dev/null +++ b/content/bn/case-studies/spotify/spotify-featured.svg @@ -0,0 +1 @@ +kubernetes.io-logos \ No newline at end of file diff --git a/content/bn/case-studies/spotify/spotify_featured_logo.png b/content/bn/case-studies/spotify/spotify_featured_logo.png index e69de29bb2..def15c51bf 100644 Binary files a/content/bn/case-studies/spotify/spotify_featured_logo.png and b/content/bn/case-studies/spotify/spotify_featured_logo.png differ diff --git a/content/bn/case-studies/squarespace/squarespace_featured_logo.png b/content/bn/case-studies/squarespace/squarespace_featured_logo.png index e69de29bb2..551b6da321 100644 Binary files a/content/bn/case-studies/squarespace/squarespace_featured_logo.png and b/content/bn/case-studies/squarespace/squarespace_featured_logo.png differ diff --git a/content/bn/case-studies/squarespace/squarespace_featured_logo.svg b/content/bn/case-studies/squarespace/squarespace_featured_logo.svg index e69de29bb2..a69d7ea5c8 100644 --- a/content/bn/case-studies/squarespace/squarespace_featured_logo.svg +++ b/content/bn/case-studies/squarespace/squarespace_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos2 \ No newline at end of file diff --git a/content/bn/case-studies/thredup/thredup_featured_logo.png b/content/bn/case-studies/thredup/thredup_featured_logo.png index e69de29bb2..3961f761b1 100644 Binary files a/content/bn/case-studies/thredup/thredup_featured_logo.png and b/content/bn/case-studies/thredup/thredup_featured_logo.png differ diff --git a/content/bn/case-studies/thredup/thredup_featured_logo.svg b/content/bn/case-studies/thredup/thredup_featured_logo.svg index e69de29bb2..987e1a55c1 100644 --- a/content/bn/case-studies/thredup/thredup_featured_logo.svg +++ b/content/bn/case-studies/thredup/thredup_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos2 \ No newline at end of file diff --git a/content/bn/case-studies/vsco/vsco_featured_logo.png b/content/bn/case-studies/vsco/vsco_featured_logo.png index e69de29bb2..e01e2e4e8f 100644 Binary files a/content/bn/case-studies/vsco/vsco_featured_logo.png and b/content/bn/case-studies/vsco/vsco_featured_logo.png differ diff --git a/content/bn/case-studies/vsco/vsco_featured_logo.svg b/content/bn/case-studies/vsco/vsco_featured_logo.svg index e69de29bb2..e65dad8c52 100644 --- a/content/bn/case-studies/vsco/vsco_featured_logo.svg +++ b/content/bn/case-studies/vsco/vsco_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos2 \ No newline at end of file diff --git a/content/bn/case-studies/wikimedia/wikimedia_featured.png b/content/bn/case-studies/wikimedia/wikimedia_featured.png index e69de29bb2..7b1f89ac98 100644 Binary files a/content/bn/case-studies/wikimedia/wikimedia_featured.png and b/content/bn/case-studies/wikimedia/wikimedia_featured.png differ diff --git a/content/bn/case-studies/wikimedia/wikimedia_featured.svg b/content/bn/case-studies/wikimedia/wikimedia_featured.svg index e69de29bb2..5fa786aaa5 100644 --- a/content/bn/case-studies/wikimedia/wikimedia_featured.svg +++ b/content/bn/case-studies/wikimedia/wikimedia_featured.svg @@ -0,0 +1 @@ +kubernetes.io-logos2 \ No newline at end of file diff --git a/content/bn/case-studies/wikimedia/wikimedia_logo.png b/content/bn/case-studies/wikimedia/wikimedia_logo.png index e69de29bb2..3ad5b63034 100644 Binary files a/content/bn/case-studies/wikimedia/wikimedia_logo.png and b/content/bn/case-studies/wikimedia/wikimedia_logo.png differ diff --git a/content/bn/case-studies/wink/wink_featured.png b/content/bn/case-studies/wink/wink_featured.png index e69de29bb2..3c01133bef 100644 Binary files a/content/bn/case-studies/wink/wink_featured.png and b/content/bn/case-studies/wink/wink_featured.png differ diff --git a/content/bn/case-studies/wink/wink_featured.svg b/content/bn/case-studies/wink/wink_featured.svg index e69de29bb2..8168ac2b43 100644 --- a/content/bn/case-studies/wink/wink_featured.svg +++ b/content/bn/case-studies/wink/wink_featured.svg @@ -0,0 +1 @@ +kubernetes.io-logos2 \ No newline at end of file diff --git a/content/bn/case-studies/wink/wink_logo.png b/content/bn/case-studies/wink/wink_logo.png index e69de29bb2..ef2ee30bf3 100644 Binary files a/content/bn/case-studies/wink/wink_logo.png and b/content/bn/case-studies/wink/wink_logo.png differ diff --git a/content/bn/case-studies/woorank/woorank_featured_logo.png b/content/bn/case-studies/woorank/woorank_featured_logo.png index e69de29bb2..f7d6ed300f 100644 Binary files a/content/bn/case-studies/woorank/woorank_featured_logo.png and b/content/bn/case-studies/woorank/woorank_featured_logo.png differ diff --git a/content/bn/case-studies/woorank/woorank_featured_logo.svg b/content/bn/case-studies/woorank/woorank_featured_logo.svg index e69de29bb2..50b64e9a9c 100644 --- a/content/bn/case-studies/woorank/woorank_featured_logo.svg +++ b/content/bn/case-studies/woorank/woorank_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos2 \ No newline at end of file diff --git a/content/bn/case-studies/workiva/workiva_featured_logo.png b/content/bn/case-studies/workiva/workiva_featured_logo.png index e69de29bb2..9998b47104 100644 Binary files a/content/bn/case-studies/workiva/workiva_featured_logo.png and b/content/bn/case-studies/workiva/workiva_featured_logo.png differ diff --git a/content/bn/case-studies/workiva/workiva_featured_logo.svg b/content/bn/case-studies/workiva/workiva_featured_logo.svg index e69de29bb2..0cde714f23 100644 --- a/content/bn/case-studies/workiva/workiva_featured_logo.svg +++ b/content/bn/case-studies/workiva/workiva_featured_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos2 \ No newline at end of file diff --git a/content/bn/case-studies/yahoo-japan/yahooJapan_logo.png b/content/bn/case-studies/yahoo-japan/yahooJapan_logo.png index e69de29bb2..3cbea39598 100644 Binary files a/content/bn/case-studies/yahoo-japan/yahooJapan_logo.png and b/content/bn/case-studies/yahoo-japan/yahooJapan_logo.png differ diff --git a/content/bn/case-studies/yahoo-japan/yahoojapan_featured.svg b/content/bn/case-studies/yahoo-japan/yahoojapan_featured.svg new file mode 100644 index 0000000000..b0baa4a49e --- /dev/null +++ b/content/bn/case-studies/yahoo-japan/yahoojapan_featured.svg @@ -0,0 +1 @@ +kubernetes.io-logos2 \ No newline at end of file diff --git a/content/bn/case-studies/ygrene/ygrene_featured_logo.png b/content/bn/case-studies/ygrene/ygrene_featured_logo.png index e69de29bb2..d0d6911478 100644 Binary files a/content/bn/case-studies/ygrene/ygrene_featured_logo.png and b/content/bn/case-studies/ygrene/ygrene_featured_logo.png differ diff --git a/content/bn/case-studies/ygrene/ygrene_featured_logo.svg b/content/bn/case-studies/ygrene/ygrene_featured_logo.svg index 0e16b95004..0b0ab458fa 100644 --- a/content/bn/case-studies/ygrene/ygrene_featured_logo.svg +++ b/content/bn/case-studies/ygrene/ygrene_featured_logo.svg @@ -1,82 +1 @@ ---- -title: Ygrene Case Study -linkTitle: Ygrene -case_study_styles: true -cid: caseStudies -logo: ygrene_featured_logo.png -featured: true -weight: 48 -quote: > - We had to change some practices and code, and the way things were built, but we were able to get our main systems onto Kubernetes in a month or so, and then into production within two months. That's very fast for a finance company. - -new_case_study_styles: true -heading_background: /images/case-studies/ygrene/banner1.jpg -heading_title_logo: /images/ygrene_logo.png -subheading: > - Ygrene: Using Cloud Native to Bring Security and Scalability to the Finance Industry -case_study_details: - - Company: Ygrene - - Location: Petaluma, Calif. - - Industry: Clean energy financing ---- - -

Challenge

- -

A PACE (Property Assessed Clean Energy) financing company, Ygrene has funded more than $1 billion in loans since 2010. In order to approve and process those loans, "We have lots of data sources that are being aggregated, and we also have lots of systems that need to churn on that data," says Ygrene Development Manager Austin Adams. The company was utilizing massive servers, and "we just reached the limit of being able to scale them vertically. We had a really unstable system that became overwhelmed with requests just for doing background data processing in real time. The performance the users saw was very poor. We needed a solution that wouldn't require us to make huge refactors to the code base." As a finance company, Ygrene also needed to ensure that they were shipping their applications securely.

- -

Solution

- -

Moving from an Engine Yard platform and Amazon Elastic Beanstalk, the Ygrene team embraced cloud native technologies and practices: Kubernetes to help scale out vertically and distribute workloads, Notary to put in build-time controls and get trust on the Docker images being used with third-party dependencies, and Fluentd for "observing every part of our stack," all running on Amazon EC2 Spot.

- -

Impact

- -

Before, deployments typically took three to four hours, and two or three months' worth of work would be deployed at low-traffic times every week or two weeks. Now, they take five minutes for Kubernetes, and an hour for the overall deploy with smoke testing. And "we're able to deploy three or four times a week, with just one week's or two days' worth of work," Adams says. "We're deploying during the work week, in the daytime and without any downtime. We had to ask for business approval to take the systems down, even in the middle of the night, because people could be doing loans. Now we can deploy, ship code, and migrate databases, all without taking the system down. The company gets new features without worrying that some business will be lost or delayed." Additionally, by using the kops project, Ygrene can now run its Kubernetes clusters with AWS EC2 Spot, at a tenth of the previous cost. These cloud native technologies have "changed the game for scalability, observability, and security—we're adding new data sources that are very secure," says Adams. "Without Kubernetes, Notary, and Fluentd, we couldn't tell our investors and team members that we knew what was going on."

- -{{< case-studies/quote author="Austin Adams, Development Manager, Ygrene Energy Fund" >}} -"CNCF projects are helping Ygrene determine the security and observability standards for the entire PACE industry. We're an emerging finance industry, and without these projects, especially Kubernetes, we couldn't be the industry leader that we are today." -{{< /case-studies/quote >}} - -{{< case-studies/lead >}} -In less than a decade, Ygrene has funded more than $1 billion in loans for renewable energy projects. -{{< /case-studies/lead >}} - -

A PACE (Property Assessed Clean Energy) financing company, "We take the equity in a home or a commercial building, and use it to finance property improvements for anything that saves electricity, produces electricity, saves water, or reduces carbon emissions," says Development Manager Austin Adams.

- -

In order to approve those loans, the company processes an enormous amount of underwriting data. "We have tons of different points that we have to validate about the property, about the company, or about the person," Adams says. "So we have lots of data sources that are being aggregated, and we also have lots of systems that need to churn on that data in real time."

- -

By 2017, deployments and scalability had become pain points. The company was utilizing massive servers, and "we just reached the limit of being able to scale them vertically," he says. Migrating to AWS Elastic Beanstalk didn't solve the problem: "The Scala services needed a lot of data from the main Ruby on Rails services and from different vendors, so they were asking for information from our Ruby services at a rate that those services couldn't handle. We had lots of configuration misses with Elastic Beanstalk as well. It just came to a head, and we realized we had a really unstable system."

- -{{< case-studies/quote - image="/images/case-studies/ygrene/banner3.jpg" - author="Austin Adams, Development Manager, Ygrene Energy Fund" ->}} -"CNCF has been an amazing incubator for so many projects. Now we look at its webpage regularly to find out if there are any new, awesome, high-quality projects we can implement into our stack. It's actually become a hub for us for knowing what software we need to be looking at to make our systems more secure or more scalable." -{{< /case-studies/quote >}} - -

Adams along with the rest of the team set out to find a solution that would be transformational, but "wouldn't require us to make huge refactors to the code base," he says. And as a finance company, Ygrene needed security as much as scalability. They found the answer by embracing cloud native technologies: Kubernetes to help scale out vertically and distribute workloads, Notary to achieve reliable security at every level, and Fluentd for observability. "Kubernetes was where the community was going, and we wanted to be future proof," says Adams.

- -

With Kubernetes, the team was able to quickly containerize the Ygrene application with Docker. "We had to change some practices and code, and the way things were built," Adams says, "but we were able to get our main systems onto Kubernetes in a month or so, and then into production within two months. That's very fast for a finance company."

- -

How? Cloud native has "changed the game for scalability, observability, and security—we're adding new data sources that are very secure," says Adams. "Without Kubernetes, Notary, and Fluentd, we couldn't tell our investors and team members that we knew what was going on."

- -

Notary, in particular, "has been a godsend," says Adams. "We need to know that our attack surface on third-party dependencies is low, or at least managed. We use it as a trust system and we also use it as a separation, so production images are signed by Notary, but some development images we don't sign. That is to ensure that they can't get into the production cluster. We've been using it in the test cluster to feel more secure about our builds."

- -{{< case-studies/quote image="/images/case-studies/ygrene/banner4.jpg">}} -"We had to change some practices and code, and the way things were built," Adams says, "but we were able to get our main systems onto Kubernetes in a month or so, and then into production within two months. That's very fast for a finance company." -{{< /case-studies/quote >}} - -

By using the kops project, Ygrene was able to move from Elastic Beanstalk to running its Kubernetes clusters on AWS EC2 Spot, at a tenth of the previous cost. "In order to scale before, we would need to up our instance sizes, incurring high cost for low value," says Adams. "Now with Kubernetes and kops, we are able to scale horizontally on Spot with multiple instance groups."

- -

That also helped them mitigate the risk that comes with running in the public cloud. "We figured out, essentially, that if we're able to select instance classes using EC2 Spot that had an extremely low likelihood of interruption and zero history of interruption, and we're willing to pay a price high enough, that we could virtually get the same guarantee using Kubernetes because we have enough nodes," says Software Engineer Zach Arnold, who led the migration to Kubernetes. "Now that we've re-architected these pieces of the application to not live on the same server, we can push out to many different servers and have a more stable deployment."

- -

As a result, the team can now ship code any time of day. "That was risky because it could bring down your whole loan management software with it," says Arnold. "But we now can deploy safely and securely during the day."

- -{{< case-studies/quote >}} -"In order to scale before, we would need to up our instance sizes, incurring high cost for low value," says Adams. "Now with Kubernetes and kops, we are able to scale horizontally on Spot with multiple instance groups." -{{< /case-studies/quote >}} - -

Before, deployments typically took three to four hours, and two or three months' worth of work would be deployed at low-traffic times every week or two weeks. Now, they take five minutes for Kubernetes, and an hour for an overall deploy with smoke testing. And "we're able to deploy three or four times a week, with just one week's or two days' worth of work," Adams says. "We're deploying during the work week, in the daytime and without any downtime. We had to ask for business approval to take the systems down for 30 minutes to an hour, even in the middle of the night, because people could be doing loans. Now we can deploy, ship code, and migrate databases, all without taking the system down. The company gets new features without worrying that some business will be lost or delayed."

- -

Cloud native also affected how Ygrene's 50+ developers and contractors work. Adams and Arnold spent considerable time "teaching people to think distributed out of the box," says Arnold. "We ended up picking what we call the Four S's of Shipping: safely, securely, stably, and speedily." (For more on the security piece of it, see their article on their "continuous hacking" strategy.) As for the engineers, says Adams, "they have been able to advance as their software has advanced. I think that at the end of the day, the developers feel better about what they're doing, and they also feel more connected to the modern software development community."

- -

Looking ahead, Adams is excited to explore more CNCF projects, including SPIFFE and SPIRE. "CNCF has been an amazing incubator for so many projects," he says. "Now we look at its webpage regularly to find out if there are any new, awesome, high-quality projects we can implement into our stack. It's actually become a hub for us for knowing what software we need to be looking at to make our systems more secure or more scalable."

\ No newline at end of file +kubernetes.io-logos2 \ No newline at end of file diff --git a/content/bn/case-studies/zalando/zalando_feature_logo.png b/content/bn/case-studies/zalando/zalando_feature_logo.png index e69de29bb2..ba6251050d 100644 Binary files a/content/bn/case-studies/zalando/zalando_feature_logo.png and b/content/bn/case-studies/zalando/zalando_feature_logo.png differ diff --git a/content/bn/case-studies/zalando/zalando_feature_logo.svg b/content/bn/case-studies/zalando/zalando_feature_logo.svg index e69de29bb2..875d10c030 100644 --- a/content/bn/case-studies/zalando/zalando_feature_logo.svg +++ b/content/bn/case-studies/zalando/zalando_feature_logo.svg @@ -0,0 +1 @@ +kubernetes.io-logos2 \ No newline at end of file diff --git a/content/bn/community/code-of-conduct.md b/content/bn/community/code-of-conduct.md index 199a9bf5e9..fb6ddecc17 100644 --- a/content/bn/community/code-of-conduct.md +++ b/content/bn/community/code-of-conduct.md @@ -7,7 +7,7 @@ cid: code-of-conduct _কুবারনেটিস অনুসরণ করে [CNCF কোড অফ কন্ডাক্ট](https://github.com/cncf/foundation/blob/main/code-of-conduct.md)। CNCF CoC এর পাঠ্যটি নীচে প্রতিলিপি করা হয়েছে, -[commit 71412bb02](https://github.com/cncf/foundation/blob/71412bb029090d42ecbeadb39374a337bfb48a9c/code-of-conduct.md) হিসাবে_ +[commit 71412bb02](https://github.com/cncf/foundation/blob/71412bb029090d42ecbeadb39374a337bfb48a9c/code-of-conduct-languages/bn.md) হিসাবে_
{{< include "static/cncf-code-of-conduct.md" >}} diff --git a/content/bn/community/static/cncf-code-of-conduct.md b/content/bn/community/static/cncf-code-of-conduct.md new file mode 100644 index 0000000000..87ccc3f7b4 --- /dev/null +++ b/content/bn/community/static/cncf-code-of-conduct.md @@ -0,0 +1,85 @@ + +## CNCF কমিউনিটি কোড অফ কন্ডাক্ট (CNCF Community Code of Conduct) v1.3 + +### কমিউনিটি কোড অফ কন্ডাক্ট (Contributor Code of Conduct) + +CNCF কমিউনিটির অবদানকারী, রক্ষণাবেক্ষণকারী এবং অংশগ্রহণকারী হিসাবে, এবং একটি উন্মুক্ত এবং একটি উন্মুক্ত +এবং স্বাগতম জানানো কমিউনিটিতে গড়ে তোলার স্বার্থে, যে সমস্ত লোক অংশগ্রহণ করে বা অবদান রেখে সমস্যাগুলি রিপোর্ট করা, +ফিচারগুলো অনুরোধ পোস্ট করা, ডকুমেন্টেশন আপডেট করা, পুল অনুরোধ বা প্যাচ জমা দেওয়া, কনফারেন্স বা ইভেন্টে যোগদান করা, +বা অন্যান্য কমিউনিটি বা প্রকল্পের কার্যকলাপে জড়িত থাকার মাধ্যমে তাদের সকলকে আমরা সম্মান করার অঙ্গীকার করি। + +আমরা বয়স, শরীরের আকার, বর্ণ, অক্ষমতা, জাতিগততা, অভিজ্ঞতার স্তর, পারিবারিক অবস্থা, লিঙ্গ, লিঙ্গ পরিচয় এবং অভিব্যক্তি, বৈবাহিক অবস্থা, সামরিক বা প্রবীণ অবস্থা, জাতীয়তা, ব্যক্তিগত চেহারা, জাতি, ধর্ম, যৌন দৃষ্টিভঙ্গি, আর্থ-সামাজিক অবস্থা, উপজাতি বা বৈচিত্র্যের অন্য কোনও মাত্রা নির্বিশেষে প্রত্যেকের জন্য CNCF কমিউনিটিয়ের অংশগ্রহণকে একটি হয়রানি-মুক্ত অভিজ্ঞতা তৈরি করতে প্রতিশ্রুতিবদ্ধ। + +## সুযোগ (Scope) + +এই আচরণবিধি প্রযোজ্য: +* প্রকল্প এবং কমিউনিটির স্থানগুলির মধ্যে, +* অন্যান্য স্থানগুলিতে যখন কোনও পৃথক CNCF কমিউনিটির অংশগ্রহণকারীর কথা বা ক্রিয়াগুলি কোনও CNCF প্রকল্প, CNCF কমিউনিটি বা অন্য কোনও CNCF কমিউনিটির অংশগ্রহণকারীর দিকে পরিচালিত হয় + +### CNCF ইভেন্টস (CNCF Events) + +পেশাদার ইভেন্ট কর্মীদের সাথে লিনাক্স ফাউন্ডেশন দ্বারা উত্পাদিত CNCF ইভেন্টগুলি ইভেন্ট পৃষ্ঠায় উপলব্ধ লিনাক্স ফাউন্ডেশন [ইভেন্টস কোড অফ কন্ডাক্ট] () দ্বারা পরিচালিত হয়। এটি CNCF আচরণবিধির সাথে একত্রে ব্যবহার করার জন্য ডিজাইন করা হয়েছে। + +## আমাদের মান (Our Standards) + +CNCF কমিউনিটি উন্মুক্ত, অন্তর্ভুক্তিমূলক এবং শ্রদ্ধাশীল। আমাদের কমিউনিটির প্রতিটি সদস্যের তাদের পরিচয়কে সম্মান করার অধিকার রয়েছে। + +ইতিবাচক পরিবেশে অবদান রাখে এমন আচরণের উদাহরণগুলির মধ্যে রয়েছে তবে সীমাবদ্ধ নয়: + +* অন্যান্য মানুষের প্রতি সহানুভূতি এবং দয়া প্রদর্শন করা +* ভিন্ন মতামত, দৃষ্টিভঙ্গি এবং অভিজ্ঞতার প্রতি শ্রদ্ধাশীল হওয়া +* গঠনমূলক প্রতিক্রিয়া দেওয়া এবং সদয়ভাবে গ্রহণ করা +* দায় স্বীকার করা এবং আমাদের ভুলের দ্বারা ক্ষতিগ্রস্থদের কাছে ক্ষমা চাওয়া, + এবং অভিজ্ঞতা থেকে শিখা +* যা কেবল ব্যক্তি হিসাবে আমাদের জন্য নয়, সামগ্রিক কমিউনিটির জন্য সর্বোত্তম সেদিকে + মনোনিবেশ করা +* স্বাগত এবং অন্তর্ভুক্তিমূলক ভাষা ব্যবহার করা + +অগ্রহণযোগ্য আচরণের উদাহরণগুলির মধ্যে রয়েছে তবে সীমাবদ্ধ নয়: + +* যৌন ভাষা বা চিত্রাবলীর ব্যবহার +* ট্রলিং, অপমানজনক বা অবমাননাকর মন্তব্য এবং ব্যক্তিগত বা রাজনৈতিক আক্রমণ +* যে কোনও রূপে পাবলিক বা প্রাইভেট হয়রানি +* অন্যদের ব্যক্তিগত তথ্য প্রকাশ, যেমন তাদের স্পষ্ট অনুমতি ছাড়া + প্রকৃত বা ইমেল ঠিকানা প্রকাশ করা +* সহিংসতা, সহিংসতার হুমকি দেওয়া বা অন্যকে হিংসাত্মক আচরণে জড়িত হতে উত্সাহিত করা +* কারও সম্মতি ছাড়াই অনুসরণ করা বা অনুসরণ করা +* অবাঞ্ছিত শারীরিক যোগাযোগ +* অবাঞ্ছিত যৌন বা রোমান্টিক মনোযোগ বা অগ্রগতি +* অন্যান্য আচরণ যা পেশাদার পরিবেশে যুক্তিসঙ্গতভাবে অনুপযুক্ত বলে + বিবেচিত হতে পারে + +নিম্নলিখিত আচরণগুলিও নিষিদ্ধ: + +* আচরণবিধির তদন্তের সাথে সম্পর্কিত জেনেশুনে মিথ্যা বা বিভ্রান্তিকর তথ্য সরবরাহ করা বা অন্যথায় ইচ্ছাকৃতভাবে তদন্তে হস্তক্ষেপ করা। +* কোনও ব্যক্তির বিরুদ্ধে প্রতিশোধ নেওয়া কারণ তারা কোনও ঘটনা রিপোর্ট করেছে বা সাক্ষী হিসাবে কোনও ঘটনা সম্পর্কে তথ্য সরবরাহ করেছে। + +প্রকল্প রক্ষণাবেক্ষণকারীদের কমেন্ট, কমিট, কোড, উইকি এডিট, ইস্যু এবং অন্যান্য অবদান যা এই আচরণবিধির সাথে সামঞ্জস্যপূর্ণ নয় তা অপসারণ, এডিট বা প্রত্যাখ্যান করার অধিকার এবং দায়িত্ব রয়েছে। +এই আচরণবিধি গ্রহণ করে, প্রকল্প রক্ষণাবেক্ষণকারীরা একটি CNCF প্রকল্প পরিচালনার প্রতিটি ক্ষেত্রে এই নীতিগুলি ন্যায্য এবং ধারাবাহিকভাবে প্রয়োগ +করার জন্য প্রতিশ্রুতিবদ্ধ। +প্রকল্প রক্ষণাবেক্ষণকারীরা যারা আচরণবিধি অনুসরণ বা প্রয়োগ করে না তাদের প্রকল্প দল থেকে অস্থায়ীভাবে বা স্থায়ীভাবে অপসারণ করা যেতে পারে। + +## প্রতিবেদন (Reporting) + +কুবারনেটিস কমিউনিটির মধ্যে ঘটে যাওয়া ঘটনাগুলির জন্য, মাধ্যমে [কুবারনেটিস কোড অফ কন্ডাক্ট কমিটি](https://git.k8s.io/community/committee-code-of-conduct) এর সাথে যোগাযোগ করুন। আপনি তিন কার্যদিবসের মধ্যে একটি প্রতিক্রিয়া আশা করতে পারেন। + +অন্যান্য প্রকল্পের জন্য, বা প্রকল্প-অজ্ঞেয়বাদী বা একাধিক CNCF প্রকল্পকে প্রভাবিত করে এমন ঘটনাগুলির জন্য, দয়া করে এর মাধ্যমে [CNCF কোড অফ কন্ডাক্ট কমিটি](https://www.cncf.io/conduct/committee/) এর সাথে যোগাযোগ করুন। বিকল্পভাবে, আপনি আপনার প্রতিবেদন জমা দেওয়ার জন্য [CNCF কোড অফ কন্ডাক্ট কমিটি](https://www.cncf.io/conduct/committee/) এর যে কোনও স্বতন্ত্র সদস্যের সাথে যোগাযোগ করতে পারেন। বেনামে কীভাবে রিপোর্ট জমা দিতে হয়, সেই সহ কীভাবে রিপোর্ট জমা দিতে হয়, সেই বিষয়ে আরও বিস্তারিত নির্দেশাবলীর জন্য অনুগ্রহ করে আমাদের [ইনসিডেন্ট রেজোলিউশন প্রসিডিউরস](https://github.com/cncf/foundation/blob/main/code-of-conduct/coc-incident-resolution-procedures.md) দেখুন। আপনি তিন কার্যদিবসের মধ্যে একটি প্রতিক্রিয়া আশা করতে পারেন। + +লিনাক্স ফাউন্ডেশন দ্বারা উত্পাদিত CNCF ইভেন্টে ঘটে যাওয়া ঘটনাগুলির জন্য, দয়া করে সাথে যোগাযোগ করুন। + +## প্রয়োগ (Enforcement) + +একটি রিপোর্ট করা ঘটনার পর্যালোচনা ও তদন্তের পরে, সিওসি প্রতিক্রিয়া দল যার এখতিয়ার রয়েছে তারা এই আচরণবিধি এবং এর সম্পর্কিত ডকুমেন্টেশনের ভিত্তিতে কোন পদক্ষেপটি উপযুক্ত তা নির্ধারণ করবে। + +কোন আচরণবিধির ঘটনাগুলি প্রকল্প নেতৃত্ব দ্বারা পরিচালিত হয়, কোন ঘটনাগুলি CNCF কোড অফ কন্ডাক্ট কমিটি দ্বারা পরিচালিত হয় এবং কোন ঘটনাগুলি লিনাক্স ফাউন্ডেশন (এর ইভেন্ট টিম সহ) দ্বারা পরিচালিত হয় সে সম্পর্কে তথ্যের জন্য আমাদের [এখতিয়ার নীতি](https://github.com/cncf/foundation/blob/main/code-of-conduct/coc-committee-jurisdiction-policy.md) দেখুন। + +## সংশোধনী (Amendments) + +CNCF সনদের সাথে সামঞ্জস্যপূর্ণ, এই আচরণবিধিতে যে কোনও উল্লেখযোগ্য পরিবর্তন অবশ্যই প্রযুক্তিগত তদারকি কমিটি দ্বারা অনুমোদিত হতে হবে। + +## স্বীকারোক্তি (Acknowledgements) + +এই আচরণবিধিটি অবদানকারী চুক্তি থেকে অভিযোজিত +(http://contributor-covenant.org), সংস্করণ 2.0 এখানে উপলব্ধ +http://contributor-covenant.org/version/2/0/code_of_conduct/ diff --git a/content/bn/docs/concepts/_index.md b/content/bn/docs/concepts/_index.md index ac101b6a41..29cff2cc8e 100644 --- a/content/bn/docs/concepts/_index.md +++ b/content/bn/docs/concepts/_index.md @@ -10,4 +10,5 @@ weight: 40 ধারণা বিভাগটি আপনাকে কুবারনেটিস সিস্টেমের অংশগুলো এবং কুবারনেটিস আপনার {{< glossary_tooltip text="ক্লাস্টারের" term_id="cluster" length="all" >}} প্রতিনিধিত্ব করার জন্য যে অ্যাবস্ট্রাকশনগুলো ব্যবহার করে সেগুলো সম্পর্কে শিখতে সাহায্য করে এবং কুবারনেটিস কীভাবে কাজ করে সে সম্পর্কে আপনাকে গভীরভাবে বুঝতে সাহায্য করে । + diff --git a/content/bn/docs/concepts/architecture/_index.md b/content/bn/docs/concepts/architecture/_index.md index 5fcba1b640..221d7aeacf 100644 --- a/content/bn/docs/concepts/architecture/_index.md +++ b/content/bn/docs/concepts/architecture/_index.md @@ -1,8 +1,8 @@ --- -title: "ক্লাস্টার স্থাপত্য(Cluster Architecture)" +title: "ক্লাস্টার আর্কিটেকচার" weight: 30 description: > - কুবারনেটিসের পিছনে স্থাপত্যের ধারণা । + কুবারনেটিসের পিছনে আর্কিটেকচারের ধারণা । --- -{{< figure src="/images/docs/kubernetes-cluster-architecture.svg" alt="কুবারনেটিসের উপাদান" caption="কুবারনেটিস ক্লাস্টার স্থাপত্য" class="diagram-large" >}} +{{< figure src="/images/docs/kubernetes-cluster-architecture.svg" alt="কুবারনেটিসের উপাদান" caption="কুবারনেটিস ক্লাস্টার আর্কিটেকচার" class="diagram-large" >}} diff --git a/content/bn/docs/concepts/containers/_index.md b/content/bn/docs/concepts/containers/_index.md index 66cbdc07dc..7646cf5a40 100644 --- a/content/bn/docs/concepts/containers/_index.md +++ b/content/bn/docs/concepts/containers/_index.md @@ -15,7 +15,7 @@ card: সেখানই আপনি একই আচরণ পাবেন। কন্টেইনার অন্তর্নিহিত হোস্ট পরিকাঠামো থেকে অ্যাপ্লিকেশনগুলোকে দ্বিগুণ করে৷ -এটি বিভিন্ন ক্লাউড বা ওএস পরিবেশে স্থাপনাকে সহজ করে তোলে। +এটি বিভিন্ন ক্লাউড বা ওএস পরিবেশে ডিপ্লয়মেন্টকে সহজ করে তোলে। একটি কুবারনেটিস ক্লাস্টারের প্রতিটি {{< glossary_tooltip text="নোড" term_id="node" >}} , সেই নোডের জন্য নির্ধারিত [পড](/bn/docs/concepts/workloads/pods/) diff --git a/content/bn/docs/concepts/extend-kubernetes/control-plane.png b/content/bn/docs/concepts/extend-kubernetes/control-plane.png new file mode 100644 index 0000000000..fa61599e94 Binary files /dev/null and b/content/bn/docs/concepts/extend-kubernetes/control-plane.png differ diff --git a/content/bn/docs/concepts/overview/_index.md b/content/bn/docs/concepts/overview/_index.md index a6311e04a0..2aab2102d5 100644 --- a/content/bn/docs/concepts/overview/_index.md +++ b/content/bn/docs/concepts/overview/_index.md @@ -1,7 +1,7 @@ --- title: "ওভারভিউ" description: > - কুবারনেটিস হল একটি পোর্টেবল, বর্ধনশীল, ওপেন সোর্স প্ল্যাটফর্ম যা কনটেইনারাইজড ওয়ার্কলোড এবং পরিষেবাগুলি পরিচালনা করার জন্য, ঘোষণামূলক কনফিগারেশন এবং অটোমেশন উভয়কেই সহজতর করে। এটির একটি বড়, দ্রুত বর্ধনশীল ইকোসিস্টেম রয়েছে। কুবারনেটিস পরিষেবাগুলি, সমর্থন, এবং সরঞ্জাম ব্যাপকভাবে সহজলভ্য। + কুবারনেটিস হল একটি পোর্টেবল, এক্সটেনসিবল, ওপেন সোর্স প্ল্যাটফর্ম যা কন্টেইনারাইজড ওয়ার্কলোড এবং সার্ভিসগুলি পরিচালনা করার জন্য, ঘোষণামূলক কনফিগারেশন এবং অটোমেশন উভয়কেই সহজতর করে। এটির একটি বড়, দ্রুত বর্ধনশীল ইকোসিস্টেম রয়েছে। কুবারনেটিস সার্ভিসগুলি, সাপোর্ট, এবং টুলস ব্যাপকভাবে সহজলভ্য। content_type: concept weight: 20 card: @@ -33,9 +33,9 @@ no_list: true চলুন অতিতে যেয়ে এক নজরে দেখে নেওয়া যাক কেন কুবারনেটিস এতটা কাজে লাগে। -![স্থাপনার বিবর্তন](/images/docs/Container_Evolution.svg) +![ডিপ্লয়মেন্টের বিবর্তন](/images/docs/Container_Evolution.svg) -**ঐতিহ্যবাহী স্থাপনার যুগ:** +**ঐতিহ্যবাহী ডিপ্লয়মেন্টের যুগ:** প্রথম দিকে, সংস্থাগুলি ফিজিক্যাল সার্ভারগুলিতে অ্যাপ্লিকেশন চালাত। একটি ফিজিক্যাল সার্ভারে অ্যাপ্লিকেশনের জন্য রিসোর্স সীমানা নির্ধারণ করার কোন উপায় ছিল না, এবং এর ফলে রিসোর্স বরাদ্দ সমস্যা হয়েছে। উদাহরণস্বরূপ, যদি একটি ফিজিক্যাল সার্ভারে একাধিক অ্যাপ্লিকেশান চালিত হয়, @@ -44,7 +44,7 @@ no_list: true কিন্তু সম্পদের অব্যবহৃত হওয়ার কারণে এটির মাপকাঠিি ঠিক করা যায়নি এবং অনেকগুলি ফিজিক্যাল সার্ভার বজায় রাখা সংস্থাগুলির জন্য ব্যয়বহুল ছিল। -**ভার্চুয়ালাইজড স্থাপনার যুগ:** একটি সমাধান হিসাবে, ভার্চুয়ালাইজেশন চালু করা হয়েছিল। এটি আপনাকে +**ভার্চুয়ালাইজড ডিপ্লয়মেন্টর যুগ:** একটি সমাধান হিসাবে, ভার্চুয়ালাইজেশন চালু করা হয়েছিল। এটি আপনাকে একটি একক ফিজিক্যাল সার্ভারের CPU-তে একাধিক ভার্চুয়াল মেশিন (VMs) চালানো যায়। ভার্চুয়ালাইজেশন অ্যাপ্লিকেশনগুলিকে VM-এর মধ্যে বিচ্ছিন্ন করার অনুমতি দেয় এবং একটি স্তরের নিরাপত্তা প্রদান করে কারণ একটি অ্যাপ্লিকেশনের তথ্য অন্য অ্যাপ্লিকেশন দ্বারা অবাধে অ্যাক্সেস করা যায় না। @@ -66,10 +66,10 @@ OS ডিস্ট্রিবিউশন জুড়ে বহনযোগ্ কন্টেইনারগুলো জনপ্রিয় হয়ে উঠেছে কারণ তারা অতিরিক্ত সুবিধা প্রদান করে, যেমন: -* এজাইল (Agile) অ্যাপ্লিকেশন তৈরি এবং স্থাপনায়: ভিএম ইমেজ (VM Image) ব্যবহারের তুলনায় কন্টেইনার ইমেজ (Container Image) +* এজাইল (Agile) অ্যাপ্লিকেশন তৈরি এবং ডিপ্লয়মেন্টয়: ভিএম ইমেজ (VM Image) ব্যবহারের তুলনায় কন্টেইনার ইমেজ (Container Image) তৈরির সহজতা এবং দক্ষতা বেশি। -* ক্রমাগত বিকাশ, একীকরণ এবং স্থাপনা: নির্ভরযোগ্য এবং ঘন ঘন - কন্টেইনার ইমেজ তৈরি এবং স্থাপনার জন্য প্রদান করে দ্রুত এবং +* ক্রমাগত বিকাশ, একীকরণ এবং ডিপ্লয়মেন্ট: নির্ভরযোগ্য এবং ঘন ঘন + কন্টেইনার ইমেজ তৈরি এবং ডিপ্লয়মেন্টের জন্য প্রদান করে দ্রুত এবং দক্ষ রোলব্যাকের (ইমেজ অপরিবর্তনীয়তার কারণে) সাথে । * ডেভ (Dev) এবং অপস (Ops) উদ্বেগের বিচ্ছেদ: বিল্ড/রিলিজের সময়ে অ্যাপ্লিকেশন কন্টেইনার ইমেজ তৈরি করে ডিপ্লয়মেন্টের সময়ের তুলনায়, @@ -97,22 +97,22 @@ OS ডিস্ট্রিবিউশন জুড়ে বহনযোগ্ এভাবেই কুবারনেটস উদ্ধারে আসে!। কুবারনেটিস একটি কাঠামো প্রদান করে আপনাকে সিস্টেমগুলিকে স্থিতিস্থাপকভাবে চালানোর জন্য । এটি আপনার অ্যাপ্লিকেশনের জন্য স্কেলিং এবং ফেইলওভারের যত্ন নেয়, -স্থাপনার নিদর্শন প্রদান করে এবং আরও অনেক কিছু করে। উদাহরণস্বরূপ, কুবারনেটিস -সহজেই আপনার সিস্টেমের জন্য একটি ক্যানারি স্থাপনা পরিচালনা করতে পারে। +ডিপ্লয়মেন্টের নিদর্শন প্রদান করে এবং আরও অনেক কিছু করে। উদাহরণস্বরূপ, কুবারনেটিস +সহজেই আপনার সিস্টেমের জন্য একটি ক্যানারি ডিপ্লয়মেন্ট পরিচালনা করতে পারে। কুবারনেটিস আপনাকে সরবরাহ করে: * **পরিষেবা আবিষ্কার এবং লোড ব্যালেন্সিং** কুবারনেটিস ডিএনএস নাম ব্যবহার করে বা তাদের নিজস্ব আইপি ঠিকানা ব্যবহার করে একটি ধারক প্রকাশ করতে পারে। একটি কন্টেইনারে ট্রাফিক বেশি হলে, কুবারনেটিস লোড ব্যালেন্স এবং নেটওয়ার্ক ট্র্যাফিক - বিতরণ করতে সক্ষম হয় যাতে স্থাপনা স্থিতিশীল থাকে। + বিতরণ করতে সক্ষম হয় যাতে ডিপ্লয়মেন্ট স্থিতিশীল থাকে। * **স্টোরেজ অর্কেস্ট্রেশন** কুবারনেটিস আপনাকে স্বয়ংক্রিয়ভাবে আপনার পছন্দের একটি স্টোরেজ সিস্টেম মাউন্ট করার অনুমতি দেয়, যেমন স্থানীয় স্টোরেজ, পাবলিক ক্লাউড প্রদানকারী এবং আরও অনেক কিছু। * **স্বয়ংক্রিয় রোলআউট এবং রোলব্যাক** আপনি কুবারনেটিস ব্যবহার করে আপনার স্থাপন করা কন্টেইনার জন্য পছন্দসই অবস্থা বর্ণনা করতে পারেন এবং এটি একটি নিয়ন্ত্রিত হারে প্রকৃত অবস্থাকে পছন্দসই অবস্থায় পরিবর্তন করতে পারে। - উদাহরণস্বরূপ, আপনি কুবারনেটিস দিয়ে স্বয়ংক্রিয়ভাবে আপনার স্থাপনার জন্য নতুন কন্টেইনার তৈরি, + উদাহরণস্বরূপ, আপনি কুবারনেটিস দিয়ে স্বয়ংক্রিয়ভাবে আপনার ডিপ্লয়মেন্টের জন্য নতুন কন্টেইনার তৈরি, বিদ্যমান কন্টেইনারগুলি সরাতে এবং নতুন কন্টেইনারে তাদের সমস্ত রিসোর্স গ্রহণ করতে পারেন। * **স্বয়ংক্রিয় বিন প্যাকিং** আপনি কুবারনেটিসকে নোডের একটি ক্লাস্টার প্রদান করেন যা এটি কন্টেইনারাইজড কাজ চালাতে ব্যবহার করতে পারে। @@ -140,7 +140,7 @@ OS ডিস্ট্রিবিউশন জুড়ে বহনযোগ্ কুবারনেটিস একটি ঐতিহ্যগত, সর্ব-অন্তর্ভুক্ত PaaS (পরিষেবা হিসাবে প্ল্যাটফর্ম) সিস্টেম নয়। যেহেতু Kubernetes হার্ডওয়্যার স্তরের পরিবর্তে কন্টেইনার স্তরে কাজ করে, তাই এটি PaaS অফারগুলির জন্য সাধারণভাবে কিছু প্রযোজ্য বৈশিষ্ট্য প্রদান করে, যেমন -স্থাপনা, স্কেলিং, লোড ব্যালেন্সিং, এবং ব্যবহারকারীদের তাদের লগিং, পর্যবেক্ষণ +ডিপ্লয়মেন্ট, স্কেলিং, লোড ব্যালেন্সিং, এবং ব্যবহারকারীদের তাদের লগিং, পর্যবেক্ষণ এবং সতর্কতা সমাধানগুলিকে একীভূত করতে দেয়৷ যাইহোক, কুবারনেটিস একচেটিয়া নয়, এবং এই ডিফল্ট সমাধান ঐচ্ছিক এবং প্লাগযোগ্য। কুবারনেটিস বিকাশকারী প্ল্যাটফর্ম তৈরির জন্য বিল্ডিং ব্লক সরবরাহ করে, কিন্তু যেখানে এটি গুরুত্বপূর্ণ সেখানে ব্যবহারকারীর পছন্দ এবং নমনীয়তা সংরক্ষণ করে। diff --git a/content/bn/docs/concepts/services-networking/_index.md b/content/bn/docs/concepts/services-networking/_index.md index 503f22b729..ebb1e3e374 100644 --- a/content/bn/docs/concepts/services-networking/_index.md +++ b/content/bn/docs/concepts/services-networking/_index.md @@ -1,5 +1,5 @@ --- -title: "পরিষেবা, লোড ব্যালেন্সিং এবং নেটওয়ার্কিং" +title: "সার্ভিস, লোড ব্যালেন্সিং এবং নেটওয়ার্কিং" weight: 60 description: > কুবারনেটিসে নেটওয়ার্কিংয়ের পিছনে থাকা ধারণা এবং রিসোর্স। @@ -11,7 +11,7 @@ description: > এর অর্থ হলো আপনাকে `পডের` মধ্যে স্পষ্টভাবে লিঙ্ক তৈরি করার দরকার নেই এবং পোর্টগুলো হোস্ট করার জন্য আপনাকে ম্যাপিং কন্টেইনার পোর্টগুলোর সাথে মোকাবিলা করতে হবে না। এটি একটি পরিষ্কার, পিছনের-সামঞ্জস্যপূর্ণ মডেল (backwards-compatible model) তৈরি করে -যেখানে পোর্ট বরাদ্দকরণ, নামকরণ, পরিষেবা আবিষ্কার (service discovery), [লোড ব্যালেন্সিং](/bn/docs/concepts/services-networking/ingress/#load-balancing), অ্যাপ্লিকেশন কনফিগারেশন এবং মাইগ্রেশনের +যেখানে পোর্ট বরাদ্দকরণ, নামকরণ, সার্ভিস আবিষ্কার (service discovery), [লোড ব্যালেন্সিং](/bn/docs/concepts/services-networking/ingress/#load-balancing), অ্যাপ্লিকেশন কনফিগারেশন এবং মাইগ্রেশনের দৃষ্টিকোণ থেকে `পডগুলোকে` অনেকটা ভিএম (Virtual Machine) বা ফিজিক্যাল হোস্টের মতোই বিবেচনা করা যেতে পারে। @@ -49,17 +49,17 @@ description: > কুবারনেটিস নেটওয়ার্কিং চারটি উদ্বেগের সমাধান করে: - লুপব্যাকের মাধ্যমে একটি পডের মধ্যে কন্টেইনার [যোগাযোগের জন্য নেটওয়ার্কিং ব্যবহার করে](/bn/docs/concepts/services-networking/dns-pod-service/) । - ক্লাস্টার নেটওয়ার্কিং বিভিন্ন পডের মধ্যে যোগাযোগ প্রদান করে। -- [পরিষেবা](/bn/docs/concepts/services-networking/service/) API আপনাকে আপনার ক্লাস্টারের +- [সার্ভিস](/bn/docs/concepts/services-networking/service/) API আপনাকে আপনার ক্লাস্টারের বাইরে থেকে পৌঁছানোর জন্য [পডসে চলমান একটি অ্যাপ্লিকেশন প্রকাশ](/bn/docs/tutorials/services/connect-applications-service/) করতে দেয় । - [ইনগ্রেস](/bn/docs/concepts/services-networking/ingress/) বিশেষত HTTP অ্যাপ্লিকেশন, ওয়েবসাইট এবং এপিআই প্রকাশ করার জন্য অতিরিক্ত কার্যকারিতা প্রদান করে। - [গেটওয়ে API](/bn/docs/concepts/services-networking/gateway/) হলো একটি {{}} - যেটি মডেলিং পরিষেবা নেটওয়ার্কিংয়ের জন্য API ধরণের একটি অভিব্যক্তিপূর্ণ (expressive), এক্সটেনসিবল, এবং ভূমিকা-ভিত্তিক পরিবার প্রদান করে। -- এছাড়া আপনি [শুধুমাত্র আপনার ক্লাস্টারের মধ্যে ব্যবহারের জন্য পরিষেবাগুলো প্রকাশ করতে](/bn/docs/concepts/services-networking/service-traffic-policy/) - পরিষেবাগুলো ব্যবহার করতে পারেন । + যেটি মডেলিং সার্ভিস নেটওয়ার্কিংয়ের জন্য API ধরণের একটি অভিব্যক্তিপূর্ণ (expressive), এক্সটেনসিবল, এবং ভূমিকা-ভিত্তিক পরিবার প্রদান করে। +- এছাড়া আপনি [শুধুমাত্র আপনার ক্লাস্টারের মধ্যে ব্যবহারের জন্য সার্ভিসগুলো প্রকাশ করতে](/bn/docs/concepts/services-networking/service-traffic-policy/) + সার্ভিসগুলো ব্যবহার করতে পারেন । [কানেক্টিং অ্যাপ্লিকেশানস উইথ সার্ভিস](/bn/docs/tutorials/services/connect-applications-service/) টিউটোরিয়াল আপনাকে একটি হ্যান্ডস-অন উদাহরণ সহ পরিষেবা এবং কুবারনেটিস নেটওয়ার্কিং সম্পর্কে শিখতে দেয়। [ক্লাস্টার নেটওয়ার্কিং](/bn/docs/concepts/cluster-administration/networking/) ব্যাখ্যা করে -কিভাবে আপনার ক্লাস্টারের জন্য নেটওয়ার্কিং সেট আপ করতে হয় এবং এর সাথে জড়িত প্রযুক্তিগুলোর একটি ওভারভিউ প্রদান করে। \ No newline at end of file +কিভাবে আপনার ক্লাস্টারের জন্য নেটওয়ার্কিং সেট আপ করতে হয় এবং এর সাথে জড়িত প্রযুক্তিগুলোর একটি ওভারভিউ প্রদান করে। diff --git a/content/bn/docs/concepts/workloads/_index.md b/content/bn/docs/concepts/workloads/_index.md new file mode 100644 index 0000000000..ec2432c66a --- /dev/null +++ b/content/bn/docs/concepts/workloads/_index.md @@ -0,0 +1,91 @@ +--- +title: "ওয়ার্কলোড" +weight: 55 +description: > + পড বুঝুন, কুবারনেটিসের সবচেয়ে ছোট ডেপ্লয়বল কম্পিউট অবজেক্ট এবং উচ্চ-লেভেল অবস্ট্রাক্শন যা আপনাকে সেগুলো চালাতে সাহায্য করে । +no_list: true +card: + title: ওয়ার্কলোড এবং পড + name: concepts + weight: 60 +--- + +{{< glossary_definition term_id="workload" length="short" >}} +আপনার ওয়ার্কলোড একটি একক উপাদান বা একাধিক যা একসাথে কাজ করে, কুবারনেটিসে আপনি এটিকে +[_pods_](/bn/docs/concepts/workloads/pods) এর একটি সেটের মধ্যে চালান। +কুবারনেটিসে, একটি পড আপনার ক্লাস্টারে +{{< glossary_tooltip text="কন্টেইনারগুলোর" term_id="container" >}} চলমান একটি সেট উপস্থাপন করে৷ + +কুবারনেটিস পডের একটি [সংজ্ঞায়িত জীবনচক্র](/bn/docs/concepts/workloads/pods/pod-lifecycle/). +উদাহরণস্বরূপ, একবার আপনার ক্লাস্টারে একটি পড চলমান হলে +{{< glossary_tooltip text="নোড" term_id="node" >}} যেখানে সেই পডটি চলছে +সেখানে একটি গুরুতর ত্রুটির অর্থ হলো সেই নোডের সমস্ত পড ব্যর্থ হয়েছে ৷ কুবারনেটিস ব্যর্থতার সেই লেভেলটিকে চূড়ান্ত হিসাবে বিবেচনা করে: +আপনাকে পুনরুদ্ধার করার জন্য একটি নতুন পড তৈরি করতে হবে, এমনকি যদি নোডটি পরে সুস্থ হয়ে ওঠে। + +যাইহোক, জীবনকে যথেষ্ট সহজ করতে, আপনাকে প্রতিটি পড সরাসরি পরিচালনা করতে হবে না। +পরিবর্তে, আপনি _ওয়ার্কলোড রিসোর্স_ ব্যবহার করতে পারেন যা আপনার পক্ষ থেকে পডের একটি সেট পরিচালনা করে। +এই রিসোর্সগুলো {{< glossary_tooltip term_id="controller" text="কন্ট্রোলার" >}} কনফিগার করে +যা নিশ্চিত করে যে সঠিক সংখ্যক পড চলছে, আপনার নির্দিষ্ট +স্টেটের সাথে মেলে৷ + +কুবারনেটিস বেশ কয়েকটি বিল্ট ইন ওয়ার্কলোড রিসোর্স সরবরাহ করে: + +* [ডিপ্লয়মেন্ট](/bn/docs/concepts/workloads/controllers/deployment/) এবং [রেপ্লিকাসেট](/bn/docs/concepts/workloads/controllers/replicaset/), + (ডিপ্লয়মেন্ট হলো একটি প্রতিস্থাপন ব্যবস্থা লিগেসি + {{< glossary_tooltip text="ReplicationController" term_id="replication-controller" >}} API এর) + ক্লাস্টারে একটি স্টেটলেস অ্যাপ্লিকেশান ওয়ার্কলোড পরিচালনা করার জন্য ডিপ্লয়মেন্ট একটি উপযুক্ত ব্যবস্থা , যেখানে + ডিপ্লয়মেন্টের যেকোনো পড বিনিময়যোগ্য এবং প্রয়োজনে প্রতিস্থাপন করা যেতে পারে। +* [স্টেটফুলসেট](/bn/docs/concepts/workloads/controllers/statefulset/) + আপনাকে এক বা একাধিক সম্পর্কিত পড চালাতে দেয় যা কোনোভাবে ট্র্যাক স্টেট করে। উদাহরণস্বরূপ, যদি আপনার + ওয়ার্কলোড ক্রমাগতভাবে ডেটা রেকর্ড করে, আপনি একটি স্টেটফুলসেট চালাতে পারেন যা প্রতিটি পডের সাথে একটি + [PersistentVolume](/bn/docs/concepts/storage/persistent-volumes/) এর সাথে মেলে। আপনার কোড, সেই স্টেটফুলসেটের + জন্য পডগুলিতে চলমান, সামগ্রিক স্থিতিস্থাপকতা উন্নত করতে একই স্টেটফুলসেটের অন্যান্য + পডগুলিতে ডেটা প্রতিলিপি করতে পারে। +* একটি [ডেমনসেট](/bn/docs/concepts/workloads/controllers/daemonset/) পডগুলোকে সংজ্ঞায়িত করে + যা একটি নির্দিষ্ট {{< glossary_tooltip text="নোড" term_id="node" >}} লোকাল সুবিধা প্রদান করে; + প্রতিবার আপনি আপনার ক্লাস্টারে একটি নোড যুক্ত করেন যা একটি ডেমনসেটের স্পেসিফিকেশনের সাথে মেলে, + কন্ট্রোল প্লেন সেই ডেমনসেটের জন্য একটি পডকে নতুন নোডে নির্ধারণ করে। + ডেমনসেটের প্রতিটি পড একটি ক্লাসিক Unix / POSIX সার্ভারে সিস্টেম ডেমনের মতো একই ভূমিকা পালন + করে। একটি ডেমনসেট আপনার ক্লাস্টার পরিচালনার জন্য গুরুত্বপূর্ণ হতে পারে, যেমন একটি প্লাগইন নোড অ্যাক্সেস করতে দেয় + [ক্লাস্টার নেটওয়ার্কিং](/bn/docs/concepts/cluster-administration/networking/#how-to-implement-the-kubernetes-network-model), + এটি আপনাকে নোড পরিচালনা করতে সাহায্য করতে পারে, + অথবা এটি ঐচ্ছিক আচরণ প্রদান করতে পারে যা আপনি যে কন্টেইনার প্ল্যাটফর্মটি চালাচ্ছেন তা উন্নত করে। +* আপনি একটি + [Job](/bn/docs/concepts/workloads/controllers/job/) + এবং / বা একটি [CronJob](/bn/docs/concepts/workloads/controllers/cron-jobs/) + ব্যবহার করতে পারেন যা কাজগুলোকে চিহ্নিত করবে + যা সমাপ্তির জন্য চলবে পরে থামবে। + একটি Job একটি একক টাস্কের প্রতিনিধিত্ব করে, + যেখানে প্রতিটি CronJob একটি শিডিউল অনুযায়ী পুনরাবৃত্তি করে। + +বৃহত্তর কুবারনেটস ইকোসিস্টেমে, আপনি তৃতীয় পক্ষের ওয়ার্কলোডের রিসোর্সগুলো খুঁজে পেতে পারেন +যা অতিরিক্ত আচরণ প্রদান করে। একটি +[কাস্টম রিসোর্স ডেফিনিশন](/bn/docs/concepts/extend-kubernetes/api-extension/custom-resources/) ব্যবহার করে, +আপনি যদি কুবারনেটসের মূল অংশ নয় এমন একটি নির্দিষ্ট আচরণ চান তাহলে আপনি একটি তৃতীয় পক্ষের ওয়ার্কলোডের রিসোর্স যোগ করতে পারেন । +উদাহরণস্বরূপ, আপনি যদি আপনার অ্যাপ্লিকেশনের জন্য পডগুলির একটি গ্রুপ চালাতে চান +কিন্তু কাজ বন্ধ করতে চান যদি না _সব_ পডগুলো উপলব্ধ হয় (সম্ভবত কিছু উচ্চ-থ্রুপুট ডিস্ট্রিবিউট করা কাজের জন্য), +তাহলে আপনি সেই ফিচারটি প্রদান করে এমন একটি এক্সটেনশন বাস্তবায়ন বা ইনস্টল করতে পারেন। + +## {{% heading "whatsnext" %}} + +ওয়ার্কলোড ম্যানেজমেন্টের জন্য প্রতিটি API ধরণের সম্পর্কে পড়ার পাশাপাশি, +আপনি কীভাবে নির্দিষ্ট কাজগুলো করতে হবে তা পড়তে পারেন: + +* [একটি ডিপ্লয়মেন্ট ব্যবহার করে একটি স্টেটলেস অ্যাপ্লিকেশন চালান](/bn/docs/tasks/run-application/run-stateless-application-deployment/) +* একটি [একক উদাহরণ](/bn/docs/tasks/run-application/run-single-instance-stateful-application/) হিসাবে একটি স্টেটফুল অ্যাপ্লিকেশন চালান + অথবা একটি [রেপ্লিকেটেড সেট](/bn/docs/tasks/run-application/run-replicated-stateful-application/) হিসাবে +* [CronJob দিয়ে স্বয়ংক্রিয় কাজ চালান](/bn/docs/tasks/job/automated-tasks-with-cron-jobs/) + +কনফিগারেশন থেকে কোড আলাদা করার জন্য কুবারনেটিসের প্রক্রিয়া সম্পর্কে জানতে, +[কনফিগারেশন](/bn/docs/concepts/configuration/) দেখুন। + +কুবারনেটিস কীভাবে অ্যাপ্লিকেশনগুলির জন্য পডগুলো পরিচালনা করে +সে সম্পর্কে পটভূমি প্রদান করে এমন দুটি সাপোর্টকারী ধারণা রয়েছে: +* [গার্বেজ কালেকশন](/bn/docs/concepts/architecture/garbage-collection/) আপনার ক্লাস্টার + থেকে বস্তুগুলিকে তাদের _মালিকানাধীন রিসোর্স_ সরিয়ে ফেলার পরে পরিষ্কার করে। +* [_time-to-live after finished_ কন্ট্রোলার](/bn/docs/concepts/workloads/controllers/ttlafterfinished/) + কাজগুলো সম্পূর্ণ করার পর একটি নির্দিষ্ট সময় পেরিয়ে গেলে তা সরিয়ে দেয়। + +একবার আপনার অ্যাপ্লিকেশানটি চালু হয়ে গেলে, আপনি এটিকে একটি [সার্ভিস](/bn/docs/concepts/services-networking/service/) +হিসাবে ইন্টারনেটে উপলব্ধ করতে চাইতে পারেন বা, শুধুমাত্র ওয়েব অ্যাপ্লিকেশনের জন্য, +একটি [ইনগ্রেস](/bn/docs/concepts/services-networking/ingress) ব্যবহার করে । diff --git a/content/bn/docs/concepts/workloads/controllers/_index.md b/content/bn/docs/concepts/workloads/controllers/_index.md new file mode 100644 index 0000000000..fa6a96f683 --- /dev/null +++ b/content/bn/docs/concepts/workloads/controllers/_index.md @@ -0,0 +1,61 @@ +--- +title: "ওয়ার্কলোড ম্যানেজমেন্ট" +weight: 20 +simple_list: true +--- + +কুবারনেটিস বিভিন্ন বিল্ট ইন API দেয় ঘোষণামূলক ম্যানেজমেন্ট +{{< glossary_tooltip text="ওয়ার্কলোড" term_id="workload" >}} +এবং ওয়ার্কলোডের উপাদানের জন্য। + +অবশেষে, আপনার অ্যাপ্লিকেশন {{< glossary_tooltip term_id="Pod" text="পডের" >}} +মধ্যে রান হয় কন্টেইনার হিসেবে; যাইহোক, একক পড ম্যানেজ করা কষ্টসাধ্য। +উদাহরণস্বরূপ, যদি একটি পড ব্যর্থ হয়, আপনি তাহলে নতুন পড চালিয়ে এটিকে +রিপ্লেস করতে চাইবেন। কুবারনেটিস আপনার জন্য এটি করে দিবে। + +আপনি ওয়ার্ক লোড তৈরি করার জন্য কুবারনেটিস API ব্যবহার করতে পারেন +{{< glossary_tooltip text="অবজেক্ট" term_id="object" >}} যা পড +থেকে বেশি অবস্ট্রাক্শন লেভেল প্রদর্শন করে, তারপর কুবারনেটিস +{{< glossary_tooltip text="কন্ট্রোল প্লেন" term_id="control-plane" >}} স্বয়ংক্রিয়ভাবে আপনার +পক্ষ থেকে পড অবজেক্ট পরিচালনা করে, আপনার সংজ্ঞায়িত ওয়ার্কলোড অবজেক্টের স্পেসিফিকেশনের উপর ভিত্তি করে। + +ওয়ার্কলোড পরিচালনার জন্য বিল্ট ইন API গুলো হলো: + +[ডিপ্লয়মেন্ট](/bn/docs/concepts/workloads/controllers/deployment/) (এবং, পরোক্ষভাবে, [রেপ্লিকাসেট](/bn/docs/concepts/workloads/controllers/replicaset/)), +আপনার ক্লাস্টারে একটি অ্যাপ্লিকেশন চালানোর সবচেয়ে সাধারণ উপায়। +ক্লাস্টারে একটি স্টেটলেস অ্যাপ্লিকেশান ওয়ার্কলোড পরিচালনা করার জন্য ডিপ্লয়মেন্ট একটি উপযুক্ত ব্যবস্থা , যেখানে +ডিপ্লয়মেন্টের যেকোনো পড বিনিময়যোগ্য এবং প্রয়োজনে প্রতিস্থাপন করা যেতে পারে। +(ডিপ্লয়মেন্ট হলো একটি প্রতিস্থাপন ব্যবস্থা লিগেসি +{{< glossary_tooltip text="ReplicationController" term_id="replication-controller" >}} API এর). + +একটি [স্টেটফুলসেট](/bn/docs/concepts/workloads/controllers/statefulset/) আপনাকে অনুমতি দেয় +এক বা একাধিক পড পরিচালনা করার – সব একই অ্যাপ্লিকেশন কোড চালায় – যেখানে পড +একটি স্বতন্ত্র পরিচয় রাখতে চায়। এটি ডিপ্লয়মেন্ট থেকে ভিন্ন যেখানে +পড বিনিময়যোগ্য হয়ে থাকে । +স্টেটফুলসেটের সাধারণ কাজ হলো পড এবং পারসিসটেন্ট স্টোরেজ এর মধ্যে একটি লিঙ্ক তৈরি করা। +উদাহরণস্বরূপ, আপনি একটি স্টেটফুল সেট চালাতে পারেন যা প্রতিটি পডকে সংযুক্ত করে +একটি [PersistentVolume](/bn/docs/concepts/storage/persistent-volumes/) এর সাহায্যে।যদি +স্টেটফুলসেটের একটি পডও ব্যর্থ হয়, তাহলে কুবারনেটিস একটি প্রতিস্থাপন পড তৈরি করে +যা একই PersistentVolume এর সাথে সংযুক্ত থাকে। + +একটি [ডেমনসেট](/bn/docs/concepts/workloads/controllers/daemonset/) পডগুলোকে সংজ্ঞায়িত করে +যা একটি নির্দিষ্ট {{< glossary_tooltip text="নোড" term_id="node" >}} লোকাল সুবিধা প্রদান করে; +উদাহরণস্বরূপ, ড্রাইভার নোডের কন্টেইনারগুলোকে স্টোরেজ সিস্টেম অ্যাক্সেস করতে দেয়। আপনি তখন ডেমনসেট ব্যবহার করতে পারেন +যখন ড্রাইভার, বা অন্যান্য নোড-লেভেলের সার্ভিস,নোডে চালাতে হবে যেখানে এটি দরকারী। +ডেমনসেটের প্রতিটি পড একটি ক্লাসিক Unix / POSIX সার্ভারে সিস্টেম ডেমনের মতো +একই ভূমিকা পালন করে। +একটি ডেমনসেট আপনার ক্লাস্টার পরিচালনার জন্য গুরুত্বপূর্ণ হতে পারে, +যেমন একটি প্লাগইন নোড অ্যাক্সেস করতে দেয় +[ক্লাস্টার নেটওয়ার্কিং](/bn/docs/concepts/cluster-administration/networking/#how-to-implement-the-kubernetes-network-model), +এটি আপনাকে নোড পরিচালনা করতে সাহায্য করতে পারে, +বা এটি কম সুবিধা প্রদান করতে পারে যা আপনি যে কন্টেইনার প্ল্যাটফর্মটি চালাচ্ছেন তা উন্নত করে। +আপনি আপনার ক্লাস্টারের প্রতিটি নোড জুড়ে বা শুধুমাত্র একটি উপসেট জুড়ে ডেমনসেট (এবং তাদের পড) চালাতে পারেন (উদাহরণস্বরূপ, +শুধুমাত্র GPU ইনস্টল করা নোডগুলিতে GPU এক্সিলারেটর ড্রাইভার ইনস্টল করুন)। + +আপনি একটি [Job](/bn/docs/concepts/workloads/controllers/job/) এবং / বা +একটি [CronJob](/bn/docs/concepts/workloads/controllers/cron-jobs/) ব্যবহার করতে পারেন +যা কাজগুলোকে চিহ্নিত করবে যা সমাপ্তির জন্য চলবে পরে থামবে। একটি Job একটি +একক টাস্কের প্রতিনিধিত্ব করে, যেখানে প্রতিটি CronJob একটি শিডিউল অনুযায়ী পুনরাবৃত্তি করে। + +এই বিভাগে অন্যান্য বিষয়: + diff --git a/content/bn/docs/concepts/workloads/pods/_index.md b/content/bn/docs/concepts/workloads/pods/_index.md index 748f9fbc68..a64e891ba7 100644 --- a/content/bn/docs/concepts/workloads/pods/_index.md +++ b/content/bn/docs/concepts/workloads/pods/_index.md @@ -1,5 +1,5 @@ --- -title: Pods +title: পড content_type: concept weight: 10 no_list: true @@ -7,7 +7,7 @@ no_list: true -_পড_ হলো কম্পিউটিংয়ের ক্ষুদ্রতম স্থাপনযোগ্য একক যা আপনি কুবারনেটিসে তৈরি এবং পরিচালনা করতে পারেন। +_পড_ হলো কম্পিউটিংয়ের ক্ষুদ্রতম স্থাপনযোগ্য একক যা আপনি কুবারনেটিসে তৈরি এবং পরিচালনা করতে পারেন। একটি পড (তিমি বা মটর শুঁটির একটি পডের মতো) এক বা একাধিক {{< glossary_tooltip text="কন্টেইনার" term_id="container" >}} এর একটি গ্রুপ , শেয়ার্ড স্টোরেজ এবং নেটওয়ার্ক রিসোর্স গুলির সাথে, এবং কন্টেইনার কীভাবে চালানো যায় তার জন্য একটি স্পেসিফিকেশন। একটি পডের সামগ্রী সর্বদা সহ-অবস্থিত এবং diff --git a/content/bn/docs/concepts/workloads/pods/sidecar-containers.md b/content/bn/docs/concepts/workloads/pods/sidecar-containers.md index b0c94b750d..17a94f0d48 100644 --- a/content/bn/docs/concepts/workloads/pods/sidecar-containers.md +++ b/content/bn/docs/concepts/workloads/pods/sidecar-containers.md @@ -1,5 +1,5 @@ --- -title: সাইডকার কন্টেইনার (Sidecar Containers) +title: সাইডকার কন্টেইনার content_type: concept weight: 50 --- diff --git a/content/bn/docs/contribute/_index.md b/content/bn/docs/contribute/_index.md index 1b3b2909fc..db7d22f881 100644 --- a/content/bn/docs/contribute/_index.md +++ b/content/bn/docs/contribute/_index.md @@ -1,6 +1,6 @@ --- -content_type: ধারণা -title: অবদান রাখো K8s ডকুমেনটেশনে +content_type: concept +title: কুবারনেটিসে অবদান linktitle: অবদান main_menu: true no_list: true @@ -8,181 +8,24 @@ weight: 80 card: name: অবদান weight: 10 - title: K8s এ অবদান রাখা শুরু করুন + title: কুবারনেটিসে অবদান --- -*কুবারনেটিস নতুন এবং অভিজ্ঞ সকল অবদানকারীদের থেকে উন্নতিকে স্বাগত জানায়!* +কুবারনেটিসে অবদান রাখার অনেক উপায় আছে। আপনি নতুন ফিচারগুলোর জন্য ডিজাইনে কাজ করতে পারেন, +আপনি আমাদের কাছে ইতিমধ্যে থাকা কোডটি ডকুমেন্ট করতে পারেন, আপনি আমাদের [ব্লগের](/bn/blog) জন্য লিখতে পারেন। +আরও আছে: আপনি সেই নতুন ফিচারগুলোর বাস্তবায়ন করতে পারেন বা বাগগুলি ঠিক করতে পারেন৷ আপনি লোকেদের আমাদের +অবদানকারী কমিউনিটিতে যোগ দিতে সাহায্য করতে পারেন, বা বিদ্যমান অবদানকারীদের সাপোর্ট করতে পারেন৷ -{{< note >}} -সাধারণভাবে কুবারনেটিস অবদান সম্পর্কে আরও জানতে, দেখুন -[অবদানকারীদের জন্য ডকুমেন্টেশন](https://www.কুবারনেটিস.dev/docs/)। -{{< /note >}} +এই সমস্ত ভিন্ন উপায়ে প্রকল্পে পার্থক্য আনতে, আমরা - কুবারনেটিস - +একটি ডেডিকেটেড ওয়েবসাইট তৈরি করেছি: https://k8s.dev/। +কুবারনেটিসে অবদান রাখার বিষয়ে আরও জানতে আপনি সেখানে যেতে পারেন। -এই ওয়েবসাইটটি [কুবারনেটিস SIG Docs](/docs/contribute/#get-involved-with-sig-docs) দ্বারা রক্ষণাবেক্ষণ করা হয় । +আপনি যদি বিশেষভাবে _এই_ ডকুমেন্টেশনে অবদান রাখার বিষয়ে জানতে চান, পড়ুন +[কুবারনেটিস ডকুমেন্টেশনে অবদান রাখুন](/docs/contribute/docs/)। -কুবারনেটিস ডকুমেন্টেশন অবদানকারী: - -- বিদ্যমান সামগ্রী উন্নত করুন -- নতুন কন্টেন্ট তৈরি করুন -- ডকুমেন্টেশন অনুবাদ করুন -- কুবারনেটিস রিলিজ চক্রের ডকুমেন্টেশন অংশগুলি পরিচালনা এবং প্রকাশ করুন - - - -## শুরু করুন - -যে কেউ ডকুমেন্টেশন সম্পর্কে একটি সমস্যা (issue) খুলতে পারে, বা পরিবর্তন করতে পারে - পুল রিকুয়েস্ট(pull request) দেয়ার মাধ্যমে -[`কুবারনেটিস/website` GitHub Repository](https://github.com/kubernetes/website) এ। আপনাকে -[git](https://git-scm.com/) এবং -[GitHub](https://lab.github.com/) সম্পর্কে জানতে হবে -কুবারনেটিস সম্প্রদায়ে কার্যকরভাবে কাজ করার জন্য। - - -ডকুমেন্টেশনের সাথে জড়িত হতে: - -1. CNCF [কন্ট্রিবিউটর লাইসেন্স চুক্তি](https://github.com/kubernetes/community/blob/master/CLA.md) স্বাক্ষর করুন। -2. [ডকুমেন্টেশন রিপোজিটরি](https://github.com/kubernetes/website) এবং ওয়েবসাইটের [স্ট্যাটিক সাইট জেনারেটর](https://gohugo.io) এর সাথে নিজেকে পরিচিত করুন । -3. নিশ্চিত করুন যে আপনি প্রাথমিক প্রক্রিয়াগুলি বুঝতে পেরেছেন৷ - [একটি পুল অনুরোধ খোলার](/docs/contribute/new-content/open-a-pr/) এবং - [পরিবর্তন পর্যালোচনা করার](/docs/contribute/review/reviewing-prs/)। - - - - - -{{< mermaid >}} -flowchart TB -subgraph third[পুল রিকোয়েস্ট খুলুন] -direction TB -U[ ] -.- -Q[বিষয়বস্তু উন্নত] --- N[সামগ্রী তৈরি করুন] -N --- O[Translate docs] -O --- P[Docs এর অংশগুলি পরিচালনা/প্রকাশ করুন
K8s রিলিজ চক্রের থেকে] - -end - -subgraph second[পুনঃমূল্যায়ন] -direction TB - T[ ] -.- - D[দেখুন
K8s/website
ভান্ডার] --- E[দেখুন
Hugo static সাইট
generator] - E --- F[মৌলিক
GitHub কমান্ড বুঝুন] - F --- G[পর্যালোচনা করো খোলা পুল রিকোয়েস্ট
এবং পর্যালোচনা পরিবর্তন করুন
প্রসেস] -end - -subgraph first[Sign up] - direction TB - S[ ] -.- - B[স্বাক্ষর করুন CNCF
অবদানকারী
লাইসেন্স চুক্তি] --- C[সিগ-Docs এ যোগ দিন
Slack channel] - C --- V[কুবারনেটিস-sig-docs-এ যোগ দিন
মেইলিং তালিকা] - V --- M[সাপ্তাহিকভাবে যোগদান করুন
সিগ-Docs কল
অথবা slack বৈঠকে] -end - -A([fa:fa-user নতুন
অবদানকারী]) --> first -A --> second -A --> third -A --> H[প্রশ্ন করো!!!] - - -classDef grey fill:#dddddd,stroke:#ffffff,stroke-width:px,color:#000000, font-size:15px; -classDef white fill:#ffffff,stroke:#000,stroke-width:px,color:#000,font-weight:bold -classDef spacewhite fill:#ffffff,stroke:#fff,stroke-width:0px,color:#000 -class A,B,C,D,E,F,G,H,M,Q,N,O,P,V grey -class S,T,U spacewhite -class first,second,third white -{{}} -***চিত্র - একজন নতুন অবদানকারীর জন্য শুরু করা*** - -উপরের চিত্রটি নতুন অবদানকারীদের জন্য একটি রোডম্যাপের রূপরেখা দেয়৷ আপনি `Sign up` এবং `Review` এর জন্য কিছু বা সমস্ত ধাপ অনুসরণ করতে পারেন। এখন আপনি 'Open PR'-এর অধীনে তালিকাভুক্ত কিছু সহ আপনার অবদানের উদ্দেশ্যগুলি অর্জনকারী PR খুলতে প্রস্তুত। আবার,আমরা প্রশ্নকে সবসময় স্বাগত জানাই! - - - -কিছু কাজের জন্য কুবারনেটিস সংস্থায় আরও বিশ্বাস এবং আরও অ্যাক্সেসের প্রয়োজন। -এ সম্পর্কে আরো বিস্তারিত জানার জন্য [SIG Docs এ অংশগ্রহণ করে](/docs/contribute/participate/) দেখুন -ভূমিকা এবং অনুমতি সমুহ। - - - - -## আপনার প্রথম অবদান - -আপনি আগে থেকে বেশ কয়েকটি ধাপ পর্যালোচনা করে আপনার প্রথম অবদানের জন্য প্রস্তুত করতে পারেন। নীচের চিত্রটি ধাপগুলিকে রূপরেখা দেয় এবং বিশদগুলি অনুসরণ করে৷ - - - - -{{< mermaid >}} -flowchart LR - subgraph second[প্রথম অবদান] - direction TB - S[ ] -.- - G[অন্যদের থেকে পুল রিকোয়েস্ট পর্যালোচনা করুন
K8s সদস্যদের মধ্য থেকে] --> - A[K8s/website চেক করুন
সমস্যা তালিকার জন্য
ভাল good first PRs] --> B[একটি পুল রিকোয়েস্ট খুলুন!!] - end - subgraph first[প্রস্তাবিত প্রস্তুতি] - direction TB - T[ ] -.- - D[অবদান ওভারভিউ পড়ুন] -->E[K8s বিষয়বস্তু পড়ুন
এবং শৈলী গাইড] - E --> F[Hugo পাতা সম্পর্কে জানুন
বিষয়বস্তুর প্রকার
এবং শর্টকোড] - end - - - first ----> second - - -classDef grey fill:#dddddd,stroke:#ffffff,stroke-width:px,color:#000000, font-size:15px; -classDef white fill:#ffffff,stroke:#000,stroke-width:px,color:#000,font-weight:bold -classDef spacewhite fill:#ffffff,stroke:#fff,stroke-width:0px,color:#000 -class A,B,D,E,F,G grey -class S,T spacewhite -class first,second white -{{}} -***চিত্র - আপনার প্রথম অবদানের জন্য প্রস্তুতি*** - - - -- [কন্ট্রিবিউশন ওভারভিউ](/docs/contribute/new-content/overview/) পড়ুন এবং - আপনি যেসব উপায়ে অবদান রাখতে পারেন সেসব সম্পর্কে জানুন । -- [`kubernetes/website` সমস্যা তালিকা](https://github.com/kubernetes/website/issues/) চেক করুন যা - ভালো এন্ট্রি পয়েন্ট তৈরি করে এমন সমস্যার জন্য। -- [GitHub ব্যবহার করে একটি পুল অনুরোধ খুলুন](/docs/contribute/new-content/open-a-pr/#changes-using-github) - বিদ্যমান ডকুমেন্টেশনে এবং GitHub-এ ফাইল করা সমস্যা ( filing issues in GitHub) সম্পর্কে আরও জানুন। -- অন্য কুবারনেটিস সম্প্রদায়ের সদস্যসদের থেকে - সঠিকতা এবং ভাষার জন্য [পুলের অনুরোধ পর্যালোচনা করুন](/docs/contribute/review/reviewing-prs/) -- কুবারনেটিস [content](/docs/contribute/style/content-guide/) এবং [শৈলী নির্দেশিকা](/docs/contribute/style/style-guide/) পড়ুন - যাতে আপনি অবহিত মন্তব্য করতে পারেন। -- [পৃষ্ঠা বিষয়বস্তুর প্রকার](/docs/contribute/style/page-content-types/) সম্পর্কে জানুন - এবং [Hugo শর্ট কোডস](/docs/contribute/style/hugo-shortcodes/)। - -## পরবর্তী পদক্ষেপ - -- ভান্ডার থেকে শিখুন [একটি স্থানীয় ক্লোন (local clone) থেকে কাজ করা](/docs/contribute/new-content/open-a-pr/#fork-the-repo) । -- ডকুমেনটেশন কর [একটি রিলিজের বৈশিষ্ট্য](/docs/contribute/new-content/new-features/)। -- [SIG Docs](/docs/contribute/participate/) এ অংশগ্রহণ করুন এবং একজন - [সদস্য বা পর্যালোচক](/docs/contribute/participate/roles-and-responsibilities/) হন। - -- একটি [স্থানীয়করণ](/docs/contribute/localization/) দিয়ে শুরু করুন বা সাহায্য করুন। - -## SIG Docs এর সাথে জড়িত হন - -[SIG Docs](/docs/contribute/participate/) হল অবদানকারীদের গ্রুপ যারা -কুবারনেটিস ডকুমেন্টেশন এবং ওয়েবসাইট প্রকাশ এবং বজায় রাখে । কুবারনেটিস অবদানকারীদের জন্য একটি দুর্দান্ত উপায় -SIG Docs এর সাথে জড়িত (বৈশিষ্ট্য -উন্নয়ন বা অন্যথায়) হওয়া যা কুবারনেটিস প্রকল্পে একটি বড় প্রভাব ফেলতে পারে। - -SIG Docs বিভিন্ন পদ্ধতির সাথে যোগাযোগ করে: - -- [কুবারনেটিস Slack উদাহরণ হিসেবে `#sig-docs`-এ যোগ দিন](https://slack.k8s.io/)। নিশ্চিত করবে - তোমার পরিচিতি যাতে দেয়া হয় । -- [`কুবারনেটিস-sig-docs` মেইলিং তালিকায় যোগ দিন](https://groups.google.com/forum/#!forum/kubernetes-sig-docs), - যেখানে বিস্তৃত আলোচনা সঞ্চালিত হয় এবং অফিসিয়াল সিদ্ধান্ত রেকর্ড করা হয়। -- [সাপ্তাহিক SIG Docs ভিডিও মিটিং](https://github.com/kubernetes/community/tree/master/sig-docs) যোগ দিন। মিটিংগুলি সর্বদা `#sig-docs`-এ ঘোষণা করা হয় এবং [কুবারনেটিস সম্প্রদায় মিটিং ক্যালেন্ডার](https://calendar.google.com/calendar/embed?src=cgnt364vd8s86hr2phapfjc6uk%40group.calendar.google.com&ctz=America/Los_Angeles). আপনাকে [জুম ক্লায়েন্ট](https://zoom.us/download) ডাউনলোড করতে হবে বা ফোন ব্যবহার করে ডায়াল করতে হবে। -- সেই সপ্তাহগুলিতে যখন ব্যক্তিগত জুম ভিডিও মিটিং হয় না তখন SIG Docs async স্ল্যাক স্ট্যান্ডআপ মিটিংয়ে যোগ দিন। সভাগুলি সর্বদা `#sig-docs`-এ ঘোষণা করা হয়। আপনি মিটিংয়ের ঘোষণার 24 ঘন্টা পর্যন্ত থ্রেডের যেকোনো একটিতে অবদান রাখতে পারেন। - -## অবদান রাখার অন্যান্য উপায় -- [কুবারনেটিস কমিউনিটি সাইট](/community/) দেখুন। টুইটার বা স্ট্যাক ওভারফ্লোতে অংশগ্রহণ করুন, স্থানীয় কুবারনেট মিটআপ এবং ইভেন্ট এবং আরও অনেক কিছু সম্পর্কে জানুন। -- কুবারনেটিস ফিচার ডেভেলপমেন্টের সাথে যুক্ত হতে [কন্ট্রিবিউটর চিটশীট](https://www.kubernetes.dev/docs/contributor-cheatsheet/) পড়ুন। -- [কুবারনেটিস Contributors](https://www.kubernetes.dev/) এবং [অতিরিক্ত অবদানকারী সংস্থান](https://www.kubernetes.dev/resources/) সম্পর্কে আরও জানতে অবদানকারীর সাইটে যান। -- একটি [ব্লগ পোস্ট বা কেস স্টাডি](/docs/contribute/new-content/blogs-case-studies/) জমা দিন। +এছাড়াও আপনি পড়তে পারেন +{{< glossary_tooltip text="CNCF" term_id="cncf" >}} +[পৃষ্ঠা](https://contribute.cncf.io/contributors/projects/#kubernetes) +কুবারনেটিস অবদান সম্পর্কে। diff --git a/content/bn/docs/home/_index.md b/content/bn/docs/home/_index.md index 84aafd236b..35ba8b18e9 100644 --- a/content/bn/docs/home/_index.md +++ b/content/bn/docs/home/_index.md @@ -1,66 +1,67 @@ --- +# approvers: +# - chenopis ( The list of approvers is not necessary for the localized version. However, it is included because it helps maintain a certain line break, which further aids in updating a file.That's why it's kept in comment form. ) title: কুবারনেটিস ডকুমেন্টেশন noedit: true cid: docsHome layout: docsportal_home class: gridPage gridPageHome -linkTitle: "হোম" +linkTitle: "ডকুমেন্টেশন" main_menu: true weight: 10 hide_feedback: true menu: main: title: "ডকুমেন্টেশন" - weight: 20 - post: > -

টিউটোরিয়াল এবং রেফারেন্স ডকুমেন্টেশন সহ কুবারনেটিস কীভাবে ব্যবহার করবেন তা শিখুন । এমনকি আপনি ডক্সে অবদান রাখতে সাহায্য করতে পারেন!

+ weight: 10 description: > - কুবারনেটিস হল একটি ওপেন সোর্স কন্টেইনার অর্কেস্ট্রেশন ইঞ্জিন যাতে কনটেইনারাইজড অ্যাপ্লিকেশনের ডিপ্লয়মেন্ট, স্কেলিং এবং ম্যানেজমেন্ট করা যায়। ওপেন সোর্স প্রকল্পটি Cloud Native Computing Foundation দ্বারা হোস্ট করা হয়। + কুবারনেটিস হলো একটি ওপেন সোর্স কন্টেইনার অর্কেস্ট্রেশন ইঞ্জিন যাতে কন্টেইনারাইজড অ্যাপ্লিকেশনের ডিপ্লয়মেন্ট, স্কেলিং এবং ম্যানেজমেন্ট করা যায়। ওপেন সোর্স প্রকল্পটি Cloud Native Computing Foundation দ্বারা হোস্ট করা হয়। overview: > - কুবারনেটিস হল একটি ওপেন সোর্স কন্টেইনার অর্কেস্ট্রেশন ইঞ্জিন যাতে কনটেইনারাইজড অ্যাপ্লিকেশনের ডিপ্লয়মেন্ট, স্কেলিং এবং ম্যানেজমেন্ট করা যায়। ওপেন সোর্স প্রকল্পটি Cloud Native Computing Foundation (CNCF) দ্বারা হোস্ট করা হয়। - + কুবারনেটিস হলো একটি ওপেন সোর্স কন্টেইনার অর্কেস্ট্রেশন ইঞ্জিন যাতে কন্টেইনারাইজড অ্যাপ্লিকেশনের ডিপ্লয়মেন্ট, স্কেলিং এবং ম্যানেজমেন্ট করা যায়। ওপেন সোর্স প্রকল্পটি Cloud Native Computing Foundation (CNCF) দ্বারা হোস্ট করা হয়। cards: - name: concepts title: "কুবারনেটিস বুঝুন" description: "কুবারনেটিস এবং এর মৌলিক ধারণা সম্পর্কে জানুন।" button: "ধারণা দেখুন" - button_path: "/docs/concepts" + button_path: "/bn/docs/concepts" - name: tutorials title: "কুবারনেটিস ব্যাবহার করুন" description: "কুবারনেটিস এ অ্যাপ্লিকেশন কিভাবে স্থাপন করতে হয় তা শিখতে টিউটোরিয়াল অনুসরণ করুন।" button: "টিউটোরিয়াল দেখুন" - button_path: "/docs/tutorials" + button_path: "/bn/docs/tutorials" - name: setup title: "একটি K8s ক্লাস্টার সেট আপ করুন" - description: "আপনার সম্পদ এবং প্রয়োজনের উপর ভিত্তি করে কুবারনেটিস চালান।" + description: "আপনার রিসোর্স এবং প্রয়োজনের উপর ভিত্তি করে কুবারনেটিস চালান।" button: "কুবারনেটিস সেট আপ করুন" - button_path: "/docs/setup" + button_path: "/bn/docs/setup" - name: tasks title: "কুবারনেটিস কীভাবে ব্যবহার করবেন তা শিখুন" - description: "সাধারণ কাজগুলি এবং পদক্ষেপগুলির একটি সংক্ষিপ্ত ক্রম ব্যবহার করে কীভাবে সেগুলি সম্পাদন করা যায় দেখুন ।" - button: "কাজ দেখুন" - button_path: "/docs/tasks" -- name: training - title: "প্রশিক্ষণ" - description: "কুবারনেটিস -এ প্রত্যয়িত হন এবং আপনার cloud native প্রকল্পগুলিকে সফল করুন!" - button: "প্রশিক্ষণ দেখুন" - button_path: "/training" + description: "সাধারণ টাস্কগুলো এবং পদক্ষেপগুলোর একটি সংক্ষিপ্ত ক্রম ব্যবহার করে কীভাবে সেগুলো সম্পাদন করা যায় দেখুন ।" + button: "টাস্ক দেখুন" + button_path: "/bn/docs/tasks" - name: reference title: রেফারেন্স তথ্য দেখুন - description: পরিভাষা, কমান্ড লাইন সিনট্যাক্স, API সংস্থান প্রকার এবং সেটআপ টুল ডকুমেন্টেশন ব্রাউজ করুন। - button: রেফারেন্স দেখুন - button_path: /docs/reference + description: পরিভাষা, কমান্ড লাইন সিনট্যাক্স, API রিসোর্স প্রকার এবং সেটআপ টুল ডকুমেন্টেশন ব্রাউজ করুন। + button: "রেফারেন্স দেখুন" + button_path: "/bn/docs/reference" - name: contribute - title: ডক্সে অবদান রাখুন - description: আপনি প্রকল্পে নতুন হোন বা আপনি দীর্ঘ সময় ধরে আছেন, যে কেউ অবদান রাখতে পারেন । - button: ডক্সে অবদান রাখুন - button_path: /docs/contribute -- name: release-notes - title: K8s রিলিজ নোট - description: আপনি যদি কুবারনেটিস ইনস্টল করছেন বা নতুন সংস্করণে আপগ্রেড করছেন, বর্তমান রিলিজ নোটগুলি পড়ুন। + title: কুবারনেটিসে অবদান + description: আপনি কিভাবে কুবারনেটিসে আরও ভাল করতে সাহায্য করতে পারেন তা খুঁজে বের করুন। + button: "অবদান রাখার উপায় দেখুন" + button_path: "/bn/docs/contribute" +- name: training + title: "প্রশিক্ষণ" + description: "কুবারনেটিসে সার্টিফাইড হন এবং আপনার ক্লাউড নেটিভ প্রকল্পগুলিকে সফল করুন!" + button: "প্রশিক্ষণ দেখুন" + button_path: "/bn/training" +- name: Download + title: কুবারনেটিস ডাউনলোড করুন + description: কুবারনেটিস ইনস্টল করুন বা নতুন সংস্করণে আপগ্রেড করুন। button: "কুবারনেটিস ডাউনলোড করুন" - button_path: "/docs/setup/release/notes" + button_path: "/bn/releases/download" - name: about title: ডকুমেন্টেশন সম্পর্কে - description: এই ওয়েবসাইটে কুবারনেটিস-এর বর্তমান এবং পূর্ববর্তী ৪ সংস্করণের ডকুমেন্টেশন রয়েছে। + description: এই ওয়েবসাইটটিতে কুবারনেটিসের বর্তমান এবং পূর্ববর্তী 4 সংস্করণের ডকুমেন্টেশন রয়েছে। + button: "উপলব্ধ সংস্করণ দেখুন" + button_path: "/bn/docs/home/supported-doc-versions" --- diff --git a/content/bn/docs/home/supported-doc-versions.md b/content/bn/docs/home/supported-doc-versions.md index 902de5f864..1b9831ad46 100644 --- a/content/bn/docs/home/supported-doc-versions.md +++ b/content/bn/docs/home/supported-doc-versions.md @@ -2,16 +2,13 @@ title: উপলব্ধ ডকুমেন্টেশনের সংস্করণ content_type: custom layout: supported-versions -card: - name: about - weight: 10 - title: উপলব্ধ ডকুমেন্টেশনের সংস্করণ +weight: 10 --- +এই ওয়েবসাইটটিতে কুবারনেটিসের বর্তমান সংস্করণ এবং +কুবারনেটিসের আগের চারটি সংস্করণের ডকুমেন্টেশন রয়েছে। -এই ওয়েবসাইটটিতে কুবারনেটিসের আগের চারটি সংস্করণ এবং বর্তমান সংস্করণের জন্য ডকুমেন্টেশন রয়েছে। - - -কুবারনেটিসের ( Kubernetes) সংস্করণটি বর্তমানে সমর্থিত (supported) কিনা তা থেকে কুবারনেটিসের (Kubernetes) সংস্করণের জন্য ডকুমেন্টেশনের প্রাপ্যতা আলাদা রয়েছে । - -কুবারনেটিসের এর কোন সংস্করণ আনুষ্ঠানিকভাবে সমর্থিত, এবং কতদিনের জন্য তা সম্বন্ধে জানতে [Support period](/releases/patch-releases/#support-period) পড়ুন। +কুবারনেটিস সংস্করণের জন্য ডকুমেন্টেশনের প্রাপ্যতা সেই রিলিজটি +বর্তমানে সাপোর্টেড কিনা তা থেকে আলাদা। +কুবারনেটিসের কোন সংস্করণ আনুষ্ঠানিকভাবে সাপোর্টেড, এবং কতদিনের জন্য +তা জানতে [সাপোর্ট সময়কাল](/bn/releases/patch-releases/#support-period) পড়ুন। diff --git a/content/bn/docs/images/diagram-guide-example-3.svg b/content/bn/docs/images/diagram-guide-example-3.svg new file mode 100644 index 0000000000..f72b797fe3 --- /dev/null +++ b/content/bn/docs/images/diagram-guide-example-3.svg @@ -0,0 +1 @@ +mecontrol planeapi-servercontrol planeetcd datastorecontrol planecontrollermanagercontrol planeschedulernodekubeletnodecontainerruntime1. kubectl create -f pod.yaml2. save new state3. check for changes4. watch for unassigned pods(s)5. notify about pod w nodename=" "6. assign pod to node7. save new state8. look for newly assigned pod(s)9. bind pod to node10. start container11. update pod status12. save new statemecontrol planeapi-servercontrol planeetcd datastorecontrol planecontrollermanagercontrol planeschedulernodekubeletnodecontainerruntime diff --git a/content/bn/docs/images/gateway-kind-relationships.svg b/content/bn/docs/images/gateway-kind-relationships.svg new file mode 100644 index 0000000000..f5ed657cf7 --- /dev/null +++ b/content/bn/docs/images/gateway-kind-relationships.svg @@ -0,0 +1 @@ +
cluster
GatewayClass
Gateway
HTTPRoute
diff --git a/content/bn/docs/images/gateway-request-flow.svg b/content/bn/docs/images/gateway-request-flow.svg new file mode 100644 index 0000000000..e6b4c666b4 --- /dev/null +++ b/content/bn/docs/images/gateway-request-flow.svg @@ -0,0 +1 @@ + diff --git a/content/bn/docs/images/ha-control-plane-(bn-version).svg b/content/bn/docs/images/ha-control-plane-(bn-version).svg new file mode 100644 index 0000000000..e680077825 --- /dev/null +++ b/content/bn/docs/images/ha-control-plane-(bn-version).svg @@ -0,0 +1,5 @@ + + + + + diff --git a/content/bn/docs/images/ingress.svg b/content/bn/docs/images/ingress.svg new file mode 100644 index 0000000000..ffd1b4c72e --- /dev/null +++ b/content/bn/docs/images/ingress.svg @@ -0,0 +1 @@ +
cluster
Ingress-managed
load balancer
routing rule
Ingress
Pod
Service
Pod
client
diff --git a/content/bn/docs/images/ingressFanOut.svg b/content/bn/docs/images/ingressFanOut.svg new file mode 100644 index 0000000000..d65422c663 --- /dev/null +++ b/content/bn/docs/images/ingressFanOut.svg @@ -0,0 +1 @@ +
cluster
Ingress-managed
load balancer
/foo
/bar
Ingress, 178.91.123.132
Pod
Service service1:4200
Pod
Pod
Service service2:8080
Pod
client
diff --git a/content/bn/docs/images/ingressNameBased.svg b/content/bn/docs/images/ingressNameBased.svg new file mode 100644 index 0000000000..51a355d459 --- /dev/null +++ b/content/bn/docs/images/ingressNameBased.svg @@ -0,0 +1 @@ +
cluster
Ingress-managed
load balancer
Host: foo.bar.com
Host: bar.foo.com
Ingress, 178.91.123.132
Pod
Service service1:80
Pod
Pod
Service service2:80
Pod
client
diff --git a/content/bn/docs/images/kubernetes-cluster-network.svg b/content/bn/docs/images/kubernetes-cluster-network.svg new file mode 100644 index 0000000000..03add4e256 --- /dev/null +++ b/content/bn/docs/images/kubernetes-cluster-network.svg @@ -0,0 +1 @@ + diff --git a/content/bn/docs/images/podSchedulingGates.svg b/content/bn/docs/images/podSchedulingGates.svg new file mode 100644 index 0000000000..2d08f823dd --- /dev/null +++ b/content/bn/docs/images/podSchedulingGates.svg @@ -0,0 +1 @@ +
scheduling gate removed
no
yes
pod created
pod scheduling gated
pod scheduling ready
pod running
empty scheduling gates?
diff --git a/content/bn/docs/images/tutor-service-nodePort-fig01.svg b/content/bn/docs/images/tutor-service-nodePort-fig01.svg new file mode 100644 index 0000000000..b84ebb6f99 --- /dev/null +++ b/content/bn/docs/images/tutor-service-nodePort-fig01.svg @@ -0,0 +1 @@ +
SNAT
SNAT
client
Node 2
Node 1
Endpoint
diff --git a/content/bn/docs/images/tutor-service-nodePort-fig02.svg b/content/bn/docs/images/tutor-service-nodePort-fig02.svg new file mode 100644 index 0000000000..7d084b8597 --- /dev/null +++ b/content/bn/docs/images/tutor-service-nodePort-fig02.svg @@ -0,0 +1 @@ +
client
Node 1
Node 2
endpoint
diff --git a/content/bn/docs/reference/glossary/annotation.md b/content/bn/docs/reference/glossary/annotation.md new file mode 100644 index 0000000000..b1e073e6bb --- /dev/null +++ b/content/bn/docs/reference/glossary/annotation.md @@ -0,0 +1,17 @@ +--- +title: এনোটেশন +id: annotation +date: 2018-04-12 +full_link: /docs/concepts/overview/working-with-objects/annotations +short_description: > + একটি কী-ভ্যালু(key-value) জোড় যা অবজেক্টের সাথে ইচ্ছামত অ-শনাক্তকারী মেটাডেটা সংযুক্ত করতে ব্যবহৃত হয়। + +aka: +tags: +- fundamental +--- +একটি কী-ভ্যালু(key-value) জোড় যা অবজেক্টের সাথে ইচ্ছামত অ-শনাক্তকারী মেটাডেটা সংযুক্ত করতে ব্যবহৃত হয়। + + + +এনোটেশনের মেটাডেটা ছোট অথবা বড়, বিন্যাসিত বা অবিন্যাসিত হতে পারে, এবং এটিতে {{< glossary_tooltip text="লেবেল" term_id="label" >}} দ্বারা অনুমোদিত নয় এমন ক্যারেক্টার থাকতে পারে। টুল এবং লাইব্রেরির মতো ক্লায়েন্ট এই মেটাডেটা পুনরুদ্ধার করতে পারে। diff --git a/content/bn/docs/reference/glossary/app-container.md b/content/bn/docs/reference/glossary/app-container.md new file mode 100644 index 0000000000..4f31f513e5 --- /dev/null +++ b/content/bn/docs/reference/glossary/app-container.md @@ -0,0 +1,18 @@ +--- +title: অ্যাপ কন্টেইনার +id: app-container +date: 2019-02-12 +full_link: +short_description: > + কোনো ওয়ার্কলোডের একটি অংশ চালানোর জন্য ব্যবহৃত কন্টেইনার। init কন্টেইনারের সাথে তুলনা করুন। + +aka: +tags: +- workload +--- +অ্যাপ্লিকেশন কন্টেইনার (অথবা অ্যাপ কন্টেইনার) হল একটি {{< glossary_tooltip text="পড" term_id="pod" >}}-এর মধ্যে থাকা {{< glossary_tooltip text="কন্টেইনার" term_id="container" >}}গুলি, যা যেকোনো {{< glossary_tooltip text="ইনিশিয়ালাইজেশন কন্টেইনার" term_id="init-container" >}} সম্পন্ন হওয়ার পর চালু হয়। + + + +একটি ইনিট কন্টেইনার আপনাকে ইনিশিয়ালাইজেশনের বিবরণ পৃথক করতে দেয় যা সার্বিকভাবে {{< glossary_tooltip text="ওয়ার্কলোড" term_id="workload" >}} এর জন্য গুরুত্বপূর্ণ, এবং যা অ্যাপ্লিকেশন কন্টেইনার চালু হওয়ার পরে চালানোর প্রয়োজন নেই। +যদি একটি পডে কোনো ইনিট কন্টেইনার কনফিগার করা না হয়, তবে সেই পডের সব কন্টেইনারই অ্যাপ কন্টেইনার হয়। diff --git a/content/bn/docs/reference/glossary/configmap.md b/content/bn/docs/reference/glossary/configmap.md new file mode 100644 index 0000000000..8d542977ec --- /dev/null +++ b/content/bn/docs/reference/glossary/configmap.md @@ -0,0 +1,20 @@ +--- +title: কনফিগম্যাপ (ConfigMap) +id: configmap +date: 2018-04-12 +full_link: /bn/docs/concepts/configuration/configmap/ +short_description: > + একটি API অবজেক্ট কী-ভ্যালু (key-value) জোড়ায় অ-গোপনীয় ডেটা সংরক্ষণ করতে ব্যবহৃত হয়। এটি এনভায়রনমেন্ট ভেরিয়েবল , কমান্ড-লাইন আর্গুমেন্ট বা একটি ভলিউমে কনফিগারেশন ফাইল হিসাবে ব্যবহার করা যেতে পারে। + +aka: +tags: +- core-object +--- +একটি API অবজেক্ট কী-ভ্যালু(key-value) জোড়ায় অ-গোপনীয় ডেটা সংরক্ষণ করতে ব্যবহৃত হয়। +{{< glossary_tooltip text="পডগুলো" term_id="pod" >}} কনফিগম্যাপকে এনভায়রনমেন্ট ভেরিয়েবল, +কমান্ড-লাইন আর্গুমেন্ট বা {{< glossary_tooltip text="ভলিউমে" term_id="volume" >}} +কনফিগারেশন ফাইল হিসেবে ব্যবহার করতে পারে। + + + +একটি কনফিগম্যাপ (ConfigMap) আপনাকে আপনার {{< glossary_tooltip text="কন্টেইনার ইমেজ" term_id="image" >}} থেকে এনভায়রনমেন্ট-নির্দিষ্ট কনফিগারেশন দ্বিগুণ করার অনুমতি দেয়, যাতে আপনার অ্যাপ্লিকেশনগুলি সহজেই পোর্টেবল হয়৷ diff --git a/content/bn/docs/reference/glossary/control-plane.md b/content/bn/docs/reference/glossary/control-plane.md new file mode 100644 index 0000000000..8d6d0cc85e --- /dev/null +++ b/content/bn/docs/reference/glossary/control-plane.md @@ -0,0 +1,25 @@ +--- +title: কন্ট্রোল প্লেন +id: control-plane +date: 2019-05-12 +full_link: +short_description: > + কন্টেইনার অর্কেস্ট্রেশন লেয়ার যা কন্টেইনারের জীবনচক্র সংজ্ঞায়িত, ডেপ্লয় এবং পরিচালনা করতে API এবং ইন্টারফেসগুলিকে প্রকাশ করে। + +aka: +tags: +- fundamental +--- +কন্টেইনার অর্কেস্ট্রেশন লেয়ার যা কন্টেইনারের জীবনচক্র সংজ্ঞায়িত, ডেপ্লয় এবং পরিচালনা করতে API এবং ইন্টারফেসগুলিকে প্রকাশ করে। + + + + এই লেয়ারটি বিভিন্ন উপাদান দ্বারা গঠিত, যেমন (কিন্তু এতে সীমাবদ্ধ নয়): + + * {{< glossary_tooltip text="etcd" term_id="etcd" >}} + * {{< glossary_tooltip text="API সার্ভার" term_id="kube-apiserver" >}} + * {{< glossary_tooltip text="শিডিউলার" term_id="kube-scheduler" >}} + * {{< glossary_tooltip text="কন্ট্রোলার ম্যানেজারr" term_id="kube-controller-manager" >}} + * {{< glossary_tooltip text="ক্লাউড কন্ট্রোলার ম্যানেজার" term_id="cloud-controller-manager" >}} + + এই উপাদানগুলি ট্রাডিশনাল অপারেটিং সিস্টেম সার্ভিস (daemons) বা কন্টেইনার হিসাবে চালানো যেতে পারে। এই উপাদানগুলি চালানো হোস্টগুলিকে ঐতিহাসিকভাবে {{< glossary_tooltip text="masters" term_id="master" >}} বলা হত। diff --git a/content/bn/docs/reference/glossary/daemonset.md b/content/bn/docs/reference/glossary/daemonset.md new file mode 100644 index 0000000000..592b08d3d9 --- /dev/null +++ b/content/bn/docs/reference/glossary/daemonset.md @@ -0,0 +1,19 @@ +--- +title: ডেমনসেট +id: daemonset +date: 2018-04-12 +full_link: /bn/docs/concepts/workloads/controllers/daemonset +short_description: > + একটি পডের একটি কপি একটি ক্লাস্টারে নোডগুলির একটি সেট জুড়ে চলছে তা নিশ্চিত করে৷ + +aka: +tags: +- fundamental +- core-object +- workload +--- + একটি {{< glossary_tooltip text="পডের" term_id="pod" >}} একটি কপি একটি {{< glossary_tooltip text="ক্লাস্টারে" term_id="cluster" >}} নোডগুলির একটি সেট জুড়ে চলছে তা নিশ্চিত করে৷ + + + +লগ কালেক্টর এবং মনিটরিং এজেন্টের মতো সিস্টেম ডেমন(daemon) ডেপ্লয় করতে ব্যবহৃত হয় যা সাধারণত প্রতিটি {{< glossary_tooltip term_id="node" >}}-এ চলতে হবে। diff --git a/content/bn/docs/reference/glossary/ephemeral-container.md b/content/bn/docs/reference/glossary/ephemeral-container.md new file mode 100644 index 0000000000..8b15c76c76 --- /dev/null +++ b/content/bn/docs/reference/glossary/ephemeral-container.md @@ -0,0 +1,19 @@ +--- +title: ইফেমেরাল কন্টেইনার(Ephemeral Container) +id: ephemeral-container +date: 2019-08-26 +full_link: /bn/docs/concepts/workloads/pods/ephemeral-containers/ +short_description: > + এক ধরনের কন্টেইনার যা আপনি অস্থায়ীভাবে একটি পডের ভিতরে রান করতে পারেন। + +aka: +tags: +- fundamental +--- +এক ধরনের {{< glossary_tooltip term_id="container" >}} যা আপনি অস্থায়ীভাবে একটি {{< glossary_tooltip term_id="pod" >}}এর ভিতরে রান করতে পারেন। + + + +আপনি যদি সমস্যা নিয়ে চলমান একটি পড তদন্ত করতে চান তবে আপনি সেই পডে একটি অস্থায়ী কন্টেইনার যোগ করতে পারেন এবং ডায়াগনস্টিকস চালাতে পারেন। ইফেমেরাল কন্টেইনারগুলির কোনও রিসোর্স বা শিডিউলিং গ্যারান্টি নেই এবং ওয়ার্কলোড এর কোনও অংশ চালানোর জন্য সেগুলি আপনার ব্যবহার করা উচিত নয়। + +ইফেমেরাল কনটেইনার {{< glossary_tooltip text="স্ট্যাটিক পড" term_id="static-pod" >}} দ্বারা সাপোর্টেড নয়৷ diff --git a/content/bn/docs/reference/glossary/kube-apiserver.md b/content/bn/docs/reference/glossary/kube-apiserver.md new file mode 100644 index 0000000000..5d0a74c8df --- /dev/null +++ b/content/bn/docs/reference/glossary/kube-apiserver.md @@ -0,0 +1,23 @@ +--- +title: API সার্ভার +id: kube-apiserver +date: 2018-04-12 +full_link: /bn/docs/concepts/overview/components/#kube-apiserver +short_description: > + কন্ট্রোল প্লেন উপাদান যা কুবারনেটিস API পরিবেশন করে। + +aka: +- kube-apiserver +tags: +- architecture +- fundamental +--- + API সার্ভার হলো কুবারনেটিস {{< glossary_tooltip text="কন্ট্রোল প্লেন" term_id="control-plane" >}} +এর একটি উপাদান যা কুবারনেটিস API কে প্রকাশ করে ৷ +API সার্ভার কুবারনেটিস কন্ট্রোল প্লেনের ফ্রন্ট এন্ড হিসেবে কাজ করে। + + + +কুবারনেটিস API সার্ভারের প্রধান বাস্তবায়ন হলো [kube-apiserver](/docs/reference/generated/kube-apiserver/)। +kube-apiserver অনুভূমিকভাবে স্কেল করার জন্য ডিজাইন করা হয়েছে—অর্থাৎ, এটি আরও বেশি উদাহরণ ডেপ্লয় করে স্কেল করে। +আপনি একাধিক kube-apiserver উদাহরণ চালাতে পারেন এবং সেই উদাহরণগুলির মধ্যে ট্রাফিক ব্যালেন্স করতে পারেন। diff --git a/content/bn/docs/reference/glossary/mirror-pod.md b/content/bn/docs/reference/glossary/mirror-pod.md new file mode 100644 index 0000000000..56ba89ba38 --- /dev/null +++ b/content/bn/docs/reference/glossary/mirror-pod.md @@ -0,0 +1,22 @@ +--- +title: মিরর-পড +id: mirror-pod +date: 2019-08-06 +short_description: > + API সার্ভারের একটি অবজেক্ট যা একটি kubelet এ একটি স্ট্যাটিক পড ট্র্যাক করে। + +aka: +tags: +- fundamental +--- + +একটি {{< glossary_tooltip text="পড" term_id="pod" >}} অবজেক্ট যা একটি {{< glossary_tooltip text="kubelet" term_id="kubelet" >}} +ব্যবহার করে {{< glossary_tooltip text="স্ট্যাটিক পড" term_id="static-pod" >}} উপস্থাপন করতে । + + + +যখন kubelet তার কনফিগারেশনে একটি স্ট্যাটিক পড খুঁজে পায়, তখন এটি স্বয়ংক্রিয়ভাবে +এটির জন্য কুবারনেটিস API সার্ভারে একটি পড অবজেক্ট তৈরি করার চেষ্টা করে। +এর মানে হল যে পডটি API সার্ভারে দৃশ্যমান হবে, কিন্তু সেখান থেকে কন্ট্রোল করা যাবে না। + +(উদাহরণস্বরূপ, একটি মিরর পড অপসারণ করা kubelet ডেমন(daemon) এটি চালানো বন্ধ করবে না)। diff --git a/content/bn/docs/reference/glossary/node.md b/content/bn/docs/reference/glossary/node.md new file mode 100644 index 0000000000..6d7b9f87d1 --- /dev/null +++ b/content/bn/docs/reference/glossary/node.md @@ -0,0 +1,19 @@ +--- +title: নোড +id: node +date: 2018-04-12 +full_link: /docs/concepts/architecture/nodes/ +short_description: > + নোড হলো কুবারনেটিসে একটি ওয়ার্কার মেশিন। + +aka: +tags: +- fundamental +--- +নোড হলো কুবারনেটিসে একটি ওয়ার্কার মেশিন। + + + +একটি ওয়ার্কার নোড একটি ভার্চুয়াল মেশিন বা ফিজিক্যাল মেশিন হতে পারে, একটি ক্লাস্টারের উপর নির্ভর করে । এটির {{< glossary_tooltip text="পডগুলোকে" term_id="pod" >}} সহজে চালানোর জন্য প্রয়োজনীয় সকল লোকাল ডেমন(daemons) বা সার্ভিস আছে এবং এটি কন্ট্রোল প্লেন দ্বারা পরিচালিত হয়। একটি নোডের ডেমনগুলোতে থাকে {{< glossary_tooltip text="kubelet" term_id="kubelet" >}}, {{< glossary_tooltip text="kube-proxy" term_id="kube-proxy" >}}, এবং একটি কন্টেইনার রানটাইম যা {{< glossary_tooltip text="CRI" term_id="cri" >}} সম্পাদন করে যেমন {{< glossary_tooltip term_id="docker" >}} + +প্রাথমিক কুবারনেটিস সংস্করণে, নোডগুলি "Minions" হিসেবে পরিচিত ছিল। diff --git a/content/bn/docs/reference/glossary/object.md b/content/bn/docs/reference/glossary/object.md new file mode 100644 index 0000000000..2ba25d021b --- /dev/null +++ b/content/bn/docs/reference/glossary/object.md @@ -0,0 +1,21 @@ +--- +title: অবজেক্ট +id: object +date: 2020-10-12 +full_link: /bn/docs/concepts/overview/working-with-objects/#kubernetes-objects +short_description: > + কুবারনেটিস সিস্টেমের একটি সত্তা, আপনার ক্লাস্টারের অবস্থার অংশ প্রতিনিধিত্ব করে। +aka: +tags: +- fundamental +--- + কুবারনেটিস সিস্টেমের একটি সত্তা। কুবারনেটিস API আপনার ক্লাস্টারের অবস্থা উপস্থাপন করতে +এই সত্তাগুলি ব্যবহার করে। + + + +একটি কুবারনেটিস অবজেক্ট সাধারণত একটি "record of intent" - একবার আপনি অবজেক্টটি তৈরি করলে, +কুবারনেটিস {{< glossary_tooltip text="কন্ট্রোল প্লেনটি " term_id="control-plane" >}} +এটির প্রতিনিধিত্ব করে এমন আইটেমটি আসলে বিদ্যমান আছে কিনা তা নিশ্চিত করতে ক্রমাগত কাজ করে। +একটি অবজেক্ট তৈরি করে, আপনি কুবারনেটিস সিস্টেমকে কার্যকরভাবে বলছেন যে আপনি আপনার ক্লাস্টারের +ওয়ার্কলোডের সেই অংশটি কেমন দেখতে চান; এটি আপনার ক্লাস্টারের কাঙ্ক্ষিত অবস্থা। diff --git a/content/bn/docs/reference/glossary/replication-controller.md b/content/bn/docs/reference/glossary/replication-controller.md new file mode 100644 index 0000000000..0e542650a2 --- /dev/null +++ b/content/bn/docs/reference/glossary/replication-controller.md @@ -0,0 +1,25 @@ +--- +title: ReplicationController +id: replication-controller +date: 2018-04-12 +full_link: +short_description: > + একটি (ডেপ্রিসিয়েটেড) API অবজেক্ট যা একটি প্রতিলিপিকৃত অ্যাপ্লিকেশন পরিচালনা করে। + +aka: +tags: +- workload +- core-object +--- + একটি ওয়ার্কলোডের রিসোর্স যা একটি প্রতিলিপিকৃত অ্যাপ্লিকেশন পরিচালনা করে, +নিশ্চিত করে যে একটি {{< glossary_tooltip text="পড" term_id="pod" >}} এর একটি নির্দিষ্ট সংখ্যক দৃষ্টান্ত চলছে ৷ + + + +কন্ট্রোল প্লেন নিশ্চিত করে যে নির্দিষ্ট সংখ্যক পড চলছে, এমনকি যদি কিছু পড ব্যর্থ হয়, +যদি আপনি ম্যানুয়ালি পড মুছে ফেলেন, বা যদি অনেকগুলি ভুল করে শুরু করা হয়। + +{{< note >}} +ReplicationController ডেপ্রিসিয়েটেড করা হয়েছে। দেখুন +{{< glossary_tooltip text="ডিপ্লয়মেন্ট" term_id="deployment" >}}, যা একই রকম। +{{< /note >}} diff --git a/content/bn/docs/reference/glossary/secret.md b/content/bn/docs/reference/glossary/secret.md new file mode 100644 index 0000000000..f3a94ee75b --- /dev/null +++ b/content/bn/docs/reference/glossary/secret.md @@ -0,0 +1,27 @@ +--- +title: সিক্রেট +id: secret +date: 2018-04-12 +full_link: /bn/docs/concepts/configuration/secret/ +short_description: > + সংবেদনশীল তথ্য, যেমন পাসওয়ার্ড, OAuth টোকেন এবং ssh কী(keys) গুলো সংরক্ষণ করে। + +aka: +tags: +- core-object +- security +--- +সংবেদনশীল তথ্য, যেমন পাসওয়ার্ড, OAuth টোকেন এবং ssh কী(keys) গুলো সংরক্ষণ করে। + + + +সিক্রেট গুলো আপনাকে কীভাবে সংবেদনশীল তথ্য ব্যবহার করা হয় তার উপর আরও নিয়ন্ত্রণ দেয় +এবং দুর্ঘটনাজনিত এক্সপোজারের ঝুঁকি হ্রাস করে। সিক্রেট ভ্যালুগুলি base64 স্ট্রিং হিসাবে এনকোড +করা হয় এবং ডিফল্টরূপে এনক্রিপ্ট না করে সংরক্ষণ করা হয় তবে +[বাকি সময়ে এনক্রিপ্ট](/bn/docs/tasks/administer-cluster/encrypt-data/#ensure-all-secrets-are-encrypted) করার জন্য কনফিগার করা যেতে পারে। + +একটি {{< glossary_tooltip text="পড" term_id="pod" >}} বিভিন্ন উপায়ে সিক্রেটকে উল্লেখ করতে পারে, +যেমন একটি ভলিউম মাউন্ট বা এনভায়রনমেন্ট ভেরিয়েবল হিসাবে। +সিক্রেটগুলি গোপনীয় ডেটার জন্য ডিজাইন করা হয়েছে এবং +[কনফিগম্যাপগুলি](/bn/docs/tasks/configure-pod-container/configure-pod-configmap/) +অ-গোপনীয় ডেটার জন্য ডিজাইন করা হয়েছে ৷ diff --git a/content/bn/docs/reference/glossary/service-account.md b/content/bn/docs/reference/glossary/service-account.md new file mode 100644 index 0000000000..b85c8d2b9b --- /dev/null +++ b/content/bn/docs/reference/glossary/service-account.md @@ -0,0 +1,19 @@ +--- +title: সার্ভিস অ্যাকাউন্ট +id: service-account +date: 2018-04-12 +full_link: /docs/tasks/configure-pod-container/configure-service-account/ +short_description: > + পডে চলমান কার্যক্রমের জন্য একটি পরিচিতি সরবরাহ করে। + +aka: +tags: +- fundamental +- core-object +--- + +{{< glossary_tooltip text="পডে" term_id="pod" >}} চলমান কার্যক্রমের জন্য একটি পরিচিতি সরবরাহ করে। + + + +যখন পডে ভেতরের প্রক্রিয়াগুলি ক্লাস্টার অ্যাক্সেস করে, তাদেরকে প্রাসঙ্গিক সার্ভিস অ্যাকাউন্ট হিসেবে API সার্ভার দ্বারা অথেনটিকেট(authenticate) করা হয়, উদাহরণস্বরূপ, `default`। যদি আপনি সার্ভিস অ্যাকাউন্ট নির্দিষ্ট না করে একটি পড তৈরি করেন, তাহলে স্বয়ংক্রিয়ভাবে একই {{< glossary_tooltip text="নেমস্পেস" term_id="namespace" >}} এ ডিফল্ট সার্ভিস অ্যাকাউন্টটি নির্ধারন করে দেওয়া হয়। diff --git a/content/bn/docs/reference/glossary/sidecar-containers.md b/content/bn/docs/reference/glossary/sidecar-container.md similarity index 100% rename from content/bn/docs/reference/glossary/sidecar-containers.md rename to content/bn/docs/reference/glossary/sidecar-container.md diff --git a/content/bn/docs/reference/glossary/workload.md b/content/bn/docs/reference/glossary/workload.md new file mode 100644 index 0000000000..7dd37c9a33 --- /dev/null +++ b/content/bn/docs/reference/glossary/workload.md @@ -0,0 +1,22 @@ +--- +title: ওয়ার্কলোড +id: workload +date: 2019-02-13 +full_link: /bn/docs/concepts/workloads/ +short_description: > + ওয়ার্কলোড হলো কুবারনেটিস-এ চলমান একটি অ্যাপ্লিকেশন। + +aka: +tags: +- fundamental +--- + ওয়ার্কলোড হলো কুবারনেটিস-এ চলমান একটি অ্যাপ্লিকেশন। + + + +বিভিন্ন কোর অবজেক্ট যা ওয়ার্কলোডের বিভিন্ন ধরণ বা অংশগুলির প্রতিনিধিত্ব করে তাদের মধ্যে ডেমনসেট(DaemonSet), +ডিপ্লয়মেন্ট, জব, রেপ্লিকাসেট(ReplicaSet), এবং স্টেটফুলসেট অবজেক্ট(StatefulSet objects) অন্তর্ভুক্ত। + +উদাহরণস্বরূপ, একটি ওয়ার্কলোড যেখানে একটি ওয়েব সার্ভার এবং একটি ডেটাবেস রয়েছে +তারা ডেটাবেসটি একটি {{< glossary_tooltip term_id="StatefulSet" >}} এ +এবং ওয়েব সার্ভারটি একটি {{< glossary_tooltip term_id="Deployment" >}} এ চালাতে পারে। diff --git a/content/bn/docs/setup/learning-environment/_index.md b/content/bn/docs/setup/learning-environment/_index.md index 806bf7ed74..6e5a8a25b6 100644 --- a/content/bn/docs/setup/learning-environment/_index.md +++ b/content/bn/docs/setup/learning-environment/_index.md @@ -1,5 +1,5 @@ --- -title: শিক্ষার পরিবেশ +title: লার্নিং এনভায়রনমেন্ট weight: 20 --- diff --git a/content/bn/docs/setup/production-environment/_index.md b/content/bn/docs/setup/production-environment/_index.md index e072e1c2b7..3453b38a73 100644 --- a/content/bn/docs/setup/production-environment/_index.md +++ b/content/bn/docs/setup/production-environment/_index.md @@ -1,5 +1,5 @@ --- -title: "প্রোডাকশন এনভায়রনমেন্ট (Production Environment)" +title: "প্রোডাকশন এনভায়রনমেন্ট " description: একটি প্রোডাকশন-কোয়ালিটির কুবারনেটিস ক্লাস্টার তৈরি করুন weight: 30 no_list: true diff --git a/content/bn/docs/setup/production-environment/tools/_index.md b/content/bn/docs/setup/production-environment/tools/_index.md index c5a1a4dc8e..d274fb6da7 100644 --- a/content/bn/docs/setup/production-environment/tools/_index.md +++ b/content/bn/docs/setup/production-environment/tools/_index.md @@ -1,5 +1,5 @@ --- -title: স্থাপনার সরঞ্জাম সহ কুবারনেটিস ইনস্টল করা +title: ডিপ্লয়মেন্টের টুল সহ কুবারনেটিস ইনস্টল করা weight: 30 no_list: true --- @@ -19,4 +19,4 @@ no_list: true [ইনভেন্টরি](https://github.com/kubernetes-sigs/kubespray/blob/master/docs/ansible.md#inventory), প্রভিশনিং টুলস, এবং জেনেরিক ওস/কুবারনেটিস ক্লাস্টার কনফিগারেশন ব্যবস্থাপনা কাজের জন্য ডোমেন জ্ঞান । আপনি স্ল্যাক চ্যানেলে সম্প্রদায়ের সাথে যোগাযোগ করতে পারেন - [#kubespray](https://kubernetes.slack.com/messages/kubespray/)। \ No newline at end of file + [#kubespray](https://kubernetes.slack.com/messages/kubespray/)। diff --git a/content/bn/docs/setup/production-environment/turnkey-solutions.md b/content/bn/docs/setup/production-environment/turnkey-solutions.md index 7e8ff407f2..310c1abe57 100644 --- a/content/bn/docs/setup/production-environment/turnkey-solutions.md +++ b/content/bn/docs/setup/production-environment/turnkey-solutions.md @@ -1,5 +1,5 @@ --- -title: টার্নকি ক্লাউড সলিউশন(Turnkey Cloud Solutions) +title: Turnkey ক্লাউড সলিউশন content_type: concept weight: 40 --- @@ -11,4 +11,4 @@ weight: 40 -{{< cncf-landscape helpers=true category="certified-kubernetes-hosted" >}} +{{< cncf-landscape helpers=true category="platform--certified-kubernetes-hosted" >}} diff --git a/content/bn/docs/tasks/_index.md b/content/bn/docs/tasks/_index.md index 1b4379b881..8ab034e3ae 100644 --- a/content/bn/docs/tasks/_index.md +++ b/content/bn/docs/tasks/_index.md @@ -1,14 +1,15 @@ --- -title: কাজ +title: টাস্ক main_menu: true weight: 50 -content_type: ধারণা +content_type: concept --- কুবারনেটিস ডকুমেন্টেশনের এই বিভাগে এমন পৃষ্ঠা রয়েছে -যা দেখায় কিভাবে পৃথক কাজ করতে হয়। সাধারণত পদক্ষেপের একটি সংক্ষিপ্ত ক্রম দিয়ে একটি টাস্ক পেজ দেখায় কিভাবে একটি একক জিনিস করতে হয়। +যা দেখায় কিভাবে পৃথক টাস্ক করতে হয়। সাধারণত পদক্ষেপের একটি +সংক্ষিপ্ত ক্রম দিয়ে একটি টাস্ক পেজ দেখায় কিভাবে একটি একক জিনিস করতে হয়। আপনি যদি একটি টাস্ক পৃষ্ঠা লিখতে চান, দেখুন কীভাবে -[একটি ডকুমেন্টেশন পুল অনুরোধ তৈরি করা](/docs/contribute/new-content/open-a-pr/) যায়। +[একটি ডকুমেন্টেশন পুল রিকোয়েস্ট তৈরি করা](/docs/contribute/new-content/open-a-pr/) যায়। diff --git a/content/bn/docs/tutorials/configuration/configure-java-microservice/_index.md b/content/bn/docs/tutorials/configuration/configure-java-microservice/_index.md new file mode 100644 index 0000000000..6614577d2d --- /dev/null +++ b/content/bn/docs/tutorials/configuration/configure-java-microservice/_index.md @@ -0,0 +1,4 @@ +--- +title: "উদাহরণ: একটি জাভা মাইক্রোসার্ভিস কনফিগার করা" +weight: 10 +--- diff --git a/content/bn/docs/tutorials/hello-minikube.md b/content/bn/docs/tutorials/hello-minikube.md index 8a09bcfe2a..8efd6bd0ef 100644 --- a/content/bn/docs/tutorials/hello-minikube.md +++ b/content/bn/docs/tutorials/hello-minikube.md @@ -52,7 +52,7 @@ card: {{< note >}} আপনি যখন `minikube dashboard` কমান্ড ইস্যু করেন, তখন ড্যাশবোর্ড অ্যাড-অন এবং প্রক্সি সক্রিয় হয় এবং প্রক্সিতে সংযোগ করার জন্য একটি ডিফল্ট ওয়েব ব্রাউজার উইন্ডো খোলে। -আপনি ড্যাশবোর্ড থেকে কুবারনেটিস সংস্থান তৈরি করতে পারেন যেমন স্থাপনা বা পরিষেবা। +আপনি ড্যাশবোর্ড থেকে কুবারনেটিস সংস্থান তৈরি করতে পারেন যেমন ডিপ্লয়মেন্ট বা সার্ভিস। আপনি যদি `root` এনভায়রনমেন্টে কমান্ড নির্বাহ করছেন, তাহলে [URL ব্যবহার করে ড্যাশবোর্ড অ্যাক্সেস করা] (#open-dashboard-with-url) পড়ুন। @@ -80,7 +80,7 @@ minikube dashboard --url [Deployment](/bn/docs/concepts/workloads/controllers/deployment/) হলো পডের একটি স্বাস্থ্য পরীক্ষা করে এবং পডের ধারকটি বন্ধ হয়ে গেলে পুনরায় চালু করে। পড তৈরি এবং স্কেলিং পরিচালনা করার উপায় হিসাবে স্থাপনের সুপারিশ করা হয়। -1. পড পরিচালনা ও স্থাপনা তৈরি করতে `kubectl create` কমান্ডটি চালান। এই পডগুলি প্রদত্ত Docker ইমেজ এর উপর ভিত্তি করে কন্টেইনার চালায়। +1. পড পরিচালনা ও ডিপ্লয়মেন্ট তৈরি করতে `kubectl create` কমান্ডটি চালান। এই পডগুলি প্রদত্ত Docker ইমেজ এর উপর ভিত্তি করে কন্টেইনার চালায়। ```shell kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4 diff --git a/content/bn/docs/tutorials/kubernetes-basics/_index.html b/content/bn/docs/tutorials/kubernetes-basics/_index.html index 1a6a2753b7..a4c63bb368 100644 --- a/content/bn/docs/tutorials/kubernetes-basics/_index.html +++ b/content/bn/docs/tutorials/kubernetes-basics/_index.html @@ -32,7 +32,7 @@ card:
  • একটি নতুন সফ্টওয়্যার সংস্করণ দিয়ে কন্টেইনারাইজড অ্যাপ্লিকেশন আপডেট করুন।
  • কন্টেইনারাইজড অ্যাপ্লিকেশন ডিবাগ করুন।
  • -

    টিউটোরিয়ালগুলি আপনার ওয়েব ব্রাউজারে একটি ভার্চুয়াল টার্মিনাল চালানোর জন্য Katacoda ব্যবহার করে যা Minikube চালায়, কুবারনেটের একটি ছোট আকারের স্থানীয় স্থাপনা যা যেকোনো জায়গায় চলতে পারে। কোন সফ্টওয়্যার ইনস্টল বা কিছু কনফিগার করার কোন প্রয়োজন নেই; প্রতিটি ইন্টারেক্টিভ টিউটোরিয়াল সরাসরি আপনার ওয়েব ব্রাউজার থেকে চলে।

    +

    টিউটোরিয়ালগুলি আপনার ওয়েব ব্রাউজারে একটি ভার্চুয়াল টার্মিনাল চালানোর জন্য Katacoda ব্যবহার করে যা Minikube চালায়, কুবারনেটের একটি ছোট আকারের স্থানীয় ডিপ্লয়মেন্ট যা যেকোনো জায়গায় চলতে পারে। কোন সফ্টওয়্যার ইনস্টল বা কিছু কনফিগার করার কোন প্রয়োজন নেই; প্রতিটি ইন্টারেক্টিভ টিউটোরিয়াল সরাসরি আপনার ওয়েব ব্রাউজার থেকে চলে।

    diff --git a/content/bn/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro.html b/content/bn/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro.html index 62ae23574f..4ec583db41 100644 --- a/content/bn/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro.html +++ b/content/bn/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro.html @@ -29,7 +29,7 @@ weight: 10

    Kubernetes Clusters

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

    >একটি কুবারনেটিস ক্লাস্টার দুটি ধরণের সংস্থান নিয়ে গঠিত: diff --git a/content/bn/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro.html b/content/bn/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro.html index 9f7806e526..dead5cc789 100644 --- a/content/bn/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro.html +++ b/content/bn/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro.html @@ -1,5 +1,5 @@ --- -title: kubectl ব্যবহার করে একটি ডিপ্লোয়মেন্ট তৈরি করা +title: kubectl ব্যবহার করে একটি ডিপ্লয়মেন্ট তৈরি করা weight: 10 --- @@ -20,15 +20,15 @@ weight: 10

    উদ্দেশ্য

      -
    • অ্যাপ্লিকেশন ডিপ্লোয়মেন্ট সম্পর্কে জানুন ।
    • +
    • অ্যাপ্লিকেশন ডিপ্লয়মেন্ট সম্পর্কে জানুন ।
    • kubectl দিয়ে কুবারনেটিসে আপনার প্রথম অ্যাপ স্থাপন করুন।
    -

    কুবারনেটিস ডিপ্লোয়মেন্ট

    +

    কুবারনেটিস ডিপ্লয়মেন্ট

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

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

    একবার অ্যাপ্লিকেশন দৃষ্টান্ত তৈরি হয়ে গেলে, একটি কুবারনেটস ডিপ্লয়মেন্ট কন্ট্রোলার ক্রমাগত সেই দৃষ্টান্তগুলি পর্যবেক্ষণ করে। যদি কোনো দৃষ্টান্ত (instance) হোস্টিং নোড নিচে চলে যায় বা মুছে ফেলা হয়, তাহলে ডিপ্লয়মেন্ট কন্ট্রোলার ক্লাস্টারের অন্য নোডের দৃষ্টান্তের (instance) সাথে প্রতিস্থাপন করে। এটি মেশিনের ব্যর্থতা বা রক্ষণাবেক্ষণের জন্য একটি স্ব-নিরাময় প্রক্রিয়া সরবরাহ করে।

    @@ -70,9 +70,9 @@ weight: 10
    -

    আপনি কুবারনেটিস কমান্ড লাইন ইন্টারফেস,
    Kubectl
    ব্যবহার করে একটি ডিপ্লোয় তৈরি এবং পরিচালনা করতে পারেন। Kubectl ক্লাস্টারের সাথে ইন্টারঅ্যাক্ট করতে কুবারনেটিস এপিআই (API) ব্যবহার করে। এই মডিউলে, আপনি কুবারনেটস ক্লাস্টারে আপনার অ্যাপ্লিকেশনগুলি চালানোর জন্য ডিপ্লোয়মেন্ট তৈরি করার জন্য প্রয়োজনীয় সবচেয়ে সাধারণ Kubectl কমান্ডগুলি শিখবেন ।

    +

    আপনি কুবারনেটিস কমান্ড লাইন ইন্টারফেস,
    Kubectl
    ব্যবহার করে একটি ডিপ্লোয় তৈরি এবং পরিচালনা করতে পারেন। Kubectl ক্লাস্টারের সাথে ইন্টারঅ্যাক্ট করতে কুবারনেটিস এপিআই (API) ব্যবহার করে। এই মডিউলে, আপনি কুবারনেটস ক্লাস্টারে আপনার অ্যাপ্লিকেশনগুলি চালানোর জন্য ডিপ্লয়মেন্ট তৈরি করার জন্য প্রয়োজনীয় সবচেয়ে সাধারণ Kubectl কমান্ডগুলি শিখবেন ।

    -

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

    +

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

    @@ -88,7 +88,7 @@ weight: 10

    - আপনার প্রথম স্থাপনার জন্য, আপনি একটি ডকার কন্টেনারে প্যাকেজ করা একটি হ্যালো-নোড অ্যাপ্লিকেশন ব্যবহার করবেন যা সমস্ত অনুরোধগুলিকে প্রতিধ্বনিত করতে NGINX ব্যবহার করে। (যদি আপনি ইতিমধ্যে একটি হ্যালো-নোড অ্যাপ্লিকেশন তৈরি করার এবং একটি কন্টেইনার ব্যবহার করে এটি স্থাপন করার চেষ্টা না করে থাকেন তবে আপনি হ্যালো মিনিকুব টিউটোরিয়াল (Hello Minikube tutorial) থেকে নির্দেশাবলী অনুসরণ করে প্রথমে এটি করতে পারেন)। + আপনার প্রথম ডিপ্লয়মেন্টর জন্য, আপনি একটি ডকার কন্টেনারে প্যাকেজ করা একটি হ্যালো-নোড অ্যাপ্লিকেশন ব্যবহার করবেন যা সমস্ত অনুরোধগুলিকে প্রতিধ্বনিত করতে NGINX ব্যবহার করে। (যদি আপনি ইতিমধ্যে একটি হ্যালো-নোড অ্যাপ্লিকেশন তৈরি করার এবং একটি কন্টেইনার ব্যবহার করে এটি স্থাপন করার চেষ্টা না করে থাকেন তবে আপনি হ্যালো মিনিকুব টিউটোরিয়াল (Hello Minikube tutorial) থেকে নির্দেশাবলী অনুসরণ করে প্রথমে এটি করতে পারেন)।

    এখন যেহেতু আপনি জানেন যে ডিপ্লয়মেন্টগুলি কী, আসুন অনলাইন টিউটোরিয়ালটিতে যাই এবং আমাদের প্রথম অ্যাপটি স্থাপন করি!

    diff --git a/content/bn/docs/tutorials/kubernetes-basics/scale/scale-intro.html b/content/bn/docs/tutorials/kubernetes-basics/scale/scale-intro.html index c6cec53079..d4613e224b 100644 --- a/content/bn/docs/tutorials/kubernetes-basics/scale/scale-intro.html +++ b/content/bn/docs/tutorials/kubernetes-basics/scale/scale-intro.html @@ -25,21 +25,21 @@ weight: 10

    একটি অ্যাপ্লিকেশন স্কেলিং

    -

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

    +

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

    -

    স্কেলিং একটি স্থাপনার প্রতিলিপি সংখ্যা পরিবর্তন করে সম্পন্ন করা হয়

    +

    স্কেলিং একটি ডিপ্লয়মেন্টের প্রতিলিপি সংখ্যা পরিবর্তন করে সম্পন্ন করা হয়

    সারসংক্ষেপ:

      -
    • একটি স্থাপনার স্কেলিং
    • +
    • একটি ডিপ্লয়মেন্টের স্কেলিং

    - আপনি শুরু থেকে kubectl create deployment কমান্ডের --replicas প্যারামিটার ব্যবহার করে একাধিক উদাহরণ সহ একটি স্থাপনা তৈরি করতে পারেন

    + আপনি শুরু থেকে kubectl create deployment কমান্ডের --replicas প্যারামিটার ব্যবহার করে একাধিক উদাহরণ সহ একটি ডিপ্লয়মেন্ট তৈরি করতে পারেন

    @@ -85,14 +85,14 @@ weight: 10
    -

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

    +

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

    -

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

    +

    একটি অ্যাপ্লিকেশনের একাধিক দৃষ্টান্ত চালানোর জন্য তাদের সকলে ট্রাফিক বিতরণ করার একটি উপায় প্রয়োজন। পরিষেবাগুলিতে একটি সমন্বিত লোড-ব্যালেন্সার রয়েছে যা একটি উন্মুক্ত ডিপ্লয়মেন্টের সমস্ত পডগুলিতে নেটওয়ার্ক ট্র্যাফিক বিতরণ করবে। পরিষেবাগুলি কেবলমাত্র উপলভ্য পডগুলিতে ট্র্যাফিক পাঠানো হয়েছে তা নিশ্চিত করার জন্য এন্ডপয়েন্টগুলি ব্যবহার করে ক্রমাগত চলমান পডগুলি পর্যবেক্ষণ করবে।

    -

    একটি স্থাপনায় প্রতিলিপির সংখ্যা পরিবর্তন করে স্কেলিং সম্পন্ন করা হয়।

    +

    একটি ডিপ্লয়মেন্টেয় প্রতিলিপির সংখ্যা পরিবর্তন করে স্কেলিং সম্পন্ন করা হয়।

    diff --git a/content/bn/docs/tutorials/kubernetes-basics/update/update-intro.html b/content/bn/docs/tutorials/kubernetes-basics/update/update-intro.html index 5773282dd0..c0a079002f 100644 --- a/content/bn/docs/tutorials/kubernetes-basics/update/update-intro.html +++ b/content/bn/docs/tutorials/kubernetes-basics/update/update-intro.html @@ -25,7 +25,7 @@ weight: 10

    একটি অ্যাপ্লিকেশন আপডেট করা হচ্ছে

    -

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

    +

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

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

    @@ -39,7 +39,7 @@ weight: 10
    -

    রোলিং আপডেটগুলি নতুনগুলির সাথে পডস দৃষ্টান্তগুলিকে ক্রমবর্ধমানভাবে আপডেট করার মাধ্যমে শূন্য ডাউনটাইম সহ স্থাপনার আপডেটগুলি ঘটতে দেয়৷

    +

    রোলিং আপডেটগুলি নতুনগুলির সাথে পডস দৃষ্টান্তগুলিকে ক্রমবর্ধমানভাবে আপডেট করার মাধ্যমে শূন্য ডাউনটাইম সহ ডিপ্লয়মেন্টের আপডেটগুলি ঘটতে দেয়৷

    @@ -93,7 +93,7 @@ weight: 10
    -

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

    +

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

    রোলিং আপডেটগুলি নিম্নলিখিত ক্রিয়াগুলিকে অনুমতি দেয়ঃ

    • একটি পরিবেশ থেকে অন্য পরিবেশে একটি অ্যাপ্লিকেশন প্রচার করুন (কন্টেইনার ইমেজ আপডেটের মাধ্যমে)
    • @@ -105,7 +105,7 @@ weight: 10
    -

    যদি একটি স্থাপনা পাবলিকলি প্রকাশ করা হয়, পরিষেবাটি আপডেটের সময় শুধুমাত্র উপলব্ধ পডগুলিতে ট্র্যাফিক লোড-ব্যালেন্স করবে।

    +

    যদি একটি ডিপ্লয়মেন্ট পাবলিকলি প্রকাশ করা হয়, পরিষেবাটি আপডেটের সময় শুধুমাত্র উপলব্ধ পডগুলিতে ট্র্যাফিক লোড-ব্যালেন্স করবে।

    diff --git a/content/bn/docs/update-user-guide-links.py b/content/bn/docs/update-user-guide-links.py new file mode 100644 index 0000000000..7c449d73ef --- /dev/null +++ b/content/bn/docs/update-user-guide-links.py @@ -0,0 +1,85 @@ +import subprocess +import re + +# Finds the documents to rewrite for files that include user-guide-content-moved.md. +# Then opens these files and processes the stuff after those lines to figure out where +# the line should move to. +# Returns a list of ('old/path', 'new/path') tuples. +def find_documents_to_rewrite(): + cmd = "ag --markdown -Q -l \"{% include user-guide-content-moved.md %}\"" + moved_docs = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE).stdout.read().splitlines() + + rewrites = [] + for doc in moved_docs: + location = doc_location(doc) + destinations = get_destinations_for_doc(doc) + + if len(destinations) == 0: + print("Unable to get possible destinations for %s" % doc) + elif len(destinations) > 1: + print("%s has multiple potential destinations. Not rewriting links." % doc) + else: + # print("%s --> %s" % (location, destinations[0])) + rewrites.append((location, destinations[0])) + + return rewrites + +# Returns the location of the documentation as we will refer to it in the markdown. +# /docs/path/to/foo/index.md are available at /docs/path/to/foo/ +# /docs/path/to/foo/bar.md are available at /docs/path/to/foo/bar/ +def doc_location(filename): + if filename.endswith('/index.md'): + return "/docs/" + filename[:-9] + "/" + else: + return "/docs/" + filename[:-3] + "/" + +REDIRECT_REGEX = re.compile("^.*\[(.*)\]\((.*)\)$") + +def get_destinations_for_doc(filename): + destination_paths = [] + with open(filename) as f: + lines = [line.rstrip('\n').rstrip('\r') for line in f.readlines()] + + # Remove empty lines + lines = filter(bool, lines) + + content_moved_index = lines.index("{% include user-guide-content-moved.md %}") + + # Get everything after that line. + destinations = lines[content_moved_index + 1:] + for destination in destinations: + result = REDIRECT_REGEX.match(destination) + if not result: + return [] + doc_title = result.group(1) # Unused, can print it out for more info. + new_path = result.group(2) + destination_paths.append(new_path) + + return destination_paths + +# Given a list of (old/path, new/path) tuples executes a sed command across all files in +# to replace (/docs/path/to/old/doc/) with (/docs/path/to/new/doc/). +def rewrite_documents(rewrites): + cmd = "find . -name '*.md' -type f -exec sed -i.bak 's@(%s)@(%s)@g' '{}' \;" + for original, new in rewrites: + + print("%s --> %s" % (original, new)) + original = original.replace('-', '\-') + new = new.replace('-', '\-') + + #print(cmd % (original, new)) + subprocess.call(cmd % (original, new), shell=True) + +# We can't have in-line replace across multiple files without sudo (I think), so it +# creates a lot of backups that we have to delete. +def remove_sed_backups(): + cmd = "find . -name '*.bak' -delete" + subprocess.call(cmd, shell=True) + +def main(): + rewrites = find_documents_to_rewrite() + rewrite_documents(rewrites) + remove_sed_backups() + +if __name__ == "__main__": + main() diff --git a/content/bn/examples/README.md b/content/bn/examples/README.md new file mode 100644 index 0000000000..0ac9922b5c --- /dev/null +++ b/content/bn/examples/README.md @@ -0,0 +1,11 @@ +স্থানীয়করণের জন্য পরীক্ষা চালানোর জন্য, নিম্নলিখিত কমান্ডটি ব্যবহার করুন: + +``` +go test k8s.io/website/content//examples +``` + +যেখানে `` একটি ভাষার দুটি অক্ষর উপস্থাপনা। উদাহরণ স্বরূপ: + +``` +go test k8s.io/website/content/en/examples +``` diff --git a/content/bn/examples/access/certificate-signing-request/clusterrole-approve.yaml b/content/bn/examples/access/certificate-signing-request/clusterrole-approve.yaml new file mode 100644 index 0000000000..2c854c95c6 --- /dev/null +++ b/content/bn/examples/access/certificate-signing-request/clusterrole-approve.yaml @@ -0,0 +1,27 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: csr-approver +rules: +- apiGroups: + - certificates.k8s.io + resources: + - certificatesigningrequests + verbs: + - get + - list + - watch +- apiGroups: + - certificates.k8s.io + resources: + - certificatesigningrequests/approval + verbs: + - update +- apiGroups: + - certificates.k8s.io + resources: + - signers + resourceNames: + - example.com/my-signer-name # example.com/* can be used to authorize for all signers in the 'example.com' domain + verbs: + - approve diff --git a/content/bn/examples/access/certificate-signing-request/clusterrole-create.yaml b/content/bn/examples/access/certificate-signing-request/clusterrole-create.yaml new file mode 100644 index 0000000000..def1b879d8 --- /dev/null +++ b/content/bn/examples/access/certificate-signing-request/clusterrole-create.yaml @@ -0,0 +1,14 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: csr-creator +rules: +- apiGroups: + - certificates.k8s.io + resources: + - certificatesigningrequests + verbs: + - create + - get + - list + - watch diff --git a/content/bn/examples/access/certificate-signing-request/clusterrole-sign.yaml b/content/bn/examples/access/certificate-signing-request/clusterrole-sign.yaml new file mode 100644 index 0000000000..6d1a2f7882 --- /dev/null +++ b/content/bn/examples/access/certificate-signing-request/clusterrole-sign.yaml @@ -0,0 +1,27 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: csr-signer +rules: +- apiGroups: + - certificates.k8s.io + resources: + - certificatesigningrequests + verbs: + - get + - list + - watch +- apiGroups: + - certificates.k8s.io + resources: + - certificatesigningrequests/status + verbs: + - update +- apiGroups: + - certificates.k8s.io + resources: + - signers + resourceNames: + - example.com/my-signer-name # example.com/* can be used to authorize for all signers in the 'example.com' domain + verbs: + - sign diff --git a/content/bn/examples/access/deployment-replicas-policy.yaml b/content/bn/examples/access/deployment-replicas-policy.yaml new file mode 100644 index 0000000000..466a6ccbd6 --- /dev/null +++ b/content/bn/examples/access/deployment-replicas-policy.yaml @@ -0,0 +1,18 @@ +apiVersion: admissionregistration.k8s.io/v1 +kind: ValidatingAdmissionPolicy +metadata: + name: "deploy-replica-policy.example.com" +spec: + paramKind: + apiVersion: rules.example.com/v1 + kind: ReplicaLimit + matchConstraints: + resourceRules: + - apiGroups: ["apps"] + apiVersions: ["v1"] + operations: ["CREATE", "UPDATE"] + resources: ["deployments"] + validations: + - expression: "object.spec.replicas <= params.maxReplicas" + messageExpression: "'object.spec.replicas must be no greater than ' + string(params.maxReplicas)" + reason: Invalid diff --git a/content/bn/examples/access/endpoints-aggregated.yaml b/content/bn/examples/access/endpoints-aggregated.yaml new file mode 100644 index 0000000000..d238820056 --- /dev/null +++ b/content/bn/examples/access/endpoints-aggregated.yaml @@ -0,0 +1,20 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + annotations: + kubernetes.io/description: |- + Add endpoints write permissions to the edit and admin roles. This was + removed by default in 1.22 because of CVE-2021-25740. See + https://issue.k8s.io/103675. This can allow writers to direct LoadBalancer + or Ingress implementations to expose backend IPs that would not otherwise + be accessible, and can circumvent network policies or security controls + intended to prevent/isolate access to those backends. + EndpointSlices were never included in the edit or admin roles, so there + is nothing to restore for the EndpointSlice API. + labels: + rbac.authorization.k8s.io/aggregate-to-edit: "true" + name: custom:aggregate-to-edit:endpoints # you can change this if you wish +rules: + - apiGroups: [""] + resources: ["endpoints"] + verbs: ["create", "delete", "deletecollection", "patch", "update"] diff --git a/content/bn/examples/access/image-matches-namespace-environment.policy.yaml b/content/bn/examples/access/image-matches-namespace-environment.policy.yaml new file mode 100644 index 0000000000..6482991316 --- /dev/null +++ b/content/bn/examples/access/image-matches-namespace-environment.policy.yaml @@ -0,0 +1,28 @@ +# This policy enforces that all containers of a deployment has the image repo match the environment label of its namespace. +# Except for "exempt" deployments, or any containers that do not belong to the "example.com" organization (e.g. common sidecars). +# For example, if the namespace has a label of {"environment": "staging"}, all container images must be either staging.example.com/* +# or do not contain "example.com" at all, unless the deployment has {"exempt": "true"} label. +apiVersion: admissionregistration.k8s.io/v1 +kind: ValidatingAdmissionPolicy +metadata: + name: "image-matches-namespace-environment.policy.example.com" +spec: + failurePolicy: Fail + matchConstraints: + resourceRules: + - apiGroups: ["apps"] + apiVersions: ["v1"] + operations: ["CREATE", "UPDATE"] + resources: ["deployments"] + variables: + - name: environment + expression: "'environment' in namespaceObject.metadata.labels ? namespaceObject.metadata.labels['environment'] : 'prod'" + - name: exempt + expression: "'exempt' in object.metadata.labels && object.metadata.labels['exempt'] == 'true'" + - name: containers + expression: "object.spec.template.spec.containers" + - name: containersToCheck + expression: "variables.containers.filter(c, c.image.contains('example.com/'))" + validations: + - expression: "variables.exempt || variables.containersToCheck.all(c, c.image.startsWith(variables.environment + '.'))" + messageExpression: "'only ' + variables.environment + ' images are allowed in namespace ' + namespaceObject.metadata.name" diff --git a/content/bn/examples/access/validating-admission-policy-audit-annotation.yaml b/content/bn/examples/access/validating-admission-policy-audit-annotation.yaml new file mode 100644 index 0000000000..1c422a8254 --- /dev/null +++ b/content/bn/examples/access/validating-admission-policy-audit-annotation.yaml @@ -0,0 +1,18 @@ +apiVersion: admissionregistration.k8s.io/v1 +kind: ValidatingAdmissionPolicy +metadata: + name: "demo-policy.example.com" +spec: + failurePolicy: Fail + matchConstraints: + resourceRules: + - apiGroups: ["apps"] + apiVersions: ["v1"] + operations: ["CREATE", "UPDATE"] + resources: ["deployments"] + validations: + - expression: "object.spec.replicas > 50" + messageExpression: "'Deployment spec.replicas set to ' + string(object.spec.replicas)" + auditAnnotations: + - key: "high-replica-count" + valueExpression: "'Deployment spec.replicas set to ' + string(object.spec.replicas)" diff --git a/content/bn/examples/access/validating-admission-policy-match-conditions.yaml b/content/bn/examples/access/validating-admission-policy-match-conditions.yaml new file mode 100644 index 0000000000..e0a1522667 --- /dev/null +++ b/content/bn/examples/access/validating-admission-policy-match-conditions.yaml @@ -0,0 +1,21 @@ +apiVersion: admissionregistration.k8s.io/v1 +kind: ValidatingAdmissionPolicy +metadata: + name: "demo-policy.example.com" +spec: + failurePolicy: Fail + matchConstraints: + resourceRules: + - apiGroups: ["*"] + apiVersions: ["*"] + operations: ["CREATE", "UPDATE"] + resources: ["*"] + matchConditions: + - name: 'exclude-leases' # Each match condition must have a unique name + expression: '!(request.resource.group == "coordination.k8s.io" && request.resource.resource == "leases")' # Match non-lease resources. + - name: 'exclude-kubelet-requests' + expression: '!("system:nodes" in request.userInfo.groups)' # Match requests made by non-node users. + - name: 'rbac' # Skip RBAC requests. + expression: 'request.resource.group != "rbac.authorization.k8s.io"' + validations: + - expression: "!object.metadata.name.contains('demo') || object.metadata.namespace == 'demo'" diff --git a/content/bn/examples/admin/cloud/ccm-example.yaml b/content/bn/examples/admin/cloud/ccm-example.yaml new file mode 100644 index 0000000000..91b7ef2b89 --- /dev/null +++ b/content/bn/examples/admin/cloud/ccm-example.yaml @@ -0,0 +1,73 @@ +# This is an example of how to set up cloud-controller-manager as a Daemonset in your cluster. +# It assumes that your masters can run pods and has the role node-role.kubernetes.io/master +# Note that this Daemonset will not work straight out of the box for your cloud, this is +# meant to be a guideline. + +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: cloud-controller-manager + namespace: kube-system +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: system:cloud-controller-manager +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-admin +subjects: +- kind: ServiceAccount + name: cloud-controller-manager + namespace: kube-system +--- +apiVersion: apps/v1 +kind: DaemonSet +metadata: + labels: + k8s-app: cloud-controller-manager + name: cloud-controller-manager + namespace: kube-system +spec: + selector: + matchLabels: + k8s-app: cloud-controller-manager + template: + metadata: + labels: + k8s-app: cloud-controller-manager + spec: + serviceAccountName: cloud-controller-manager + containers: + - name: cloud-controller-manager + # for in-tree providers we use registry.k8s.io/cloud-controller-manager + # this can be replaced with any other image for out-of-tree providers + image: registry.k8s.io/cloud-controller-manager:v1.8.0 + command: + - /usr/local/bin/cloud-controller-manager + - --cloud-provider=[YOUR_CLOUD_PROVIDER] # Add your own cloud provider here! + - --leader-elect=true + - --use-service-account-credentials + # these flags will vary for every cloud provider + - --allocate-node-cidrs=true + - --configure-cloud-routes=true + - --cluster-cidr=172.17.0.0/16 + tolerations: + # this is required so CCM can bootstrap itself + - key: node.cloudprovider.kubernetes.io/uninitialized + value: "true" + effect: NoSchedule + # these tolerations are to have the daemonset runnable on control plane nodes + # remove them if your control plane nodes should not run pods + - key: node-role.kubernetes.io/control-plane + operator: Exists + effect: NoSchedule + - key: node-role.kubernetes.io/master + operator: Exists + effect: NoSchedule + # this is to restrict CCM to only run on master nodes + # the node selector may vary depending on your cluster setup + nodeSelector: + node-role.kubernetes.io/master: "" diff --git a/content/bn/examples/admin/dns/busybox.yaml b/content/bn/examples/admin/dns/busybox.yaml new file mode 100644 index 0000000000..31f009d307 --- /dev/null +++ b/content/bn/examples/admin/dns/busybox.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Pod +metadata: + name: busybox + namespace: default +spec: + containers: + - name: busybox + image: busybox:1.28 + command: + - sleep + - "3600" + imagePullPolicy: IfNotPresent + restartPolicy: Always diff --git a/content/bn/examples/admin/dns/dns-horizontal-autoscaler.yaml b/content/bn/examples/admin/dns/dns-horizontal-autoscaler.yaml new file mode 100644 index 0000000000..3182fed3c8 --- /dev/null +++ b/content/bn/examples/admin/dns/dns-horizontal-autoscaler.yaml @@ -0,0 +1,87 @@ +kind: ServiceAccount +apiVersion: v1 +metadata: + name: kube-dns-autoscaler + namespace: kube-system +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: system:kube-dns-autoscaler +rules: + - apiGroups: [""] + resources: ["nodes"] + verbs: ["list", "watch"] + - apiGroups: [""] + resources: ["replicationcontrollers/scale"] + verbs: ["get", "update"] + - apiGroups: ["apps"] + resources: ["deployments/scale", "replicasets/scale"] + verbs: ["get", "update"] +# Remove the configmaps rule once below issue is fixed: +# kubernetes-incubator/cluster-proportional-autoscaler#16 + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get", "create"] +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: system:kube-dns-autoscaler +subjects: + - kind: ServiceAccount + name: kube-dns-autoscaler + namespace: kube-system +roleRef: + kind: ClusterRole + name: system:kube-dns-autoscaler + apiGroup: rbac.authorization.k8s.io + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: kube-dns-autoscaler + namespace: kube-system + labels: + k8s-app: kube-dns-autoscaler + kubernetes.io/cluster-service: "true" +spec: + selector: + matchLabels: + k8s-app: kube-dns-autoscaler + template: + metadata: + labels: + k8s-app: kube-dns-autoscaler + spec: + priorityClassName: system-cluster-critical + securityContext: + seccompProfile: + type: RuntimeDefault + supplementalGroups: [ 65534 ] + fsGroup: 65534 + nodeSelector: + kubernetes.io/os: linux + containers: + - name: autoscaler + image: registry.k8s.io/cpa/cluster-proportional-autoscaler:1.8.4 + resources: + requests: + cpu: "20m" + memory: "10Mi" + command: + - /cluster-proportional-autoscaler + - --namespace=kube-system + - --configmap=kube-dns-autoscaler + # Should keep target in sync with cluster/addons/dns/kube-dns.yaml.base + - --target= + # When cluster is using large nodes(with more cores), "coresPerReplica" should dominate. + # If using small nodes, "nodesPerReplica" should dominate. + - --default-params={"linear":{"coresPerReplica":256,"nodesPerReplica":16,"preventSinglePointFailure":true,"includeUnschedulableNodes":true}} + - --logtostderr=true + - --v=2 + tolerations: + - key: "CriticalAddonsOnly" + operator: "Exists" + serviceAccountName: kube-dns-autoscaler diff --git a/content/bn/examples/admin/dns/dnsutils.yaml b/content/bn/examples/admin/dns/dnsutils.yaml new file mode 100644 index 0000000000..e1b3ace336 --- /dev/null +++ b/content/bn/examples/admin/dns/dnsutils.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Pod +metadata: + name: dnsutils + namespace: default +spec: + containers: + - name: dnsutils + image: registry.k8s.io/e2e-test-images/jessie-dnsutils:1.3 + command: + - sleep + - "infinity" + imagePullPolicy: IfNotPresent + restartPolicy: Always diff --git a/content/bn/examples/admin/konnectivity/egress-selector-configuration.yaml b/content/bn/examples/admin/konnectivity/egress-selector-configuration.yaml new file mode 100644 index 0000000000..631e6cc268 --- /dev/null +++ b/content/bn/examples/admin/konnectivity/egress-selector-configuration.yaml @@ -0,0 +1,21 @@ +apiVersion: apiserver.k8s.io/v1beta1 +kind: EgressSelectorConfiguration +egressSelections: +# Since we want to control the egress traffic to the cluster, we use the +# "cluster" as the name. Other supported values are "etcd", and "controlplane". +- name: cluster + connection: + # This controls the protocol between the API Server and the Konnectivity + # server. Supported values are "GRPC" and "HTTPConnect". There is no + # end user visible difference between the two modes. You need to set the + # Konnectivity server to work in the same mode. + proxyProtocol: GRPC + transport: + # This controls what transport the API Server uses to communicate with the + # Konnectivity server. UDS is recommended if the Konnectivity server + # locates on the same machine as the API Server. You need to configure the + # Konnectivity server to listen on the same UDS socket. + # The other supported transport is "tcp". You will need to set up TLS + # config to secure the TCP transport. + uds: + udsName: /etc/kubernetes/konnectivity-server/konnectivity-server.socket diff --git a/content/bn/examples/admin/konnectivity/konnectivity-agent.yaml b/content/bn/examples/admin/konnectivity/konnectivity-agent.yaml new file mode 100644 index 0000000000..cbcbf89114 --- /dev/null +++ b/content/bn/examples/admin/konnectivity/konnectivity-agent.yaml @@ -0,0 +1,55 @@ +apiVersion: apps/v1 +# Alternatively, you can deploy the agents as Deployments. It is not necessary +# to have an agent on each node. +kind: DaemonSet +metadata: + labels: + addonmanager.kubernetes.io/mode: Reconcile + k8s-app: konnectivity-agent + namespace: kube-system + name: konnectivity-agent +spec: + selector: + matchLabels: + k8s-app: konnectivity-agent + template: + metadata: + labels: + k8s-app: konnectivity-agent + spec: + priorityClassName: system-cluster-critical + tolerations: + - key: "CriticalAddonsOnly" + operator: "Exists" + containers: + - image: us.gcr.io/k8s-artifacts-prod/kas-network-proxy/proxy-agent:v0.0.37 + name: konnectivity-agent + command: ["/proxy-agent"] + args: [ + "--logtostderr=true", + "--ca-cert=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt", + # Since the konnectivity server runs with hostNetwork=true, + # this is the IP address of the master machine. + "--proxy-server-host=35.225.206.7", + "--proxy-server-port=8132", + "--admin-server-port=8133", + "--health-server-port=8134", + "--service-account-token-path=/var/run/secrets/tokens/konnectivity-agent-token" + ] + volumeMounts: + - mountPath: /var/run/secrets/tokens + name: konnectivity-agent-token + livenessProbe: + httpGet: + port: 8134 + path: /healthz + initialDelaySeconds: 15 + timeoutSeconds: 15 + serviceAccountName: konnectivity-agent + volumes: + - name: konnectivity-agent-token + projected: + sources: + - serviceAccountToken: + path: konnectivity-agent-token + audience: system:konnectivity-server diff --git a/content/bn/examples/admin/konnectivity/konnectivity-rbac.yaml b/content/bn/examples/admin/konnectivity/konnectivity-rbac.yaml new file mode 100644 index 0000000000..7687f49b77 --- /dev/null +++ b/content/bn/examples/admin/konnectivity/konnectivity-rbac.yaml @@ -0,0 +1,24 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: system:konnectivity-server + labels: + kubernetes.io/cluster-service: "true" + addonmanager.kubernetes.io/mode: Reconcile +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: system:auth-delegator +subjects: + - apiGroup: rbac.authorization.k8s.io + kind: User + name: system:konnectivity-server +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: konnectivity-agent + namespace: kube-system + labels: + kubernetes.io/cluster-service: "true" + addonmanager.kubernetes.io/mode: Reconcile diff --git a/content/bn/examples/admin/konnectivity/konnectivity-server.yaml b/content/bn/examples/admin/konnectivity/konnectivity-server.yaml new file mode 100644 index 0000000000..4dfbf5db9d --- /dev/null +++ b/content/bn/examples/admin/konnectivity/konnectivity-server.yaml @@ -0,0 +1,73 @@ +apiVersion: v1 +kind: Pod +metadata: + name: konnectivity-server + namespace: kube-system +spec: + priorityClassName: system-cluster-critical + hostNetwork: true + containers: + - name: konnectivity-server-container + image: registry.k8s.io/kas-network-proxy/proxy-server:v0.0.37 + command: ["/proxy-server"] + args: [ + "--logtostderr=true", + # This needs to be consistent with the value set in egressSelectorConfiguration. + "--uds-name=/etc/kubernetes/konnectivity-server/konnectivity-server.socket", + "--delete-existing-uds-file", + # The following two lines assume the Konnectivity server is + # deployed on the same machine as the apiserver, and the certs and + # key of the API Server are at the specified location. + "--cluster-cert=/etc/kubernetes/pki/apiserver.crt", + "--cluster-key=/etc/kubernetes/pki/apiserver.key", + # This needs to be consistent with the value set in egressSelectorConfiguration. + "--mode=grpc", + "--server-port=0", + "--agent-port=8132", + "--admin-port=8133", + "--health-port=8134", + "--agent-namespace=kube-system", + "--agent-service-account=konnectivity-agent", + "--kubeconfig=/etc/kubernetes/konnectivity-server.conf", + "--authentication-audience=system:konnectivity-server" + ] + livenessProbe: + httpGet: + scheme: HTTP + host: 127.0.0.1 + port: 8134 + path: /healthz + initialDelaySeconds: 30 + timeoutSeconds: 60 + ports: + - name: agentport + containerPort: 8132 + hostPort: 8132 + - name: adminport + containerPort: 8133 + hostPort: 8133 + - name: healthport + containerPort: 8134 + hostPort: 8134 + volumeMounts: + - name: k8s-certs + mountPath: /etc/kubernetes/pki + readOnly: true + - name: kubeconfig + mountPath: /etc/kubernetes/konnectivity-server.conf + readOnly: true + - name: konnectivity-uds + mountPath: /etc/kubernetes/konnectivity-server + readOnly: false + volumes: + - name: k8s-certs + hostPath: + path: /etc/kubernetes/pki + - name: kubeconfig + hostPath: + path: /etc/kubernetes/konnectivity-server.conf + type: FileOrCreate + - name: konnectivity-uds + hostPath: + path: /etc/kubernetes/konnectivity-server + type: DirectoryOrCreate diff --git a/content/bn/examples/admin/logging/fluentd-sidecar-config.yaml b/content/bn/examples/admin/logging/fluentd-sidecar-config.yaml new file mode 100644 index 0000000000..eea1849b03 --- /dev/null +++ b/content/bn/examples/admin/logging/fluentd-sidecar-config.yaml @@ -0,0 +1,25 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: fluentd-config +data: + fluentd.conf: | + + type tail + format none + path /var/log/1.log + pos_file /var/log/1.log.pos + tag count.format1 + + + + type tail + format none + path /var/log/2.log + pos_file /var/log/2.log.pos + tag count.format2 + + + + type google_cloud + diff --git a/content/bn/examples/admin/logging/two-files-counter-pod-agent-sidecar.yaml b/content/bn/examples/admin/logging/two-files-counter-pod-agent-sidecar.yaml new file mode 100644 index 0000000000..a621a9fb2a --- /dev/null +++ b/content/bn/examples/admin/logging/two-files-counter-pod-agent-sidecar.yaml @@ -0,0 +1,39 @@ +apiVersion: v1 +kind: Pod +metadata: + name: counter +spec: + containers: + - name: count + image: busybox:1.28 + args: + - /bin/sh + - -c + - > + i=0; + while true; + do + echo "$i: $(date)" >> /var/log/1.log; + echo "$(date) INFO $i" >> /var/log/2.log; + i=$((i+1)); + sleep 1; + done + volumeMounts: + - name: varlog + mountPath: /var/log + - name: count-agent + image: registry.k8s.io/fluentd-gcp:1.30 + env: + - name: FLUENTD_ARGS + value: -c /etc/fluentd-config/fluentd.conf + volumeMounts: + - name: varlog + mountPath: /var/log + - name: config-volume + mountPath: /etc/fluentd-config + volumes: + - name: varlog + emptyDir: {} + - name: config-volume + configMap: + name: fluentd-config diff --git a/content/bn/examples/admin/logging/two-files-counter-pod-streaming-sidecar.yaml b/content/bn/examples/admin/logging/two-files-counter-pod-streaming-sidecar.yaml new file mode 100644 index 0000000000..ac19efe4a2 --- /dev/null +++ b/content/bn/examples/admin/logging/two-files-counter-pod-streaming-sidecar.yaml @@ -0,0 +1,38 @@ +apiVersion: v1 +kind: Pod +metadata: + name: counter +spec: + containers: + - name: count + image: busybox:1.28 + args: + - /bin/sh + - -c + - > + i=0; + while true; + do + echo "$i: $(date)" >> /var/log/1.log; + echo "$(date) INFO $i" >> /var/log/2.log; + i=$((i+1)); + sleep 1; + done + volumeMounts: + - name: varlog + mountPath: /var/log + - name: count-log-1 + image: busybox:1.28 + args: [/bin/sh, -c, 'tail -n+1 -F /var/log/1.log'] + volumeMounts: + - name: varlog + mountPath: /var/log + - name: count-log-2 + image: busybox:1.28 + args: [/bin/sh, -c, 'tail -n+1 -F /var/log/2.log'] + volumeMounts: + - name: varlog + mountPath: /var/log + volumes: + - name: varlog + emptyDir: {} diff --git a/content/bn/examples/admin/logging/two-files-counter-pod.yaml b/content/bn/examples/admin/logging/two-files-counter-pod.yaml new file mode 100644 index 0000000000..31bbed3cf8 --- /dev/null +++ b/content/bn/examples/admin/logging/two-files-counter-pod.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: Pod +metadata: + name: counter +spec: + containers: + - name: count + image: busybox:1.28 + args: + - /bin/sh + - -c + - > + i=0; + while true; + do + echo "$i: $(date)" >> /var/log/1.log; + echo "$(date) INFO $i" >> /var/log/2.log; + i=$((i+1)); + sleep 1; + done + volumeMounts: + - name: varlog + mountPath: /var/log + volumes: + - name: varlog + emptyDir: {} diff --git a/content/bn/examples/admin/namespace-dev.json b/content/bn/examples/admin/namespace-dev.json new file mode 100644 index 0000000000..cb3ed7cdc1 --- /dev/null +++ b/content/bn/examples/admin/namespace-dev.json @@ -0,0 +1,10 @@ +{ + "apiVersion": "v1", + "kind": "Namespace", + "metadata": { + "name": "development", + "labels": { + "name": "development" + } + } +} diff --git a/content/bn/examples/admin/namespace-dev.yaml b/content/bn/examples/admin/namespace-dev.yaml new file mode 100644 index 0000000000..5e753b693f --- /dev/null +++ b/content/bn/examples/admin/namespace-dev.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: development + labels: + name: development diff --git a/content/bn/examples/admin/namespace-prod.yaml b/content/bn/examples/admin/namespace-prod.yaml new file mode 100644 index 0000000000..761d6325cb --- /dev/null +++ b/content/bn/examples/admin/namespace-prod.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: production + labels: + name: production diff --git a/content/bn/examples/admin/resource/cpu-constraints-pod-2.yaml b/content/bn/examples/admin/resource/cpu-constraints-pod-2.yaml new file mode 100644 index 0000000000..b5c7348f26 --- /dev/null +++ b/content/bn/examples/admin/resource/cpu-constraints-pod-2.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Pod +metadata: + name: constraints-cpu-demo-2 +spec: + containers: + - name: constraints-cpu-demo-2-ctr + image: nginx + resources: + limits: + cpu: "1.5" + requests: + cpu: "500m" diff --git a/content/bn/examples/admin/resource/cpu-constraints-pod-3.yaml b/content/bn/examples/admin/resource/cpu-constraints-pod-3.yaml new file mode 100644 index 0000000000..0a2083acd8 --- /dev/null +++ b/content/bn/examples/admin/resource/cpu-constraints-pod-3.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Pod +metadata: + name: constraints-cpu-demo-3 +spec: + containers: + - name: constraints-cpu-demo-3-ctr + image: nginx + resources: + limits: + cpu: "800m" + requests: + cpu: "100m" diff --git a/content/bn/examples/admin/resource/cpu-constraints-pod-4.yaml b/content/bn/examples/admin/resource/cpu-constraints-pod-4.yaml new file mode 100644 index 0000000000..3c102158db --- /dev/null +++ b/content/bn/examples/admin/resource/cpu-constraints-pod-4.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: Pod +metadata: + name: constraints-cpu-demo-4 +spec: + containers: + - name: constraints-cpu-demo-4-ctr + image: vish/stress diff --git a/content/bn/examples/admin/resource/cpu-constraints-pod.yaml b/content/bn/examples/admin/resource/cpu-constraints-pod.yaml new file mode 100644 index 0000000000..7db23f26c8 --- /dev/null +++ b/content/bn/examples/admin/resource/cpu-constraints-pod.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Pod +metadata: + name: constraints-cpu-demo +spec: + containers: + - name: constraints-cpu-demo-ctr + image: nginx + resources: + limits: + cpu: "800m" + requests: + cpu: "500m" diff --git a/content/bn/examples/admin/resource/cpu-constraints.yaml b/content/bn/examples/admin/resource/cpu-constraints.yaml new file mode 100644 index 0000000000..6fc4239027 --- /dev/null +++ b/content/bn/examples/admin/resource/cpu-constraints.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: LimitRange +metadata: + name: cpu-min-max-demo-lr +spec: + limits: + - max: + cpu: "800m" + min: + cpu: "200m" + type: Container diff --git a/content/bn/examples/admin/resource/cpu-defaults-pod-2.yaml b/content/bn/examples/admin/resource/cpu-defaults-pod-2.yaml new file mode 100644 index 0000000000..9ca216dee1 --- /dev/null +++ b/content/bn/examples/admin/resource/cpu-defaults-pod-2.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Pod +metadata: + name: default-cpu-demo-2 +spec: + containers: + - name: default-cpu-demo-2-ctr + image: nginx + resources: + limits: + cpu: "1" diff --git a/content/bn/examples/admin/resource/cpu-defaults-pod-3.yaml b/content/bn/examples/admin/resource/cpu-defaults-pod-3.yaml new file mode 100644 index 0000000000..214cdee34b --- /dev/null +++ b/content/bn/examples/admin/resource/cpu-defaults-pod-3.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Pod +metadata: + name: default-cpu-demo-3 +spec: + containers: + - name: default-cpu-demo-3-ctr + image: nginx + resources: + requests: + cpu: "0.75" diff --git a/content/bn/examples/admin/resource/cpu-defaults-pod.yaml b/content/bn/examples/admin/resource/cpu-defaults-pod.yaml new file mode 100644 index 0000000000..56b06d9a69 --- /dev/null +++ b/content/bn/examples/admin/resource/cpu-defaults-pod.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: Pod +metadata: + name: default-cpu-demo +spec: + containers: + - name: default-cpu-demo-ctr + image: nginx diff --git a/content/bn/examples/admin/resource/cpu-defaults.yaml b/content/bn/examples/admin/resource/cpu-defaults.yaml new file mode 100644 index 0000000000..b53d297181 --- /dev/null +++ b/content/bn/examples/admin/resource/cpu-defaults.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: LimitRange +metadata: + name: cpu-limit-range +spec: + limits: + - default: + cpu: 1 + defaultRequest: + cpu: 0.5 + type: Container diff --git a/content/bn/examples/admin/resource/limit-mem-cpu-container.yaml b/content/bn/examples/admin/resource/limit-mem-cpu-container.yaml new file mode 100644 index 0000000000..3c2b30f29c --- /dev/null +++ b/content/bn/examples/admin/resource/limit-mem-cpu-container.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: LimitRange +metadata: + name: limit-mem-cpu-per-container +spec: + limits: + - max: + cpu: "800m" + memory: "1Gi" + min: + cpu: "100m" + memory: "99Mi" + default: + cpu: "700m" + memory: "900Mi" + defaultRequest: + cpu: "110m" + memory: "111Mi" + type: Container diff --git a/content/bn/examples/admin/resource/limit-mem-cpu-pod.yaml b/content/bn/examples/admin/resource/limit-mem-cpu-pod.yaml new file mode 100644 index 0000000000..0ce0f69ac8 --- /dev/null +++ b/content/bn/examples/admin/resource/limit-mem-cpu-pod.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: LimitRange +metadata: + name: limit-mem-cpu-per-pod +spec: + limits: + - max: + cpu: "2" + memory: "2Gi" + type: Pod diff --git a/content/bn/examples/admin/resource/limit-memory-ratio-pod.yaml b/content/bn/examples/admin/resource/limit-memory-ratio-pod.yaml new file mode 100644 index 0000000000..859fc20ece --- /dev/null +++ b/content/bn/examples/admin/resource/limit-memory-ratio-pod.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: LimitRange +metadata: + name: limit-memory-ratio-pod +spec: + limits: + - maxLimitRequestRatio: + memory: 2 + type: Pod diff --git a/content/bn/examples/admin/resource/limit-range-pod-1.yaml b/content/bn/examples/admin/resource/limit-range-pod-1.yaml new file mode 100644 index 0000000000..b9bd20d06a --- /dev/null +++ b/content/bn/examples/admin/resource/limit-range-pod-1.yaml @@ -0,0 +1,37 @@ +apiVersion: v1 +kind: Pod +metadata: + name: busybox1 +spec: + containers: + - name: busybox-cnt01 + image: busybox:1.28 + command: ["/bin/sh"] + args: ["-c", "while true; do echo hello from cnt01; sleep 10;done"] + resources: + requests: + memory: "100Mi" + cpu: "100m" + limits: + memory: "200Mi" + cpu: "500m" + - name: busybox-cnt02 + image: busybox:1.28 + command: ["/bin/sh"] + args: ["-c", "while true; do echo hello from cnt02; sleep 10;done"] + resources: + requests: + memory: "100Mi" + cpu: "100m" + - name: busybox-cnt03 + image: busybox:1.28 + command: ["/bin/sh"] + args: ["-c", "while true; do echo hello from cnt03; sleep 10;done"] + resources: + limits: + memory: "200Mi" + cpu: "500m" + - name: busybox-cnt04 + image: busybox:1.28 + command: ["/bin/sh"] + args: ["-c", "while true; do echo hello from cnt04; sleep 10;done"] diff --git a/content/bn/examples/admin/resource/limit-range-pod-2.yaml b/content/bn/examples/admin/resource/limit-range-pod-2.yaml new file mode 100644 index 0000000000..40da19c1ae --- /dev/null +++ b/content/bn/examples/admin/resource/limit-range-pod-2.yaml @@ -0,0 +1,37 @@ +apiVersion: v1 +kind: Pod +metadata: + name: busybox2 +spec: + containers: + - name: busybox-cnt01 + image: busybox:1.28 + command: ["/bin/sh"] + args: ["-c", "while true; do echo hello from cnt01; sleep 10;done"] + resources: + requests: + memory: "100Mi" + cpu: "100m" + limits: + memory: "200Mi" + cpu: "500m" + - name: busybox-cnt02 + image: busybox:1.28 + command: ["/bin/sh"] + args: ["-c", "while true; do echo hello from cnt02; sleep 10;done"] + resources: + requests: + memory: "100Mi" + cpu: "100m" + - name: busybox-cnt03 + image: busybox:1.28 + command: ["/bin/sh"] + args: ["-c", "while true; do echo hello from cnt03; sleep 10;done"] + resources: + limits: + memory: "200Mi" + cpu: "500m" + - name: busybox-cnt04 + image: busybox:1.28 + command: ["/bin/sh"] + args: ["-c", "while true; do echo hello from cnt04; sleep 10;done"] diff --git a/content/bn/examples/admin/resource/limit-range-pod-3.yaml b/content/bn/examples/admin/resource/limit-range-pod-3.yaml new file mode 100644 index 0000000000..5b6b835e38 --- /dev/null +++ b/content/bn/examples/admin/resource/limit-range-pod-3.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Pod +metadata: + name: busybox3 +spec: + containers: + - name: busybox-cnt01 + image: busybox:1.28 + command: ["sleep", "3600"] + resources: + limits: + memory: "300Mi" + requests: + memory: "100Mi" diff --git a/content/bn/examples/admin/resource/memory-available-cgroupv2.sh b/content/bn/examples/admin/resource/memory-available-cgroupv2.sh new file mode 100644 index 0000000000..47b9f6802b --- /dev/null +++ b/content/bn/examples/admin/resource/memory-available-cgroupv2.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# This script reproduces what the kubelet does +# to calculate memory.available relative to kubepods cgroup. + +# current memory usage +memory_capacity_in_kb=$(cat /proc/meminfo | grep MemTotal | awk '{print $2}') +memory_capacity_in_bytes=$((memory_capacity_in_kb * 1024)) +memory_usage_in_bytes=$(cat /sys/fs/cgroup/kubepods.slice/memory.current) +memory_total_inactive_file=$(cat /sys/fs/cgroup/kubepods.slice/memory.stat | grep inactive_file | awk '{print $2}') + +memory_working_set=${memory_usage_in_bytes} +if [ "$memory_working_set" -lt "$memory_total_inactive_file" ]; +then + memory_working_set=0 +else + memory_working_set=$((memory_usage_in_bytes - memory_total_inactive_file)) +fi + +memory_available_in_bytes=$((memory_capacity_in_bytes - memory_working_set)) +memory_available_in_kb=$((memory_available_in_bytes / 1024)) +memory_available_in_mb=$((memory_available_in_kb / 1024)) + +echo "memory.capacity_in_bytes $memory_capacity_in_bytes" +echo "memory.usage_in_bytes $memory_usage_in_bytes" +echo "memory.total_inactive_file $memory_total_inactive_file" +echo "memory.working_set $memory_working_set" +echo "memory.available_in_bytes $memory_available_in_bytes" +echo "memory.available_in_kb $memory_available_in_kb" +echo "memory.available_in_mb $memory_available_in_mb" diff --git a/content/bn/examples/admin/resource/memory-available.sh b/content/bn/examples/admin/resource/memory-available.sh new file mode 100644 index 0000000000..a699b1d2e2 --- /dev/null +++ b/content/bn/examples/admin/resource/memory-available.sh @@ -0,0 +1,31 @@ +#!/bin/bash +#!/usr/bin/env bash + +# This script reproduces what the kubelet does +# to calculate memory.available relative to root cgroup. + +# current memory usage +memory_capacity_in_kb=$(cat /proc/meminfo | grep MemTotal | awk '{print $2}') +memory_capacity_in_bytes=$((memory_capacity_in_kb * 1024)) +memory_usage_in_bytes=$(cat /sys/fs/cgroup/memory/memory.usage_in_bytes) +memory_total_inactive_file=$(cat /sys/fs/cgroup/memory/memory.stat | grep total_inactive_file | awk '{print $2}') + +memory_working_set=${memory_usage_in_bytes} +if [ "$memory_working_set" -lt "$memory_total_inactive_file" ]; +then + memory_working_set=0 +else + memory_working_set=$((memory_usage_in_bytes - memory_total_inactive_file)) +fi + +memory_available_in_bytes=$((memory_capacity_in_bytes - memory_working_set)) +memory_available_in_kb=$((memory_available_in_bytes / 1024)) +memory_available_in_mb=$((memory_available_in_kb / 1024)) + +echo "memory.capacity_in_bytes $memory_capacity_in_bytes" +echo "memory.usage_in_bytes $memory_usage_in_bytes" +echo "memory.total_inactive_file $memory_total_inactive_file" +echo "memory.working_set $memory_working_set" +echo "memory.available_in_bytes $memory_available_in_bytes" +echo "memory.available_in_kb $memory_available_in_kb" +echo "memory.available_in_mb $memory_available_in_mb" diff --git a/content/bn/examples/admin/resource/memory-constraints-pod-2.yaml b/content/bn/examples/admin/resource/memory-constraints-pod-2.yaml new file mode 100644 index 0000000000..0b1ae569c4 --- /dev/null +++ b/content/bn/examples/admin/resource/memory-constraints-pod-2.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Pod +metadata: + name: constraints-mem-demo-2 +spec: + containers: + - name: constraints-mem-demo-2-ctr + image: nginx + resources: + limits: + memory: "1.5Gi" + requests: + memory: "800Mi" diff --git a/content/bn/examples/admin/resource/memory-constraints-pod-3.yaml b/content/bn/examples/admin/resource/memory-constraints-pod-3.yaml new file mode 100644 index 0000000000..f97cd4a8ac --- /dev/null +++ b/content/bn/examples/admin/resource/memory-constraints-pod-3.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Pod +metadata: + name: constraints-mem-demo-3 +spec: + containers: + - name: constraints-mem-demo-3-ctr + image: nginx + resources: + limits: + memory: "800Mi" + requests: + memory: "100Mi" diff --git a/content/bn/examples/admin/resource/memory-constraints-pod-4.yaml b/content/bn/examples/admin/resource/memory-constraints-pod-4.yaml new file mode 100644 index 0000000000..03e2b6d75e --- /dev/null +++ b/content/bn/examples/admin/resource/memory-constraints-pod-4.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: Pod +metadata: + name: constraints-mem-demo-4 +spec: + containers: + - name: constraints-mem-demo-4-ctr + image: nginx diff --git a/content/bn/examples/admin/resource/memory-constraints-pod.yaml b/content/bn/examples/admin/resource/memory-constraints-pod.yaml new file mode 100644 index 0000000000..06954d10d6 --- /dev/null +++ b/content/bn/examples/admin/resource/memory-constraints-pod.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Pod +metadata: + name: constraints-mem-demo +spec: + containers: + - name: constraints-mem-demo-ctr + image: nginx + resources: + limits: + memory: "800Mi" + requests: + memory: "600Mi" diff --git a/content/bn/examples/admin/resource/memory-constraints.yaml b/content/bn/examples/admin/resource/memory-constraints.yaml new file mode 100644 index 0000000000..3a2924c032 --- /dev/null +++ b/content/bn/examples/admin/resource/memory-constraints.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: LimitRange +metadata: + name: mem-min-max-demo-lr +spec: + limits: + - max: + memory: 1Gi + min: + memory: 500Mi + type: Container diff --git a/content/bn/examples/admin/resource/memory-defaults-pod-2.yaml b/content/bn/examples/admin/resource/memory-defaults-pod-2.yaml new file mode 100644 index 0000000000..aa80610d84 --- /dev/null +++ b/content/bn/examples/admin/resource/memory-defaults-pod-2.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Pod +metadata: + name: default-mem-demo-2 +spec: + containers: + - name: default-mem-demo-2-ctr + image: nginx + resources: + limits: + memory: "1Gi" diff --git a/content/bn/examples/admin/resource/memory-defaults-pod-3.yaml b/content/bn/examples/admin/resource/memory-defaults-pod-3.yaml new file mode 100644 index 0000000000..09ee8b39a9 --- /dev/null +++ b/content/bn/examples/admin/resource/memory-defaults-pod-3.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Pod +metadata: + name: default-mem-demo-3 +spec: + containers: + - name: default-mem-demo-3-ctr + image: nginx + resources: + requests: + memory: "128Mi" diff --git a/content/bn/examples/admin/resource/memory-defaults-pod.yaml b/content/bn/examples/admin/resource/memory-defaults-pod.yaml new file mode 100644 index 0000000000..ce7a50fb55 --- /dev/null +++ b/content/bn/examples/admin/resource/memory-defaults-pod.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: Pod +metadata: + name: default-mem-demo +spec: + containers: + - name: default-mem-demo-ctr + image: nginx diff --git a/content/bn/examples/admin/resource/memory-defaults.yaml b/content/bn/examples/admin/resource/memory-defaults.yaml new file mode 100644 index 0000000000..b98a5ae262 --- /dev/null +++ b/content/bn/examples/admin/resource/memory-defaults.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: LimitRange +metadata: + name: mem-limit-range +spec: + limits: + - default: + memory: 512Mi + defaultRequest: + memory: 256Mi + type: Container diff --git a/content/bn/examples/admin/resource/pvc-limit-greater.yaml b/content/bn/examples/admin/resource/pvc-limit-greater.yaml new file mode 100644 index 0000000000..2d92bf92b3 --- /dev/null +++ b/content/bn/examples/admin/resource/pvc-limit-greater.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: pvc-limit-greater +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi diff --git a/content/bn/examples/admin/resource/pvc-limit-lower.yaml b/content/bn/examples/admin/resource/pvc-limit-lower.yaml new file mode 100644 index 0000000000..ef819b6292 --- /dev/null +++ b/content/bn/examples/admin/resource/pvc-limit-lower.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: pvc-limit-lower +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 500Mi diff --git a/content/bn/examples/admin/resource/quota-mem-cpu-pod-2.yaml b/content/bn/examples/admin/resource/quota-mem-cpu-pod-2.yaml new file mode 100644 index 0000000000..380e900fda --- /dev/null +++ b/content/bn/examples/admin/resource/quota-mem-cpu-pod-2.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: quota-mem-cpu-demo-2 +spec: + containers: + - name: quota-mem-cpu-demo-2-ctr + image: redis + resources: + limits: + memory: "1Gi" + cpu: "800m" + requests: + memory: "700Mi" + cpu: "400m" diff --git a/content/bn/examples/admin/resource/quota-mem-cpu-pod.yaml b/content/bn/examples/admin/resource/quota-mem-cpu-pod.yaml new file mode 100644 index 0000000000..b0fd0a9451 --- /dev/null +++ b/content/bn/examples/admin/resource/quota-mem-cpu-pod.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: quota-mem-cpu-demo +spec: + containers: + - name: quota-mem-cpu-demo-ctr + image: nginx + resources: + limits: + memory: "800Mi" + cpu: "800m" + requests: + memory: "600Mi" + cpu: "400m" diff --git a/content/bn/examples/admin/resource/quota-mem-cpu.yaml b/content/bn/examples/admin/resource/quota-mem-cpu.yaml new file mode 100644 index 0000000000..5c4bcd81b8 --- /dev/null +++ b/content/bn/examples/admin/resource/quota-mem-cpu.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: ResourceQuota +metadata: + name: mem-cpu-demo +spec: + hard: + requests.cpu: "1" + requests.memory: 1Gi + limits.cpu: "2" + limits.memory: 2Gi diff --git a/content/bn/examples/admin/resource/quota-objects-pvc-2.yaml b/content/bn/examples/admin/resource/quota-objects-pvc-2.yaml new file mode 100644 index 0000000000..2539c2d309 --- /dev/null +++ b/content/bn/examples/admin/resource/quota-objects-pvc-2.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: pvc-quota-demo-2 +spec: + storageClassName: manual + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 4Gi diff --git a/content/bn/examples/admin/resource/quota-objects-pvc.yaml b/content/bn/examples/admin/resource/quota-objects-pvc.yaml new file mode 100644 index 0000000000..728bb4d708 --- /dev/null +++ b/content/bn/examples/admin/resource/quota-objects-pvc.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: pvc-quota-demo +spec: + storageClassName: manual + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 3Gi diff --git a/content/bn/examples/admin/resource/quota-objects.yaml b/content/bn/examples/admin/resource/quota-objects.yaml new file mode 100644 index 0000000000..e97748decd --- /dev/null +++ b/content/bn/examples/admin/resource/quota-objects.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: ResourceQuota +metadata: + name: object-quota-demo +spec: + hard: + persistentvolumeclaims: "1" + services.loadbalancers: "2" + services.nodeports: "0" diff --git a/content/bn/examples/admin/resource/quota-pod-deployment.yaml b/content/bn/examples/admin/resource/quota-pod-deployment.yaml new file mode 100644 index 0000000000..86e85aa468 --- /dev/null +++ b/content/bn/examples/admin/resource/quota-pod-deployment.yaml @@ -0,0 +1,17 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: pod-quota-demo +spec: + selector: + matchLabels: + purpose: quota-demo + replicas: 3 + template: + metadata: + labels: + purpose: quota-demo + spec: + containers: + - name: pod-quota-demo + image: nginx diff --git a/content/bn/examples/admin/resource/quota-pod.yaml b/content/bn/examples/admin/resource/quota-pod.yaml new file mode 100644 index 0000000000..0a07f055ca --- /dev/null +++ b/content/bn/examples/admin/resource/quota-pod.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ResourceQuota +metadata: + name: pod-demo +spec: + hard: + pods: "2" diff --git a/content/bn/examples/admin/resource/storagelimits.yaml b/content/bn/examples/admin/resource/storagelimits.yaml new file mode 100644 index 0000000000..7f597e4dfe --- /dev/null +++ b/content/bn/examples/admin/resource/storagelimits.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: LimitRange +metadata: + name: storagelimits +spec: + limits: + - type: PersistentVolumeClaim + max: + storage: 2Gi + min: + storage: 1Gi diff --git a/content/bn/examples/admin/sched/clusterrole.yaml b/content/bn/examples/admin/sched/clusterrole.yaml new file mode 100644 index 0000000000..554b8659db --- /dev/null +++ b/content/bn/examples/admin/sched/clusterrole.yaml @@ -0,0 +1,37 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + annotations: + rbac.authorization.kubernetes.io/autoupdate: "true" + labels: + kubernetes.io/bootstrapping: rbac-defaults + name: system:kube-scheduler +rules: + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - create + - apiGroups: + - coordination.k8s.io + resourceNames: + - kube-scheduler + - my-scheduler + resources: + - leases + verbs: + - get + - update + - apiGroups: + - "" + resourceNames: + - kube-scheduler + - my-scheduler + resources: + - endpoints + verbs: + - delete + - get + - patch + - update diff --git a/content/bn/examples/admin/sched/my-scheduler.yaml b/content/bn/examples/admin/sched/my-scheduler.yaml new file mode 100644 index 0000000000..fa1c65bf9a --- /dev/null +++ b/content/bn/examples/admin/sched/my-scheduler.yaml @@ -0,0 +1,113 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: my-scheduler + namespace: kube-system +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: my-scheduler-as-kube-scheduler +subjects: +- kind: ServiceAccount + name: my-scheduler + namespace: kube-system +roleRef: + kind: ClusterRole + name: system:kube-scheduler + apiGroup: rbac.authorization.k8s.io +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: my-scheduler-as-volume-scheduler +subjects: +- kind: ServiceAccount + name: my-scheduler + namespace: kube-system +roleRef: + kind: ClusterRole + name: system:volume-scheduler + apiGroup: rbac.authorization.k8s.io +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: my-scheduler-extension-apiserver-authentication-reader + namespace: kube-system +roleRef: + kind: Role + name: extension-apiserver-authentication-reader + apiGroup: rbac.authorization.k8s.io +subjects: +- kind: ServiceAccount + name: my-scheduler + namespace: kube-system +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: my-scheduler-config + namespace: kube-system +data: + my-scheduler-config.yaml: | + apiVersion: kubescheduler.config.k8s.io/v1beta2 + kind: KubeSchedulerConfiguration + profiles: + - schedulerName: my-scheduler + leaderElection: + leaderElect: false +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + component: scheduler + tier: control-plane + name: my-scheduler + namespace: kube-system +spec: + selector: + matchLabels: + component: scheduler + tier: control-plane + replicas: 1 + template: + metadata: + labels: + component: scheduler + tier: control-plane + version: second + spec: + serviceAccountName: my-scheduler + containers: + - command: + - /usr/local/bin/kube-scheduler + - --config=/etc/kubernetes/my-scheduler/my-scheduler-config.yaml + image: gcr.io/my-gcp-project/my-kube-scheduler:1.0 + livenessProbe: + httpGet: + path: /healthz + port: 10259 + scheme: HTTPS + initialDelaySeconds: 15 + name: kube-second-scheduler + readinessProbe: + httpGet: + path: /healthz + port: 10259 + scheme: HTTPS + resources: + requests: + cpu: '0.1' + securityContext: + privileged: false + volumeMounts: + - name: config-volume + mountPath: /etc/kubernetes/my-scheduler + hostNetwork: false + hostPID: false + volumes: + - name: config-volume + configMap: + name: my-scheduler-config diff --git a/content/bn/examples/admin/sched/pod1.yaml b/content/bn/examples/admin/sched/pod1.yaml new file mode 100644 index 0000000000..4755e445a5 --- /dev/null +++ b/content/bn/examples/admin/sched/pod1.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Pod +metadata: + name: no-annotation + labels: + name: multischeduler-example +spec: + containers: + - name: pod-with-no-annotation-container + image: registry.k8s.io/pause:2.0 diff --git a/content/bn/examples/admin/sched/pod2.yaml b/content/bn/examples/admin/sched/pod2.yaml new file mode 100644 index 0000000000..b78ab64a4b --- /dev/null +++ b/content/bn/examples/admin/sched/pod2.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Pod +metadata: + name: annotation-default-scheduler + labels: + name: multischeduler-example +spec: + schedulerName: default-scheduler + containers: + - name: pod-with-default-annotation-container + image: registry.k8s.io/pause:2.0 diff --git a/content/bn/examples/admin/sched/pod3.yaml b/content/bn/examples/admin/sched/pod3.yaml new file mode 100644 index 0000000000..6614143829 --- /dev/null +++ b/content/bn/examples/admin/sched/pod3.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Pod +metadata: + name: annotation-second-scheduler + labels: + name: multischeduler-example +spec: + schedulerName: my-scheduler + containers: + - name: pod-with-second-annotation-container + image: registry.k8s.io/pause:2.0 diff --git a/content/bn/examples/admin/snowflake-deployment.yaml b/content/bn/examples/admin/snowflake-deployment.yaml new file mode 100644 index 0000000000..21b6738ba4 --- /dev/null +++ b/content/bn/examples/admin/snowflake-deployment.yaml @@ -0,0 +1,20 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: snowflake + name: snowflake +spec: + replicas: 2 + selector: + matchLabels: + app: snowflake + template: + metadata: + labels: + app: snowflake + spec: + containers: + - image: registry.k8s.io/serve_hostname + imagePullPolicy: Always + name: snowflake diff --git a/content/bn/examples/application/cassandra/cassandra-service.yaml b/content/bn/examples/application/cassandra/cassandra-service.yaml new file mode 100644 index 0000000000..31bee74b58 --- /dev/null +++ b/content/bn/examples/application/cassandra/cassandra-service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: cassandra + name: cassandra +spec: + clusterIP: None + ports: + - port: 9042 + selector: + app: cassandra diff --git a/content/bn/examples/application/cassandra/cassandra-statefulset.yaml b/content/bn/examples/application/cassandra/cassandra-statefulset.yaml new file mode 100644 index 0000000000..a7bdbedc9c --- /dev/null +++ b/content/bn/examples/application/cassandra/cassandra-statefulset.yaml @@ -0,0 +1,100 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: cassandra + labels: + app: cassandra +spec: + serviceName: cassandra + replicas: 3 + selector: + matchLabels: + app: cassandra + template: + metadata: + labels: + app: cassandra + spec: + terminationGracePeriodSeconds: 1800 + containers: + - name: cassandra + image: gcr.io/google-samples/cassandra:v13 + imagePullPolicy: Always + ports: + - containerPort: 7000 + name: intra-node + - containerPort: 7001 + name: tls-intra-node + - containerPort: 7199 + name: jmx + - containerPort: 9042 + name: cql + resources: + limits: + cpu: "500m" + memory: 1Gi + requests: + cpu: "500m" + memory: 1Gi + securityContext: + capabilities: + add: + - IPC_LOCK + lifecycle: + preStop: + exec: + command: + - /bin/sh + - -c + - nodetool drain + env: + - name: MAX_HEAP_SIZE + value: 512M + - name: HEAP_NEWSIZE + value: 100M + - name: CASSANDRA_SEEDS + value: "cassandra-0.cassandra.default.svc.cluster.local" + - name: CASSANDRA_CLUSTER_NAME + value: "K8Demo" + - name: CASSANDRA_DC + value: "DC1-K8Demo" + - name: CASSANDRA_RACK + value: "Rack1-K8Demo" + - name: POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + readinessProbe: + exec: + command: + - /bin/bash + - -c + - /ready-probe.sh + initialDelaySeconds: 15 + timeoutSeconds: 5 + # These volume mounts are persistent. They are like inline claims, + # but not exactly because the names need to match exactly one of + # the stateful pod volumes. + volumeMounts: + - name: cassandra-data + mountPath: /cassandra_data + # These are converted to volume claims by the controller + # and mounted at the paths mentioned above. + # do not use these in production until ssd GCEPersistentDisk or other ssd pd + volumeClaimTemplates: + - metadata: + name: cassandra-data + spec: + accessModes: [ "ReadWriteOnce" ] + storageClassName: fast + resources: + requests: + storage: 1Gi +--- +kind: StorageClass +apiVersion: storage.k8s.io/v1 +metadata: + name: fast +provisioner: k8s.io/minikube-hostpath +parameters: + type: pd-ssd diff --git a/content/bn/examples/application/deployment-patch.yaml b/content/bn/examples/application/deployment-patch.yaml new file mode 100644 index 0000000000..af12f4cb0c --- /dev/null +++ b/content/bn/examples/application/deployment-patch.yaml @@ -0,0 +1,21 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: patch-demo +spec: + replicas: 2 + selector: + matchLabels: + app: nginx + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: patch-demo-ctr + image: nginx + tolerations: + - effect: NoSchedule + key: dedicated + value: test-team diff --git a/content/bn/examples/application/deployment-retainkeys.yaml b/content/bn/examples/application/deployment-retainkeys.yaml new file mode 100644 index 0000000000..af63f46d37 --- /dev/null +++ b/content/bn/examples/application/deployment-retainkeys.yaml @@ -0,0 +1,19 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: retainkeys-demo +spec: + selector: + matchLabels: + app: nginx + strategy: + rollingUpdate: + maxSurge: 30% + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: retainkeys-demo-ctr + image: nginx diff --git a/content/bn/examples/application/deployment-scale.yaml b/content/bn/examples/application/deployment-scale.yaml new file mode 100644 index 0000000000..838576375e --- /dev/null +++ b/content/bn/examples/application/deployment-scale.yaml @@ -0,0 +1,19 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx-deployment +spec: + selector: + matchLabels: + app: nginx + replicas: 4 # Update the replicas from 2 to 4 + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx:1.16.1 + ports: + - containerPort: 80 diff --git a/content/bn/examples/application/deployment-update.yaml b/content/bn/examples/application/deployment-update.yaml new file mode 100644 index 0000000000..1c0b9d1ab8 --- /dev/null +++ b/content/bn/examples/application/deployment-update.yaml @@ -0,0 +1,19 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx-deployment +spec: + selector: + matchLabels: + app: nginx + replicas: 2 + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx:1.16.1 # Update the version of nginx from 1.14.2 to 1.16.1 + ports: + - containerPort: 80 diff --git a/content/bn/examples/application/guestbook/frontend-deployment.yaml b/content/bn/examples/application/guestbook/frontend-deployment.yaml new file mode 100644 index 0000000000..b4639929ad --- /dev/null +++ b/content/bn/examples/application/guestbook/frontend-deployment.yaml @@ -0,0 +1,29 @@ +# SOURCE: https://cloud.google.com/kubernetes-engine/docs/tutorials/guestbook +apiVersion: apps/v1 +kind: Deployment +metadata: + name: frontend +spec: + replicas: 3 + selector: + matchLabels: + app: guestbook + tier: frontend + template: + metadata: + labels: + app: guestbook + tier: frontend + spec: + containers: + - name: php-redis + image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5 + env: + - name: GET_HOSTS_FROM + value: "dns" + resources: + requests: + cpu: 100m + memory: 100Mi + ports: + - containerPort: 80 diff --git a/content/bn/examples/application/guestbook/frontend-service.yaml b/content/bn/examples/application/guestbook/frontend-service.yaml new file mode 100644 index 0000000000..14a8ded8ab --- /dev/null +++ b/content/bn/examples/application/guestbook/frontend-service.yaml @@ -0,0 +1,19 @@ +# SOURCE: https://cloud.google.com/kubernetes-engine/docs/tutorials/guestbook +apiVersion: v1 +kind: Service +metadata: + name: frontend + labels: + app: guestbook + tier: frontend +spec: + # if your cluster supports it, uncomment the following to automatically create + # an external load-balanced IP for the frontend service. + # type: LoadBalancer + #type: LoadBalancer + ports: + # the port that this service should serve on + - port: 80 + selector: + app: guestbook + tier: frontend diff --git a/content/bn/examples/application/guestbook/redis-follower-deployment.yaml b/content/bn/examples/application/guestbook/redis-follower-deployment.yaml new file mode 100644 index 0000000000..a221e47e6f --- /dev/null +++ b/content/bn/examples/application/guestbook/redis-follower-deployment.yaml @@ -0,0 +1,30 @@ +# SOURCE: https://cloud.google.com/kubernetes-engine/docs/tutorials/guestbook +apiVersion: apps/v1 +kind: Deployment +metadata: + name: redis-follower + labels: + app: redis + role: follower + tier: backend +spec: + replicas: 2 + selector: + matchLabels: + app: redis + template: + metadata: + labels: + app: redis + role: follower + tier: backend + spec: + containers: + - name: follower + image: us-docker.pkg.dev/google-samples/containers/gke/gb-redis-follower:v2 + resources: + requests: + cpu: 100m + memory: 100Mi + ports: + - containerPort: 6379 diff --git a/content/bn/examples/application/guestbook/redis-follower-service.yaml b/content/bn/examples/application/guestbook/redis-follower-service.yaml new file mode 100644 index 0000000000..e40607e719 --- /dev/null +++ b/content/bn/examples/application/guestbook/redis-follower-service.yaml @@ -0,0 +1,17 @@ +# SOURCE: https://cloud.google.com/kubernetes-engine/docs/tutorials/guestbook +apiVersion: v1 +kind: Service +metadata: + name: redis-follower + labels: + app: redis + role: follower + tier: backend +spec: + ports: + # the port that this service should serve on + - port: 6379 + selector: + app: redis + role: follower + tier: backend diff --git a/content/bn/examples/application/guestbook/redis-leader-deployment.yaml b/content/bn/examples/application/guestbook/redis-leader-deployment.yaml new file mode 100644 index 0000000000..70122fba81 --- /dev/null +++ b/content/bn/examples/application/guestbook/redis-leader-deployment.yaml @@ -0,0 +1,30 @@ +# SOURCE: https://cloud.google.com/kubernetes-engine/docs/tutorials/guestbook +apiVersion: apps/v1 +kind: Deployment +metadata: + name: redis-leader + labels: + app: redis + role: leader + tier: backend +spec: + replicas: 1 + selector: + matchLabels: + app: redis + template: + metadata: + labels: + app: redis + role: leader + tier: backend + spec: + containers: + - name: leader + image: "docker.io/redis:6.0.5" + resources: + requests: + cpu: 100m + memory: 100Mi + ports: + - containerPort: 6379 diff --git a/content/bn/examples/application/guestbook/redis-leader-service.yaml b/content/bn/examples/application/guestbook/redis-leader-service.yaml new file mode 100644 index 0000000000..439334f99b --- /dev/null +++ b/content/bn/examples/application/guestbook/redis-leader-service.yaml @@ -0,0 +1,17 @@ +# SOURCE: https://cloud.google.com/kubernetes-engine/docs/tutorials/guestbook +apiVersion: v1 +kind: Service +metadata: + name: redis-leader + labels: + app: redis + role: leader + tier: backend +spec: + ports: + - port: 6379 + targetPort: 6379 + selector: + app: redis + role: leader + tier: backend diff --git a/content/bn/examples/application/hpa/php-apache.yaml b/content/bn/examples/application/hpa/php-apache.yaml new file mode 100644 index 0000000000..1c49aca6a1 --- /dev/null +++ b/content/bn/examples/application/hpa/php-apache.yaml @@ -0,0 +1,18 @@ +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: php-apache +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: php-apache + minReplicas: 1 + maxReplicas: 10 + metrics: + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: 50 diff --git a/content/bn/examples/application/job/cronjob.yaml b/content/bn/examples/application/job/cronjob.yaml new file mode 100644 index 0000000000..78d0e2d314 --- /dev/null +++ b/content/bn/examples/application/job/cronjob.yaml @@ -0,0 +1,19 @@ +apiVersion: batch/v1 +kind: CronJob +metadata: + name: hello +spec: + schedule: "* * * * *" + jobTemplate: + spec: + template: + spec: + containers: + - name: hello + image: busybox:1.28 + imagePullPolicy: IfNotPresent + command: + - /bin/sh + - -c + - date; echo Hello from the Kubernetes cluster + restartPolicy: OnFailure diff --git a/content/bn/examples/application/job/indexed-job-vol.yaml b/content/bn/examples/application/job/indexed-job-vol.yaml new file mode 100644 index 0000000000..cecc2b7e65 --- /dev/null +++ b/content/bn/examples/application/job/indexed-job-vol.yaml @@ -0,0 +1,27 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: 'indexed-job' +spec: + completions: 5 + parallelism: 3 + completionMode: Indexed + template: + spec: + restartPolicy: Never + containers: + - name: 'worker' + image: 'docker.io/library/busybox' + command: + - "rev" + - "/input/data.txt" + volumeMounts: + - mountPath: /input + name: input + volumes: + - name: input + downwardAPI: + items: + - path: "data.txt" + fieldRef: + fieldPath: metadata.annotations['batch.kubernetes.io/job-completion-index'] diff --git a/content/bn/examples/application/job/indexed-job.yaml b/content/bn/examples/application/job/indexed-job.yaml new file mode 100644 index 0000000000..5b80d35264 --- /dev/null +++ b/content/bn/examples/application/job/indexed-job.yaml @@ -0,0 +1,35 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: 'indexed-job' +spec: + completions: 5 + parallelism: 3 + completionMode: Indexed + template: + spec: + restartPolicy: Never + initContainers: + - name: 'input' + image: 'docker.io/library/bash' + command: + - "bash" + - "-c" + - | + items=(foo bar baz qux xyz) + echo ${items[$JOB_COMPLETION_INDEX]} > /input/data.txt + volumeMounts: + - mountPath: /input + name: input + containers: + - name: 'worker' + image: 'docker.io/library/busybox' + command: + - "rev" + - "/input/data.txt" + volumeMounts: + - mountPath: /input + name: input + volumes: + - name: input + emptyDir: {} diff --git a/content/bn/examples/application/job/job-sidecar.yaml b/content/bn/examples/application/job/job-sidecar.yaml new file mode 100644 index 0000000000..ce483b872e --- /dev/null +++ b/content/bn/examples/application/job/job-sidecar.yaml @@ -0,0 +1,26 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: myjob +spec: + template: + spec: + containers: + - name: myjob + image: alpine:latest + command: ['sh', '-c', 'echo "logging" > /opt/logs.txt'] + volumeMounts: + - name: data + mountPath: /opt + initContainers: + - name: logshipper + image: alpine:latest + restartPolicy: Always + command: ['sh', '-c', 'tail -F /opt/logs.txt'] + volumeMounts: + - name: data + mountPath: /opt + restartPolicy: Never + volumes: + - name: data + emptyDir: {} diff --git a/content/bn/examples/application/job/job-tmpl.yaml b/content/bn/examples/application/job/job-tmpl.yaml new file mode 100644 index 0000000000..d7dbbafd62 --- /dev/null +++ b/content/bn/examples/application/job/job-tmpl.yaml @@ -0,0 +1,18 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: process-item-$ITEM + labels: + jobgroup: jobexample +spec: + template: + metadata: + name: jobexample + labels: + jobgroup: jobexample + spec: + containers: + - name: c + image: busybox:1.28 + command: ["sh", "-c", "echo Processing item $ITEM && sleep 5"] + restartPolicy: Never diff --git a/content/bn/examples/application/job/rabbitmq/Dockerfile b/content/bn/examples/application/job/rabbitmq/Dockerfile new file mode 100644 index 0000000000..50faab23f4 --- /dev/null +++ b/content/bn/examples/application/job/rabbitmq/Dockerfile @@ -0,0 +1,10 @@ +# Specify BROKER_URL and QUEUE when running +FROM ubuntu:18.04 + +RUN apt-get update && \ + apt-get install -y curl ca-certificates amqp-tools python \ + --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* +COPY ./worker.py /worker.py + +CMD /usr/bin/amqp-consume --url=$BROKER_URL -q $QUEUE -c 1 /worker.py diff --git a/content/bn/examples/application/job/rabbitmq/job.yaml b/content/bn/examples/application/job/rabbitmq/job.yaml new file mode 100644 index 0000000000..4e1a61892b --- /dev/null +++ b/content/bn/examples/application/job/rabbitmq/job.yaml @@ -0,0 +1,20 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: job-wq-1 +spec: + completions: 8 + parallelism: 2 + template: + metadata: + name: job-wq-1 + spec: + containers: + - name: c + image: gcr.io//job-wq-1 + env: + - name: BROKER_URL + value: amqp://guest:guest@rabbitmq-service:5672 + - name: QUEUE + value: job1 + restartPolicy: OnFailure diff --git a/content/bn/examples/application/job/rabbitmq/rabbitmq-service.yaml b/content/bn/examples/application/job/rabbitmq/rabbitmq-service.yaml new file mode 100644 index 0000000000..2f7fb06dcf --- /dev/null +++ b/content/bn/examples/application/job/rabbitmq/rabbitmq-service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + component: rabbitmq + name: rabbitmq-service +spec: + ports: + - port: 5672 + selector: + app.kubernetes.io/name: task-queue + app.kubernetes.io/component: rabbitmq diff --git a/content/bn/examples/application/job/rabbitmq/rabbitmq-statefulset.yaml b/content/bn/examples/application/job/rabbitmq/rabbitmq-statefulset.yaml new file mode 100644 index 0000000000..502598ddf9 --- /dev/null +++ b/content/bn/examples/application/job/rabbitmq/rabbitmq-statefulset.yaml @@ -0,0 +1,36 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + component: rabbitmq + name: rabbitmq +spec: + replicas: 1 + serviceName: rabbitmq-service + selector: + matchLabels: + app.kubernetes.io/name: task-queue + app.kubernetes.io/component: rabbitmq + template: + metadata: + labels: + app.kubernetes.io/name: task-queue + app.kubernetes.io/component: rabbitmq + spec: + containers: + - image: rabbitmq + name: rabbitmq + ports: + - containerPort: 5672 + resources: + requests: + memory: 16M + limits: + cpu: 250m + memory: 512M + volumeMounts: + - mountPath: /var/lib/rabbitmq + name: rabbitmq-data + volumes: + - name: rabbitmq-data + emptyDir: {} diff --git a/content/bn/examples/application/job/rabbitmq/worker.py b/content/bn/examples/application/job/rabbitmq/worker.py new file mode 100644 index 0000000000..88a7fcf96d --- /dev/null +++ b/content/bn/examples/application/job/rabbitmq/worker.py @@ -0,0 +1,7 @@ +#!/usr/bin/env python + +# Just prints standard out and sleeps for 10 seconds. +import sys +import time +print("Processing " + sys.stdin.readlines()[0]) +time.sleep(10) diff --git a/content/bn/examples/application/job/redis/Dockerfile b/content/bn/examples/application/job/redis/Dockerfile new file mode 100644 index 0000000000..2de23b3c98 --- /dev/null +++ b/content/bn/examples/application/job/redis/Dockerfile @@ -0,0 +1,6 @@ +FROM python +RUN pip install redis +COPY ./worker.py /worker.py +COPY ./rediswq.py /rediswq.py + +CMD python worker.py diff --git a/content/bn/examples/application/job/redis/job.yaml b/content/bn/examples/application/job/redis/job.yaml new file mode 100644 index 0000000000..ee7a06c732 --- /dev/null +++ b/content/bn/examples/application/job/redis/job.yaml @@ -0,0 +1,14 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: job-wq-2 +spec: + parallelism: 2 + template: + metadata: + name: job-wq-2 + spec: + containers: + - name: c + image: gcr.io/myproject/job-wq-2 + restartPolicy: OnFailure diff --git a/content/bn/examples/application/job/redis/redis-pod.yaml b/content/bn/examples/application/job/redis/redis-pod.yaml new file mode 100644 index 0000000000..ae0c43a793 --- /dev/null +++ b/content/bn/examples/application/job/redis/redis-pod.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: redis-master + labels: + app: redis +spec: + containers: + - name: master + image: redis + env: + - name: MASTER + value: "true" + ports: + - containerPort: 6379 diff --git a/content/bn/examples/application/job/redis/redis-service.yaml b/content/bn/examples/application/job/redis/redis-service.yaml new file mode 100644 index 0000000000..85f2ca2271 --- /dev/null +++ b/content/bn/examples/application/job/redis/redis-service.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Service +metadata: + name: redis +spec: + ports: + - port: 6379 + targetPort: 6379 + selector: + app: redis diff --git a/content/bn/examples/application/job/redis/rediswq.py b/content/bn/examples/application/job/redis/rediswq.py new file mode 100644 index 0000000000..c868682e90 --- /dev/null +++ b/content/bn/examples/application/job/redis/rediswq.py @@ -0,0 +1,129 @@ +#!/usr/bin/env python + +# Based on http://peter-hoffmann.com/2012/python-simple-queue-redis-queue.html +# and the suggestion in the redis documentation for RPOPLPUSH, at +# http://redis.io/commands/rpoplpush, which suggests how to implement a work-queue. + + +import redis +import uuid +import hashlib + +class RedisWQ(object): + """Simple Finite Work Queue with Redis Backend + + This work queue is finite: as long as no more work is added + after workers start, the workers can detect when the queue + is completely empty. + + The items in the work queue are assumed to have unique values. + + This object is not intended to be used by multiple threads + concurrently. + """ + def __init__(self, name, **redis_kwargs): + """The default connection parameters are: host='localhost', port=6379, db=0 + + The work queue is identified by "name". The library may create other + keys with "name" as a prefix. + """ + self._db = redis.StrictRedis(**redis_kwargs) + # The session ID will uniquely identify this "worker". + self._session = str(uuid.uuid4()) + # Work queue is implemented as two queues: main, and processing. + # Work is initially in main, and moved to processing when a client picks it up. + self._main_q_key = name + self._processing_q_key = name + ":processing" + self._lease_key_prefix = name + ":leased_by_session:" + + def sessionID(self): + """Return the ID for this session.""" + return self._session + + def _main_qsize(self): + """Return the size of the main queue.""" + return self._db.llen(self._main_q_key) + + def _processing_qsize(self): + """Return the size of the main queue.""" + return self._db.llen(self._processing_q_key) + + def empty(self): + """Return True if the queue is empty, including work being done, False otherwise. + + False does not necessarily mean that there is work available to work on right now, + """ + return self._main_qsize() == 0 and self._processing_qsize() == 0 + +# TODO: implement this +# def check_expired_leases(self): +# """Return to the work queueReturn True if the queue is empty, False otherwise.""" +# # Processing list should not be _too_ long since it is approximately as long +# # as the number of active and recently active workers. +# processing = self._db.lrange(self._processing_q_key, 0, -1) +# for item in processing: +# # If the lease key is not present for an item (it expired or was +# # never created because the client crashed before creating it) +# # then move the item back to the main queue so others can work on it. +# if not self._lease_exists(item): +# TODO: transactionally move the key from processing queue to +# to main queue, while detecting if a new lease is created +# or if either queue is modified. + + def _itemkey(self, item): + """Returns a string that uniquely identifies an item (bytes).""" + return hashlib.sha224(item).hexdigest() + + def _lease_exists(self, item): + """True if a lease on 'item' exists.""" + return self._db.exists(self._lease_key_prefix + self._itemkey(item)) + + def lease(self, lease_secs=60, block=True, timeout=None): + """Begin working on an item the work queue. + + Lease the item for lease_secs. After that time, other + workers may consider this client to have crashed or stalled + and pick up the item instead. + + If optional args block is true and timeout is None (the default), block + if necessary until an item is available.""" + if block: + item = self._db.brpoplpush(self._main_q_key, self._processing_q_key, timeout=timeout) + else: + item = self._db.rpoplpush(self._main_q_key, self._processing_q_key) + if item: + # Record that we (this session id) are working on a key. Expire that + # note after the lease timeout. + # Note: if we crash at this line of the program, then GC will see no lease + # for this item a later return it to the main queue. + itemkey = self._itemkey(item) + self._db.setex(self._lease_key_prefix + itemkey, lease_secs, self._session) + return item + + def complete(self, value): + """Complete working on the item with 'value'. + + If the lease expired, the item may not have completed, and some + other worker may have picked it up. There is no indication + of what happened. + """ + self._db.lrem(self._processing_q_key, 0, value) + # If we crash here, then the GC code will try to move the value, but it will + # not be here, which is fine. So this does not need to be a transaction. + itemkey = self._itemkey(value) + self._db.delete(self._lease_key_prefix + itemkey) + +# TODO: add functions to clean up all keys associated with "name" when +# processing is complete. + +# TODO: add a function to add an item to the queue. Atomically +# check if the queue is empty and if so fail to add the item +# since other workers might think work is done and be in the process +# of exiting. + +# TODO(etune): move to my own github for hosting, e.g. github.com/erictune/rediswq-py and +# make it so it can be pip installed by anyone (see +# http://stackoverflow.com/questions/8247605/configuring-so-that-pip-install-can-work-from-github) + +# TODO(etune): finish code to GC expired leases, and call periodically +# e.g. each time lease times out. diff --git a/content/bn/examples/application/job/redis/worker.py b/content/bn/examples/application/job/redis/worker.py new file mode 100644 index 0000000000..c3523a4e21 --- /dev/null +++ b/content/bn/examples/application/job/redis/worker.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python + +import time +import rediswq + +host="redis" +# Uncomment next two lines if you do not have Kube-DNS working. +# import os +# host = os.getenv("REDIS_SERVICE_HOST") + +q = rediswq.RedisWQ(name="job2", host=host) +print("Worker with sessionID: " + q.sessionID()) +print("Initial queue state: empty=" + str(q.empty())) +while not q.empty(): + item = q.lease(lease_secs=10, block=True, timeout=2) + if item is not None: + itemstr = item.decode("utf-8") + print("Working on " + itemstr) + time.sleep(10) # Put your actual work here instead of sleep. + q.complete(item) + else: + print("Waiting for work") +print("Queue empty, exiting") diff --git a/content/bn/examples/application/mongodb/mongo-deployment.yaml b/content/bn/examples/application/mongodb/mongo-deployment.yaml new file mode 100644 index 0000000000..04908ce25b --- /dev/null +++ b/content/bn/examples/application/mongodb/mongo-deployment.yaml @@ -0,0 +1,31 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: mongo + labels: + app.kubernetes.io/name: mongo + app.kubernetes.io/component: backend +spec: + selector: + matchLabels: + app.kubernetes.io/name: mongo + app.kubernetes.io/component: backend + replicas: 1 + template: + metadata: + labels: + app.kubernetes.io/name: mongo + app.kubernetes.io/component: backend + spec: + containers: + - name: mongo + image: mongo:4.2 + args: + - --bind_ip + - 0.0.0.0 + resources: + requests: + cpu: 100m + memory: 100Mi + ports: + - containerPort: 27017 diff --git a/content/bn/examples/application/mongodb/mongo-service.yaml b/content/bn/examples/application/mongodb/mongo-service.yaml new file mode 100644 index 0000000000..b9cef607bc --- /dev/null +++ b/content/bn/examples/application/mongodb/mongo-service.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + name: mongo + labels: + app.kubernetes.io/name: mongo + app.kubernetes.io/component: backend +spec: + ports: + - port: 27017 + targetPort: 27017 + selector: + app.kubernetes.io/name: mongo + app.kubernetes.io/component: backend diff --git a/content/bn/examples/application/mysql/mysql-configmap.yaml b/content/bn/examples/application/mysql/mysql-configmap.yaml new file mode 100644 index 0000000000..715d2f5724 --- /dev/null +++ b/content/bn/examples/application/mysql/mysql-configmap.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: mysql + labels: + app: mysql + app.kubernetes.io/name: mysql +data: + primary.cnf: | + # Apply this config only on the primary. + [mysqld] + log-bin + replica.cnf: | + # Apply this config only on replicas. + [mysqld] + super-read-only diff --git a/content/bn/examples/application/mysql/mysql-deployment.yaml b/content/bn/examples/application/mysql/mysql-deployment.yaml new file mode 100644 index 0000000000..419fbe03d3 --- /dev/null +++ b/content/bn/examples/application/mysql/mysql-deployment.yaml @@ -0,0 +1,43 @@ +apiVersion: v1 +kind: Service +metadata: + name: mysql +spec: + ports: + - port: 3306 + selector: + app: mysql + clusterIP: None +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: mysql +spec: + selector: + matchLabels: + app: mysql + strategy: + type: Recreate + template: + metadata: + labels: + app: mysql + spec: + containers: + - image: mysql:5.6 + name: mysql + env: + # Use secret in real usage + - name: MYSQL_ROOT_PASSWORD + value: password + ports: + - containerPort: 3306 + name: mysql + volumeMounts: + - name: mysql-persistent-storage + mountPath: /var/lib/mysql + volumes: + - name: mysql-persistent-storage + persistentVolumeClaim: + claimName: mysql-pv-claim diff --git a/content/bn/examples/application/mysql/mysql-pv.yaml b/content/bn/examples/application/mysql/mysql-pv.yaml new file mode 100644 index 0000000000..c89779a83f --- /dev/null +++ b/content/bn/examples/application/mysql/mysql-pv.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: mysql-pv-volume + labels: + type: local +spec: + storageClassName: manual + capacity: + storage: 20Gi + accessModes: + - ReadWriteOnce + hostPath: + path: "/mnt/data" +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: mysql-pv-claim +spec: + storageClassName: manual + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 20Gi diff --git a/content/bn/examples/application/mysql/mysql-services.yaml b/content/bn/examples/application/mysql/mysql-services.yaml new file mode 100644 index 0000000000..bc01506678 --- /dev/null +++ b/content/bn/examples/application/mysql/mysql-services.yaml @@ -0,0 +1,32 @@ +# Headless service for stable DNS entries of StatefulSet members. +apiVersion: v1 +kind: Service +metadata: + name: mysql + labels: + app: mysql + app.kubernetes.io/name: mysql +spec: + ports: + - name: mysql + port: 3306 + clusterIP: None + selector: + app: mysql +--- +# Client service for connecting to any MySQL instance for reads. +# For writes, you must instead connect to the primary: mysql-0.mysql. +apiVersion: v1 +kind: Service +metadata: + name: mysql-read + labels: + app: mysql + app.kubernetes.io/name: mysql + readonly: "true" +spec: + ports: + - name: mysql + port: 3306 + selector: + app: mysql diff --git a/content/bn/examples/application/mysql/mysql-statefulset.yaml b/content/bn/examples/application/mysql/mysql-statefulset.yaml new file mode 100644 index 0000000000..67755dbb9e --- /dev/null +++ b/content/bn/examples/application/mysql/mysql-statefulset.yaml @@ -0,0 +1,168 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: mysql +spec: + selector: + matchLabels: + app: mysql + app.kubernetes.io/name: mysql + serviceName: mysql + replicas: 3 + template: + metadata: + labels: + app: mysql + app.kubernetes.io/name: mysql + spec: + initContainers: + - name: init-mysql + image: mysql:5.7 + command: + - bash + - "-c" + - | + set -ex + # Generate mysql server-id from pod ordinal index. + [[ $HOSTNAME =~ -([0-9]+)$ ]] || exit 1 + ordinal=${BASH_REMATCH[1]} + echo [mysqld] > /mnt/conf.d/server-id.cnf + # Add an offset to avoid reserved server-id=0 value. + echo server-id=$((100 + $ordinal)) >> /mnt/conf.d/server-id.cnf + # Copy appropriate conf.d files from config-map to emptyDir. + if [[ $ordinal -eq 0 ]]; then + cp /mnt/config-map/primary.cnf /mnt/conf.d/ + else + cp /mnt/config-map/replica.cnf /mnt/conf.d/ + fi + volumeMounts: + - name: conf + mountPath: /mnt/conf.d + - name: config-map + mountPath: /mnt/config-map + - name: clone-mysql + image: gcr.io/google-samples/xtrabackup:1.0 + command: + - bash + - "-c" + - | + set -ex + # Skip the clone if data already exists. + [[ -d /var/lib/mysql/mysql ]] && exit 0 + # Skip the clone on primary (ordinal index 0). + [[ `hostname` =~ -([0-9]+)$ ]] || exit 1 + ordinal=${BASH_REMATCH[1]} + [[ $ordinal -eq 0 ]] && exit 0 + # Clone data from previous peer. + ncat --recv-only mysql-$(($ordinal-1)).mysql 3307 | xbstream -x -C /var/lib/mysql + # Prepare the backup. + xtrabackup --prepare --target-dir=/var/lib/mysql + volumeMounts: + - name: data + mountPath: /var/lib/mysql + subPath: mysql + - name: conf + mountPath: /etc/mysql/conf.d + containers: + - name: mysql + image: mysql:5.7 + env: + - name: MYSQL_ALLOW_EMPTY_PASSWORD + value: "1" + ports: + - name: mysql + containerPort: 3306 + volumeMounts: + - name: data + mountPath: /var/lib/mysql + subPath: mysql + - name: conf + mountPath: /etc/mysql/conf.d + resources: + requests: + cpu: 500m + memory: 1Gi + livenessProbe: + exec: + command: ["mysqladmin", "ping"] + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + readinessProbe: + exec: + # Check we can execute queries over TCP (skip-networking is off). + command: ["mysql", "-h", "127.0.0.1", "-e", "SELECT 1"] + initialDelaySeconds: 5 + periodSeconds: 2 + timeoutSeconds: 1 + - name: xtrabackup + image: gcr.io/google-samples/xtrabackup:1.0 + ports: + - name: xtrabackup + containerPort: 3307 + command: + - bash + - "-c" + - | + set -ex + cd /var/lib/mysql + + # Determine binlog position of cloned data, if any. + if [[ -f xtrabackup_slave_info && "x$( change_master_to.sql.in + # Ignore xtrabackup_binlog_info in this case (it's useless). + rm -f xtrabackup_slave_info xtrabackup_binlog_info + elif [[ -f xtrabackup_binlog_info ]]; then + # We're cloning directly from primary. Parse binlog position. + [[ `cat xtrabackup_binlog_info` =~ ^(.*?)[[:space:]]+(.*?)$ ]] || exit 1 + rm -f xtrabackup_binlog_info xtrabackup_slave_info + echo "CHANGE MASTER TO MASTER_LOG_FILE='${BASH_REMATCH[1]}',\ + MASTER_LOG_POS=${BASH_REMATCH[2]}" > change_master_to.sql.in + fi + + # Check if we need to complete a clone by starting replication. + if [[ -f change_master_to.sql.in ]]; then + echo "Waiting for mysqld to be ready (accepting connections)" + until mysql -h 127.0.0.1 -e "SELECT 1"; do sleep 1; done + + echo "Initializing replication from clone position" + mysql -h 127.0.0.1 \ + -e "$( + # /var/lib/docker/containers/997599971ee6366d4a5920d25b79286ad45ff37a74494f262e3bc98d909d0a7b/997599971ee6366d4a5920d25b79286ad45ff37a74494f262e3bc98d909d0a7b-json.log + # The /var/log directory on the host is mapped to the /var/log directory in the container + # running this instance of Fluentd and we end up collecting the file: + # /var/log/containers/synthetic-logger-0.25lps-pod_default-synth-lgr-997599971ee6366d4a5920d25b79286ad45ff37a74494f262e3bc98d909d0a7b.log + # This results in the tag: + # var.log.containers.synthetic-logger-0.25lps-pod_default-synth-lgr-997599971ee6366d4a5920d25b79286ad45ff37a74494f262e3bc98d909d0a7b.log + # The record reformer is used is discard the var.log.containers prefix and + # the Docker container ID suffix and "kubernetes." is pre-pended giving the tag: + # kubernetes.synthetic-logger-0.25lps-pod_default-synth-lgr + # Tag is then parsed by google_cloud plugin and translated to the metadata, + # visible in the log viewer + + # Example: + # {"log":"[info:2016-02-16T16:04:05.930-08:00] Some log text here\n","stream":"stdout","time":"2016-02-17T00:04:05.931087621Z"} + + type tail + format json + time_key time + path /var/log/containers/*.log + pos_file /var/log/gcp-containers.log.pos + time_format %Y-%m-%dT%H:%M:%S.%N%Z + tag reform.* + read_from_head true + + + + type parser + format /^(?\w)(? + + + type record_reformer + enable_ruby true + tag raw.kubernetes.${tag_suffix[4].split('-')[0..-2].join('-')} + + + # Detect exceptions in the log output and forward them as one log entry. + + @type copy + + + @type prometheus + + + type counter + name logging_line_count + desc Total number of lines generated by application containers + + tag ${tag} + + + + + @type detect_exceptions + + remove_tag_prefix raw + message log + stream stream + multiline_flush_interval 5 + max_bytes 500000 + max_lines 1000 + + + system.input.conf: |- + # Example: + # Dec 21 23:17:22 gke-foo-1-1-4b5cbd14-node-4eoj startupscript: Finished running startup script /var/run/google.startup.script + + type tail + format syslog + path /var/log/startupscript.log + pos_file /var/log/gcp-startupscript.log.pos + tag startupscript + + + # Examples: + # time="2016-02-04T06:51:03.053580605Z" level=info msg="GET /containers/json" + # time="2016-02-04T07:53:57.505612354Z" level=error msg="HTTP Error" err="No such image: -f" statusCode=404 + + type tail + format /^time="(?