প্রকল্প সম্পর্কে

kestractl হল একটি Go-ভিত্তিক কমান্ড-লাইন ইন্টারফেস যা Kestra ওয়ার্কফ্লো এবং সম্পর্কিত রিসোর্স পরিচালনা করে। এটি Kestra 2.x-কে লক্ষ্য করে (v1 রিলিজ Kestra 1.x-এর সম্পূর্ণ ফিচার সেট কভার করে) এবং একটি e2e ম্যাট্রিক্সের মাধ্যমে Kestra 2.0, 1.3, 1.2, 1.1 এবং 1.0-এর বিরুদ্ধে পরীক্ষা করা হয়; সামঞ্জস্যের উৎস হল COMPATIBLE_KESTRA_VERSION.properties। ইনস্টলেশন একটি সুবিধাজনক স্ক্রিপ্ট (curl | bash) মাধ্যমে দেওয়া হয় যা GitHub REST API-এর মাধ্যমে সর্বশেষ রিলিজ সমাধান করে, GitHub Releases থেকে সরাসরি বাইনারি ডাউনলোড, Docker Hub এবং GHCR-এ প্রকাশিত মাল্টি-আর্ক কন্টেইনার ইমেজ (Alpine এবং distroless ভেরিয়েন্ট), অথবা Go 1.25+ দিয়ে সোর্স থেকে বিল্ড করা যায়। ইনস্টল স্ক্রিপ্ট VERSION এবং INSTALL_DIR ওভাররাইড গ্রহণ করে, এবং অ্যানোনিমাস রেট লিমিট এড়াতে GITHUB_TOKEN দিয়ে GitHub API কল প্রমাণীকরণ করতে পারে। কনফিগারেশন একাধিক নামযুক্ত কনটেক্সট (dev, staging, prod) সমর্থন করে যা ~/.kestractl/config.yaml-এ সংরক্ষিত, টোকেন বা বেসিক অথ সহ, ঐচ্ছিক স্থায়ী HTTP হেডার, এবং একটি ডিফল্ট কনটেক্সট সিলেক্টর। কনফিগারেশন অগ্রাধিকার 12-ফ্যাক্টর মডেল অনুসরণ করে: কমান্ড-লাইন ফ্ল্যাগ, তারপর KESTRACTL_* এনভায়রনমেন্ট ভেরিয়েবল, তারপর কনফিগ ফাইল, তারপর ডিফল্ট। গ্লোবাল ফ্ল্যাগ --host, --token, --username/--password, --tenant, --header, --output (table বা json), --config এবং --verbose কভার করে। কমান্ড গ্রুপ Kestra API-এর বিস্তৃতি কভার করে। ফ্লো: list, list-by-namespace, list-deprecated, get, task, deploy (একক ফাইল বা ডিরেক্টরি, --namespace, --override, --fail-fast সহ), validate (স্থানীয় ফাইল, ডিরেক্টরি, বা সংরক্ষিত ফ্লো-এর বিরুদ্ধে validate-by-query), validate-task, validate-trigger, search-by-source, bulk-update, generate-graph-from-source, graph, expressions, namespace-dependencies, dependencies, enable/disable, delete, delete-by-query, disable-by-query, enable-by-query, export (namespace, by-ids, by-query), import, namespace-sync, revisions, delete-revisions, concurrency-limits, update-concurrency। একটি usage-report কমান্ড 1.x থেকে 2.0 মাইগ্রেশন যাচাই করতে সাহায্য করে, এবং validate-by-query লঙ্ঘনে নন-জিরো প্রস্থান করে যাতে এটি CI গেট হিসেবে কাজ করতে পারে। এক্সিকিউশন: run (--wait সহ), get, list, watch (রিয়েল টাইমে অনুসরণ করে এবং ব্যর্থতায় নন-জিরো প্রস্থান করে), latest, kill, pause, resume, restart, force-run, replay, replay-with-inputs, unqueue, set-labels, set-labels-bulk, unqueue-bulk, change-status-by-ids, kill-by-query, pause-by-query, resume-by-query, restart-by-query, replay-by-query, force-run-by-query, delete-by-query, unqueue-by-query, set-labels-by-query, update-status-by-query, trigger-webhook (GET/POST/PUT ঐচ্ছিক পাথ সাফিক্স সহ), flow-graph, flow-info, flow-info-by-id, download-file, file-metadata, eval-expression, change-status, update-taskrun, delete। ক্যোয়ারী ফিল্টার FIELD:OPERATION:VALUE ফর্ম ব্যবহার করে (যেমন STATE:EQUALS:RUNNING)। ট্রিগার: list, search-for-flow, enable, disable, unlock, restart, update, delete, প্লাস IDs (namespace/flowId/triggerId) এবং ক্যোয়ারী দ্বারা বাল্ক ভেরিয়েন্ট, এবং ব্যাকফিল ব্যবস্থাপনা (create-backfill --start/--end সহ, backfill-pause, backfill-unpause, backfill-delete, এবং তাদের by-ids এবং by-query ভেরিয়েন্ট)। ট্রিগার CSV হিসাবেও এক্সপোর্ট করা যায়। নেমস্পেস: list, list --query সহ, autocomplete, get, create, update, delete, প্লাস পুনরাবৃত্তিযোগ্য --variable বা --variables-file দিয়ে নেমস্পেস ভেরিয়েবল সেট করা, এবং inherited-secrets এবং inherited-variables দেখা। কী-ভ্যালু স্টোর: list, set, update, get, delete, সমর্থিত টাইপ STRING, NUMBER, BOOLEAN, DATETIME, DATE, DURATION, JSON, এবং ঐচ্ছিক ISO 8601 --ttl সহ। নেমস্পেস ফাইল: list (--path এবং --recursive সহ), get (--revision সহ), upload (একক ফাইল বা ডিরেক্টরি, --override, --fail-fast, --allow-missing-namespace সহ), delete (--recursive এবং --force সহ)। প্লাগইন: একটি প্রদত্ত Kestra সংস্করণের জন্য সমস্ত প্লাগইন JAR একটি লক্ষ্য ডিরেক্টরিতে ডাউনলোড করুন, সমান্তরাল ডাউনলোডের জন্য --concurrency সহ, এবং --from-config একটি Kestra application.yaml (অভ্যন্তরীণ স্টোরেজ, সিক্রেট ম্যানেজার, ক্যু/রিপোজিটরি ব্যাকএন্ড) দ্বারা প্রয়োজনীয় শুধুমাত্র কোর প্লাগইন টেনে একটি স্ট্যান্ডঅ্যালোন বা রিমোট ওয়ার্কার বুটস্ট্র্যাপ করতে। একটি list কমান্ড ডাউনলোড ছাড়াই প্রয়োজনীয় কোর প্লাগইন প্রিভিউ করে। ওয়ার্কার: registration-tokens generate অফলাইনে চলে একটি Kestra ইনস্ট্যান্স ছাড়াই একটি ওয়ার্কার রেজিস্ট্রেশন টোকেন তৈরি করতে। ড্যাশবোর্ড (এন্টারপ্রাইজ সংস্করণ): list, get, YAML থেকে create, update, এবং সম্পর্কিত ব্যবস্থাপনা কমান্ড। অতিরিক্ত গ্রুপ apps, blueprints, test suites এবং IAM (users, groups, roles, service accounts, bindings, invitations) কভার করে। অপারেশনাল বিবরণ: kestractl অ্যানোনিমাস টেলিমেট্রি পাঠায় যা কখনও কমান্ড এক্সিকিউশন ব্লক করে না এবং KESTRACTL_TELEMETRY_DISABLED=true দিয়ে নিষ্ক্রিয় করা যায়। আপডেট বিজ্ঞপ্তিগুলি ~/.kestractl/check_for_new_available_version.json-এ 24 ঘন্টা ক্যাশ করা হয়, কমান্ডের পাশাপাশি অ্যাসিঙ্ক্রোনাসভাবে চলে, CI এবং ডেভ বিল্ডে এড়িয়ে যায়, এবং KESTRACTL_VERSION_CHECK_DISABLED=true দিয়ে নিষ্ক্রিয় করা যায়। কন্টেইনার ইমেজ একটি নন-রুট ব্যবহারকারী হিসাবে চলে, তাই কনফিগ ফাইল /home/kestractl/.kestractl (Alpine) বা /home/nonroot/.kestractl (static)-এ মাউন্ট করা উচিত। GitLab CI এবং GitHub Actions কন্টেইনার জব এন্ট্রিপয়েন্ট ওভাররাইড করে এবং একটি শেলের মাধ্যমে স্ক্রিপ্ট চালায়, তাই সেখানে ডিফল্ট Alpine ট্যাগ সুপারিশ করা হয়; -static ট্যাগে কোনো শেল নেই এবং শুধুমাত্র docker run বা kubectl run স্টাইল ইনভোকেশনের সাথে কাজ করে।