Kubit logoكوبيت

ما 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

عمليات 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‎ معا.

راجع كتابة 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 ويتطلب صلاحية القراءة.

أداة kubit-cli | المستندات | كوبيت