ما kubit-cli؟
kubit-cli أداة سطر أوامر من Kubit لفحص مخرجات Helm Chart وتنفيذ عمليات Pack المتخصصة والعمل مع Vault وبعض عمليات Pack Operator. اسم الملف التنفيذي والأمر الرئيسي هو kubit. راجع Helm وHelm Chart لفهم العلاقة بين Chart وRelease وPack.
توفر الأداة مخرجات Helm والفروقات وmigration لملف Pack وexports وأوامر تشفير البيانات. استخدم kubectl لإدارة الموارد العامة وKubchi للعمليات من اللوحة.
المتطلبات
- ملف
kubeconfigصالح أو متغير البيئةKUBECONFIG. - اتصال شبكي بـ cluster API.
- صلاحية العملية المطلوبة في namespace.
- Pack Operator وخدمة API الخاصة به للأوامر البعيدة.
تستخدم kubit-cli الهوية والسياق المحددين في kubeconfig. حدد context وnamespace بوضوح قبل أي عملية تغيّر الموارد.
تثبيت الأداة
curl -fL https://kubit.cloud/download/kubit -o kubit
chmod +x kubit
sudo install -m 0755 kubit /usr/local/bin/kubit
تحقق من الإصدار والمساعدة:
kubit --version
kubit --help
إذا لم تستطع الكتابة في /usr/local/bin، ضع الملف في مسار شخصي موجود في PATH. للحصول على إصدار المؤسسة أو طريقة التحقق من الملف، اطلب العنوان والطريقة المعتمدين من دعم Kubit.
الاتصال بـ cluster
يمكن كتابة خيارات الاتصال مع الأمر الرئيسي أو الفرعي:
| الخيار | الاستخدام |
|---|---|
-n, --namespace NS | namespace العملية |
-x, --context CTX | context المحدد في kubeconfig |
--kubeconfig PATH | مسار ملف kubeconfig |
--as USERNAME | انتحال هوية مستخدم عند توفر الصلاحية |
--as-group GROUP | انتحال هوية مجموعة، ويمكن تكراره |
-d, --debug | عرض تفاصيل الخطأ |
kubit --context production -n my-project helm-template my-app
مرجع الأوامر
أوامر المستخدم النهائي:
| الأمر | الاستخدام |
|---|---|
completion | إنشاء shell completion |
helm-values | عرض values النهائية لـ Pack |
helm-template | إنشاء ملفات Helm من دون تطبيقها |
helm-diff | مقارنة المخرجات المطلوبة مع Helm Release الحالي |
helm-export | تصدير Pack كملف Chart وvalues ودليل تثبيت |
helm-upgrade | تنفيذ Helm upgrade مباشرة من جهاز المستخدم |
pack exports | قراءة exports المعرفة في pack-metadata.yaml |
pack migrate | تنفيذ migrations المعرفة في Chart |
pack force-upgrade | إعادة تنفيذ مسار ترقية Pack Operator |
pack rollout-restart | إعادة تشغيل workloads التابعة لـ Pack |
vault create | إنشاء Vault key |
vault list | عرض Vault keys |
vault encrypt | تشفير نص |
vault decrypt | فك تشفير نص |
vault gen-password | إنشاء كلمة مرور عشوائية وتشفيرها اختياريا |
تحتوي مجموعة operator على عمليات إدارية وتجريبية مثل مسح cache وتحديث repositories وتغيير log level. هذه الأوامر لمدير cluster وليست للاستخدام اليومي.
استخدم --help بعد مسار الأمر نفسه لعرض خيارات الإصدار المثبت:
kubit --help
kubit helm-diff --help
kubit pack migrate --help
kubit vault encrypt --help
اختيار إدخال Pack والمخرجات
تقبل معظم أوامر Helm وPack أحد الإدخالين:
- اسم Pack موجود في cluster، ويلزم معه
-n, --namespace. - ملف محلي عبر
-f, --packfile، ويمكن تحديد namespace داخل الملف أو عبر--namespace.
لا ترسل اسم Pack و--packfile معا:
kubit -n my-project helm-template redis
kubit helm-template --packfile redis.pack.yaml
| الخيار | الاستخدام |
|---|---|
-o, --outfile PATH | كتابة النص في ملف بدلا من stdout |
-o, --outdir DIR | تحديد مجلد helm-export، ويجب أن يكون موجودا |
-c, --local-chartpath DIR | استبدال Chart في Pack مؤقتا بملف محلي |
عرض Helm values النهائية
يعالج helm-values المتغيرات وtemplates وvalues الفعلية ويعرض YAML النهائي المرسل إلى Helm:
kubit -n my-project helm-values redis
kubit helm-values -f redis.pack.yaml -o redis.values.yaml
استخدم المخرجات لتشخيص أولوية قيم organization وproject وPack. قد تحتوي على بيانات حساسة؛ راجع الملف قبل حفظه في Git أو مشاركته.
فحص ملفات Helm والفروقات
kubit -n my-project helm-template redis
kubit helm-template -f redis.pack.yaml -o redis.rendered.yaml
يفعّل --debug تفاصيل debug في Helm template. لاختبار Chart محلي:
kubit helm-template -f redis.pack.yaml \
--local-chartpath ../sabz-collection/charts-paas/redis
استخدم helm-diff للمقارنة مع Helm Release الحالي:
kubit -n my-project helm-diff redis
kubit helm-diff -f redis.pack.yaml --color yes
| الخيار | الاستخدام |
|---|---|
--color auto|yes|no | التحكم في لون المخرجات، والافتراضي auto |
--diff-debug | إرسال debug إلى Helm diff |
-D, --find-renames N | ضبط حد اكتشاف rename |
-c, --local-chartpath DIR | المقارنة مع Chart محلي |
تصدير Pack لاستخدام Helm
ينشئ helm-export مجلدا يحتوي على أرشيف Chart بامتداد tgz وvalues ودليل تثبيت مستقل:
mkdir -p redis-export
kubit -n my-project helm-export redis --outdir redis-export
إذا غاب --outdir، يصبح اسم Pack أو ملف التعريف أساس اسم المجلد. راجع values بحثا عن بيانات حساسة قبل مشاركة المخرجات.
تنفيذ Helm upgrade مباشرة
kubit -n my-project helm-upgrade redis
kubit helm-upgrade -f redis.pack.yaml \
--local-chartpath ../sabz-collection/charts-paas/redis
لا يبدأ هذا الأمر مسار التوفيق المعتاد للمشغّل. راجع helm-diff قبل التنفيذ. للتغيير الدائم، عدّل ملف Pack وطبقه حتى تبقى الحالة المطلوبة في المصدر.
عمليات Pack
قراءة Pack exports
يمكن لـ Chart تعريف معلومات مثل إصدار التطبيق أو عنوان الخدمة أو الموارد المطلوبة في pack-metadata.yaml:
kubit -n my-project pack exports redis
kubit pack exports -f redis.pack.yaml --output dict
يختار --output صيغة simple أو dict أو list. ويعالج --local-chartpath exports من Chart محلي. لا تضع المخرجات في logs أو tickets قبل فحص البيانات الحساسة.
إعادة تنفيذ عمليات Pack
kubit -n my-project pack force-upgrade redis
kubit -n my-project pack rollout-restart redis
يعيد force-upgrade تنفيذ Helm upgrade، بينما يعيد rollout-restart تشغيل workloads فقط. قد تنشئ العمليتان pods جديدة أو تسببان انقطاعا قصيرا.
migration لملف Pack
kubit -n my-project pack migrate redis --last-version
kubit pack migrate -f redis.pack.yaml --last-version
| الخيار | الاستخدام |
|---|---|
-v, --chart-version VERSION | اختيار إصدار Chart هدف |
-l, --last-version | اختيار أحدث إصدار متاح |
-c, --local-chartpath DIR | تشغيل migrations من Chart محلي |
-i, --inline | كتابة النتيجة في الملف أو Pack الحالي |
لا تستخدم --chart-version و--last-version معا.
يغير --inline الملف المحلي أو مورد Pack. نفذ migration أولا من دون هذا الخيار، وراجع المخرجات، واحتفظ بالإصدار السابق في Git.
راجع كتابة pack-migrations.yaml لتفاصيل السلاسل وsteps وtags.
العمل مع Vault
هذا القسم مرجع أوامر Vault في kubit-cli. راجع استخدام Vault في Pack لموضع القيم المشفرة وسلوك Pack Operator.
إنشاء Vault keys وعرضها
printf %s "$VAULT_PASSWORD" | kubit -n my-project vault create \
--vault-id app-vault \
--vault-password-stdin
إذا لم تُرسل --vault-password أو --vault-salt أو stdin، تُنشأ القيم عشوائيا. لا يمكن استخدام --vault-password و--vault-password-stdin معا. يعيد --dry-run ملف Secret فقط ولا ينشئه.
kubit -n my-project vault list
kubit vault list --all-namespaces
استخدم واحدا فقط من --namespace و--all-namespaces.
التشفير وفك التشفير
يمكن إرسال النص كـ argument أو pipe أو إدخال تفاعلي. أرسل القيمة الحساسة عبر stdin حتى لا تُحفظ في shell history:
printf %s "$REDIS_PASSWORD" | kubit -n my-project vault encrypt \
--vault-id app-vault
يحذف vault encrypt المسافات من بداية الإدخال ونهايته افتراضيا. استخدم --no-strip للحفاظ عليها. يتيح --vault-password و--vault-salt التشفير من دون قراءة key من namespace.
kubit -n my-project vault decrypt < redis-password.vault
إذا لم يُقرأ Vault key من cluster، مرر كلمة المرور عبر --vault-password. يُطبع النص بعد فكّه في stdout وقد يُنسخ إلى clipboard. لا تضعه في log أو history أو ticket.
إنشاء كلمة مرور عشوائية
kubit vault gen-password
kubit vault gen-password --length 32
مع --vault-id وnamespace، تُشفّر النتيجة بالمفتاح نفسه:
kubit -n my-project vault gen-password \
--length 32 \
--vault-id app-vault
تكتب أوامر vault encrypt وvault decrypt وvault gen-password إلى stdout وتنسخ المخرجات إلى clipboard عندما يكون ذلك متاحا.
shell completion
source <(kubit completion bash)
استخدم kubit completion --help لعرض shells المدعومة. قد يرسل إكمال أسماء namespace وPack طلبا إلى cluster ويتطلب صلاحية القراءة.