--no-managed.
المتطلبات الأساسية
تسجيل بيئتك
قبل التسجيل، يسجّل فريق الحساب بيئتك ويفعّل الوضع المُدار لمؤسستك. زوّدهم بما يلي:- معرّف حساب AWS، والمنطقة، واسم عنقود EKS
- ما إذا كان موصل يعمل على جهاز افتراضي يعمل بنظام Linux أم داخل العنقود
- مجموعة العقد المخصّصة لمكوّنات المنصة
- بادئة مساحة الأسماء للخدمات (القيمة الافتراضية
ns-) - كيفية سحب عنقودك لصور ClickHouse: عبر وصول السجل الذي تهيّئه ClickHouse Cloud لحسابك، أو عبر مرآتك الخاصة
chart_repository_arn في جذور Terraform). وفي حالة التثبيت عبر Terraform، تتسلّم في هذه المرحلة أيضًا حزمة المنصة: ففي Helm يطبّقها الأمر clicklink clctl init --managed --from-terraform --platform-bundle، وعلى الجهاز الافتراضي يطبّقها الأمر clicklink clctl platform approve --bundle بعد التسجيل. أمّا أي تثبيت مُدار آخر فيتلقّى حزمته الأولى لاحقًا، إذ يجهّزها المنفّذ ثم تُطبَّق باستخدام clicklink clctl platform approve كما هو موضّح في تحديثات المنصة؛ أمّا التثبيت باستخدام --no-managed فلا يحتاج إلى أي حزمة. ويحدّد هذا الرمز بيئتك، لذا لا يحتاج التسجيل إلى أي معرّف إضافي.
لكل عملية تثبيت
- الموصل بالإصدار v0.17.0 أو أحدث. لا تحتوي الإصدارات الأقدم على الوضع المُدار ولا على أوامر
platformولا علىinstances create. ويقدّم المثبّت أحدث إصدار ما لم تمرّر--version. - نقطة نهاية الموصل ورمز التسجيل الخاصان بك، ويُقدَّمان أثناء التسجيل.
- حركة الخروج (egress) على المنفذ 443 إلى
https://<subdomain>.<connector-domain>وhttps://<subdomain>.enroll.<connector-domain>، إضافة إلىreleases.clicklink.clickhouse.comوAmazon ECR Public وقت التثبيت. وفي الوضع المُدار يتصل المنفّذ أيضًا بـ Amazon ECR وSTS عندما تسحب مزامنة أو عملية إنشاء على مستوى المنصة مخططًا (مخطط) من ECR. وإذا تعذّر الوصول إلى أيٍّ من هذه الوجهات، راجع عمليات التثبيت المعزولة شبكيًا والمنعكسة. - عنقود Amazon EKS للوضع المُدار. يرفض
initالوضع المُدار على أي عنقود آخر، ويشير إلى--no-managedللتثبيت من دون المنفّذ. ويوفّر Terraform على AWS وحدات جذرية لعنقود جديد وأخرى لعنقود قائم تشغّله بالفعل، إضافة إلى الأمرinitالذي يثبّت طبقة المنصة فوقها. - صلاحيات admin على العنقود من أجل الأذونات الخاصة بالمنفّذ. تنشئ هذه الأذونات كلًّا من ClusterRole وClusterRoleBinding وValidatingAdmissionPolicy تحصر المنفّذ ضمن مساحات الأسماء الواقعة تحت prefix الخاص بك. على Kubernetes، يحتاج ملف kubeconfig الذي تشغّل به
initإلى هذه الصلاحيات. وعلى جهاز افتراضي، يحتاجها ملف kubeconfig الخاص بالمضيف؛ وإذا لم يكن للمضيف صلاحيات admin، يطبعinitالأمر الذي يجب تشغيله من مضيف يمتلكها. - لا وجود لـ ClickHouse بعد. يبدأ التثبيت المُدار من دون أي خدمات؛ أما الخدمات التي ينشئها المنفّذ فتسجّل نفسها تلقائيًا. وفي الوضع المُدار لا يسجّل
initأي ClickHouse تشغّله بنفسك (وعلى Kubernetes يرفض--instanceو--instance-namespace). ولمراقبة عنقود من هذا النوع، ثبّت نشرًا (deployment) منفصلًا للموصل باستخدام--no-managed. ويتيح--ch-user-suffixللنشرين مشاركة instance واحد من دون تعارض في مستخدمي الموصل. ويحتاج ذلك النشر إلى مستمع native يمكن الوصول إليه، المنفذ الآمن 9440 أو المنفذ بنص صريح 9000، ويُكتشف تلقائيًا على Kubernetes. كما يحتاج إلى وصول ClickHouse admin من أجل التجهيز: مستخدمdefaultبلا كلمة مرور، أو كلمة مرور تُمرَّر عبر--ch-admin-password-stdinأو عند المطالبة بها، أو حقن CR للـ instances المُدارة بواسطة مشغّل. - cosign في أي مكان تنزّل فيه ملفات الإصدار. يتحقق المثبّت دائمًا من قيمة التحقق SHA-256. وعند تثبيت cosign يتحقق أيضًا من توقيع الإصدار، ومع
CLICKLINK_REQUIRE_COSIGN=1يرفض المتابعة من دون cosign.
لعمليات التثبيت على Kubernetes (Helm)
- ملف kubeconfig يشير سياقه الحالي إلى عنقود EKS، ويجب أن يمتلك صلاحية إنشاء وقراءة مساحة الأسماء الخاص بالـ موصل، وتطبيق Secrets، وإنشاء ServiceAccounts وRoles وRoleBindings، وتثبيت الـ مخطط، ومنح الـ executor صلاحياته على مستوى العنقود.
- بيانات اعتماد AWS على جهاز العمل (عبر البيئة أو profile) تتضمن
eks:DescribeClusterوec2:DescribeVpcs. يستخدمهاinitلقراءة كتل CIDR الخاصة بشبكة VPC لعنقودك من أجل NetworkPolicy. وإذا فشل البحث، يُصدر تحذيرًا ويترك لك تعبئة تلك القائمة. - نطاقات CIDR الواقعة خلف نقطة نهاية الـ موصل لديك، لتمكين NetworkPolicy ذات الرفض الافتراضي في الـ مخطط أثناء التثبيت. وبدونها، يهيّئ
initالسياسة معطّلة ويعرض كيفية تمكينها لاحقًا. - StorageClass افتراضي، أو صنف تمرّره عبر
--storage-class؛ إذ يحتفظ كل من مستكشف الأخطاء ومصلحها والـ executor بالحالة على PersistentVolumeClaims. - صلاحية سحب الصور: يجب أن تكون عُقد العنقود قادرة على سحب صورة ECR العامة، أو نسخة مرآة تستضيفها بنفسك.
للتثبيت على جهاز افتراضي يعمل بنظام Linux (systemd)
- أي مضيف Linux يعتمد systemd، بمعمارية amd64 أو arm64. تعمل إصدارات Linux في وضع FIPS.
- صلاحية Root للمثبِّت ولـ
init. - منافذ متاحة: 8082 و8084 و8086 لفحص الـ health والمقاييس، و9999 على واجهة الاسترجاع (loopback) لواجهة برمجة التطبيقات المحلية الخاصة بـ executor، و8443 عند تفعيل بوابة جلسات الدعم.
- صلاحية Admin على خادم واجهة برمجة التطبيقات الخاص بـ Kubernetes للتجهيز ولمنح صلاحيات executor: ملف kubeconfig على المضيف، أو
--serverو--ca-data، أو عبر الـ prompts. تُربط حزم الوصول (access bundles) بحسابات ServiceAccounts في Kubernetes على كلا الهدفين. وفي الوضع المُدار، يجب أن يشير الـ Context الحالي في kubeconfig إلى عنقود EKS الذي تديره؛ فـinitيرفض منح الصلاحيات عبر أي Context آخر.
على جهاز افتراضي، يُعد
--skip-provision السبيل الوحيد لتجاوز اشتراط خادم واجهة برمجة التطبيقات الخاص بـ Kubernetes، وهو مخصص للـ stage فقط. فهو يتخطى تجهيز مستخدم ClickHouse، ومنح صلاحيات executor، وتفعيل الوحدة، والتحقق؛ ولذلك لا ينتج عنه أي موصل قيد التشغيل بمفرده. أما على Kubernetes فيتخطى تجهيز مستخدم ClickHouse فقط. ويبقى منح صلاحيات executor مطبَّقًا، لأن executor الخاص بالمخطط (مخطط) لا يمكنه الجدولة من دون ServiceAccount الممنوح.التثبيت والتسجيل
1
احصل على نقطة نهاية الموصل ورمز التسجيل
يوفّر لك فريق حسابك كليهما بمجرد تسجيل بيئتك. وتكون نقطة النهاية بالشكل التالي:الرمز صالح للاستخدام مرة واحدة فقط وتنتهي صلاحيته سريعًا، لذا نفّذ عملية التسجيل بعد استلامه بوقت قصير. تعامل معه كمعلومة سرية: تقرأه واجهة CLI من موجّه مخفي أو من السطر الأول من stdin، ولا تقرأه مطلقًا من وسيطات سطر الأوامر أو القرص أو السجلات. وإذا انتهت صلاحيته قبل إتمام التسجيل، اطلب رمزًا جديدًا من فريق حسابك.
2
ثبّت واجهة سطر الأوامر (CLI) وتحقّق من عملها
أمر واحد يثبّت ملفًا تنفيذيًا موثّقًا باسم للتثبيت على جهاز افتراضي، شغّل البرنامج النصي نفسه على المضيف مع تقبل كلتا الصيغتين الخيار
clicklink. فهو يكتشف منصّتك (macOS أو Linux، amd64 أو arm64)، وينزّل الإصدار الحالي، ويتحقق من قيمة التحقق SHA-256. وإذا كان cosign مثبّتًا، فإنه يتحقق أيضًا من توقيع الإصدار. ويثبّت في /usr/local/bin إن كان قابلًا للكتابة، وإلا ففي ~/.local/bin (أضف هذا المسار إلى PATH إذا لزم الأمر؛ ويمكن تجاوز ذلك عبر --bin-dir). أما للتثبيت على Kubernetes، فشغّل الأمر من أي حاسوب إداري يملك وصولًا إلى العنقود عبر kubeconfig:--host. وبعد التحقق من التنزيل، يُنشئ مستخدم النظام clicklink، وأدلة /etc/clicklink و/var/lib/clicklink و/var/log/clicklink، ووحدات systemd للمكوّنات الثلاثة جميعها. كما يهيّئ الملف /etc/clicklink/redaction-patterns.yaml بمجموعة أولية من patterns (مع الإبقاء على الملف الموجود إن وُجد)، بحيث تكون الخطوة التالية هي enrollment:--version vX.Y.Z لتثبيت إصدار محدد. وإعادة تنفيذ أي منهما آمنة: إذ ينشئ التثبيت على المضيف نسخة احتياطية من الملف الثنائي السابق ويحافظ على التهيئة النشطة لديك. ولفحص البرنامج النصي قبل تشغيله، أو لتنزيل أرشيف الإصدار والتحقق منه بنفسك، راجع التنزيل والتحقق اليدوي.3
سجّل الموصل وثبّته
يستهلك وعند نجاح التحقق من التثبيت، يطبع
init --enroll الرمز الخاص بك، ويحصل على شهادة عميل موقّعة وعلى منحة الـ executor على مستوى العنقود، ثم يثبّت الـ connector ويتحقق منه.في الطرفية، يسأل init: Enable managed mode (ClickHouse manages the lifecycle of ClickHouse services in this cluster)? مع تحديد yes مسبقًا. مرّر --managed لتخطي الـ prompt، أو --no-managed لتثبيت للمراقبة فقط دون الـ executor. أي تثبيت جديد غير تفاعلي دون أيٍّ من هذين الـ flags يترك الوضع المُدار معطّلًا (إعادة التشغيل بـ --force تحافظ على وضعية الإعداد المُستبدَل)، لذا مرّر --managed دائمًا في النصوص البرمجية.- Kubernetes
- جهاز Linux افتراضي
من محطة العمل لديك، مع توجيه سياق kube إلى عنقود EKS الخاص بك، شغّل:ألصق الـ enrollment token في الـ prompt المخفي. يقرأ مرّر
init اسم العنقود والـ region وحساب AWS من ARN الخاص بـ EKS في السياق الحالي، فلا حاجة لكتابة أي شيء عن العنقود. ثم يطلب منك:- namespace الخاص بالـ connector (الافتراضي
clicklink) - StorageClass، فقط عندما لا يحدد العنقود قيمة افتراضية
- نطاقات CIDR خلف نقطة نهاية الـ connector لديك، من أجل allowlist الخاص بـ egress في NetworkPolicy (اتركها فارغة لتجهيز السياسة معطّلة)
- وضعية جلسة الدعم، وفي حال تفعيلها، allowlist لبريد المشغّلين الإلكتروني
init الرمز ويحفظ الـ enrollment bundle باسم handoff.yaml في مجلد العمل. ويجهّز طبقة قيم Helm clicklink-values.yaml مع كتلة executor ونطاقات VPC الخاصة بعنقودك بوصفها نطاقات CIDR لخادم API في NetworkPolicy. وينشئ الـ namespace، ويطبّق الـ Secret clicklink-hmac، وينشئ المفتاح الخاص داخل الـ Secret clicklink-mtls، ويكتب الـ CSR. ويمنح الـ executor وصولًا على مستوى العنقود إلى namespace الخاص بالـ connector، ويجعل ClickHouse Cloud توقّع شهادة العميل. ثم يثبّت إصدار Helm clicklink-connector باستخدام عميل Helm المدمج فيه (دون الحاجة إلى binary الخاص بـ helm) ويتحقق من سلامته.أما في عمليات التشغيل غير التفاعلية، فأجب عن الـ prompts باستخدام الـ flags. استخدم الـ bundle المحفوظ كنقطة دخول، أو مرّر الـ enrollment token إلى --enroll كأول سطر من stdin:--no-gateway بدلًا من --operators لتعطيل جلسات الدعم؛ فالـ flagان متنافيان.init Managed mode is on مع الأمر الذي يهيّئ أول خدمة لك. تابع مع إنشاء خدمة.4
التحقق من نجاح العملية
يتحقق يجب أن تكون جميع pods الخاصة بالـ connector في حالة ينتهي بالرمز
init من صحة التثبيت قبل أن يبلّغ عن النجاح. على Kubernetes، يستطلع نقطة النهاية /livez لكل مكوّن مُفعّل، بما في ذلك المنفّذ (executor)، لمدة تصل إلى خمس دقائق. وعند تفعيل بوابة جلسات الدعم، يشترط أيضًا أن ترد البوابة على الفحوص غير المصادَق عليها بالرمز 401. أما على الجهاز الافتراضي، فينتظر /livez الخاص بكل برنامج خفي، ثم يشغّل مجموعة فحوص Preflight الكاملة. وتفحص هذه المجموعة الإعدادات والملفات وتعارضات المنافذ وإمكانية الوصول عبر الشبكة والاتصال بـ ClickHouse وحالة وحدات systemd للوحدات الثلاث جميعها، وصلاحيات الوصول لكل مكوّن، والقرص، وأنماط الإخفاء.للتأكد يدويًا على Kubernetes:Running وجاهزة: الـ scraper، ومستكشف الأخطاء ومصلحها، والـ executor.للتحقق يدويًا على جهاز افتراضي:0 عند نجاح جميع الفحوصات، وبالرمز 2 في حال وجود أي فشل، ويطبع الفحوصات الفاشلة.5
تنظيف
تتيح حزمة التسجيل يحتفظ الـ connector قيد التشغيل بنسخته الخاصة من الـ credentials؛ فعمليات الترقية وتغييرات التهيئة لا تحتاج إلى هذا الملف إطلاقًا. وإذا احتجت لاحقًا إلى تنفيذ
handoff.yaml (بوضع 0600، في دليل العمل) لعمليات إعادة التشغيل والاسترداد أثناء التثبيت أن تمضي دون الحاجة إلى رمز ثانٍ. وهي تحتوي على سر واجهة برمجة التطبيقات الخاص بالموصّل كنص صريح، لذا احذفها بمجرد التحقق من نجاح التثبيت:init مجددًا، فاطلب enrollment token جديدًا من فريق حسابك ثم نفّذ init --enroll --force.عمليات التثبيت المعزولة شبكيًا والمنعكسة
يمكن نقل جزأين مستقلين خارج النطاق، تبعًا لما يمكن لبيئتك الوصول إليه. لا يحتاج executor إلى أي شيء إضافي؛ فهو يصادق باستخدام شهادة العميل نفسها وبيانات اعتماد واجهة برمجة التطبيقات نفسها التي تستخدمها المكوّنات الأخرى. وتمنحه صلاحيته على مستوى العنقود عبر kubeconfig الخاص بك، لا عبر الشبكة. تسليم الحزمة. إذا كنت تفضّل عدم استبدال رمز عبر الإنترنت، فيمكن لفريق حسابك تسليم حزمة التسجيل مباشرةً أثناء عملية التهيئة؛ شغّلclicklink clctl init --handoff <bundle-file> بدلًا من --enroll. ولا يحلّ --handoff إلا محل استبدال الرمز وحده. أما توقيع الشهادة فيتم عبر نقطة نهاية التسجيل، لذا لا تستخدم --handoff بمفرده إلا عندما تكون تلك النقطة قابلة للوصول من المكان الذي تشغّل منه init.
توقيع الشهادة خارج النطاق. عندما تكون نقطة نهاية التسجيل غير قابلة للوصول من المكان الذي تشغّل منه init، أضف --no-auto-sign: فيهيّئ init كل شيء ويكتب clicklink.csr. أرسل طلب توقيع الشهادة إلى فريق حسابك، ثم أكمل التثبيت بالشهادة والسلسلة المُعادتين. على جهاز افتراضي، شغّل sudo clicklink clctl init --signed-cert client.crt --chain ca-chain.crt. وعلى Kubernetes، شغّل clicklink clctl init --signed-cert client.crt --chain ca-chain.crt --target helm --target-namespace <connector-namespace> --values clicklink-values.yaml؛ وتطبع العملية المهيّأة تسلسلًا مكافئًا من kubectl patch وhelm upgrade --install. ولا ينتقل سوى طلب توقيع الشهادة؛ أما المفتاح الخاص فلا يغادر بيئتك أبدًا.
على Kubernetes، يقبل --chart اسم مخطط يُحدَّد عبر --chart-repo، أو مرجع oci://، أو URL مباشرًا، أو أرشيفًا أو دليلًا محليًا. وتكون القيمة الافتراضية لـ --chart-version هي إصدار واجهة سطر الأوامر نفسه، بحيث ينتقل الملف التنفيذي والمخطط معًا. ولتقديم الصور من سجلّك الخاص، انسخ صورة الحاوية واضبط image.repository في طبقة القيم. وإذا كان مسار الخروج لديك يقدّم جهة إصدار شهادات خاصة إلى connector، فمرّر --api-private-ca. فيتحقق connector بعدها من نقطة نهاية connector لديك مقابل جذور النظام إضافةً إلى سلسلة جهة إصدار الشهادات المأخوذة من حزمة التسجيل.
ويعمل المثبّت من مرآة أيضًا: استضف ملفات الإصدار وinstall.sh على مرآتك الخاصة وأشِر إليها باستخدام CLICKLINK_MIRROR_URL.
التنزيل والتحقق يدويًا
إذا كنت تفضّل عدم تمرير المُثبِّت عبر pipe، فاجلب الإصدار وتحقّق منه بنفسك. تكتشف الكتلة نظامك الأساسي ومعماريته؛ شغّلها كما هي على macOS أو Linux، سواء كان amd64 أو arm64:sudo ./install.sh من الدليل المستخرج. وإلى جانب ملفات الإصدار الخاصة به، يُجري التثبيت نفسه على المضيف كما يفعل الخيار --host.
إذا فشل شيء ما
أعد تنفيذ الأمر نفسه. فالأمرinit متكافئ الاستدعاء: إذ تؤدي إعادة تنفيذه إلى الوصول إلى الحالة نفسها، مع الحفاظ على الإعداد الحالي والملفات المُجهَّزة، وتخطّي ما اكتمل من عمل. وعندما تفشل إحدى الخطوات في منتصفها، تطبع واجهة سطر الأوامر أوامر الاستعادة الدقيقة، وهي آمنة للتكرار.
إذا رُفض التسجيل، فهذا يعني أن الرمز قد استُخدم بالفعل، أو أنه غير صالح أو منتهي الصلاحية. في حالة الرمز المُستخدَم، أعد التنفيذ مع --handoff handoff.yaml، وهو ملف يبقى موجودًا حتى خطوة التنظيف. وإلا فاطلب رمزًا جديدًا من فريق حسابك. وإذا فشل التسجيل بسبب خطأ في النقل، فأعد تنفيذ الأمر نفسه. ورفض إعادة التنفيذ يعني أن المحاولة الأولى استهلكت الرمز، لذا اطلب رمزًا جديدًا.
إذا رُفض الوضع المُدار لأن العنقود ليس EKS، فأعد التنفيذ مع --no-managed للتثبيت دون executor. وعلى جهاز افتراضي، يُرفض أيضًا ملف kubeconfig الذي يشير سياقه الحالي إلى موضع آخر: بدّل السياق باستخدام kubectl config use-context ثم أعد التنفيذ.
إذا تعذّر تطبيق صلاحية الـ executor:
- على جهاز افتراضي، لا يفشل الأمر
init، بل يجهّز الحزمة ويطبع تحذيرًا يتضمن الأمر الدقيق الواجب تنفيذه من ملف kubeconfig يملك صلاحيات admin على العنقود. ويُبلّغ فحص ما قبل التشغيل التحققي عن حالة الـ executor كما هي. نفّذ الأمر المطبوع، ثم أعد تنفيذ أمرinitنفسه للتحقق:
- على Kubernetes، يؤدي رفض منح الصلاحية إلى إيقاف
initقبل نشر المخطط (مخطط)، لأن executor يرتبط بـ ServiceAccount الممنوح ولا يمكنه البدء بدونه. ويُحتفظ بطبقة التهيئة المُجهَّزة (overlay) وبـ Secrets وCSR، ويطبعinitالأمرين اللذين يجب تنفيذهما من مضيف يملك صلاحيات إدارة العنقود. نفّذهما، ثم أعد تشغيل الأمرinitنفسه للمتابعة:
--force هو إعادة تعيين صريحة؛ ولا تحتاج إعادة المحاولة الروتينية إليه. فهو يستبدل الإعداد المحفوظ أو طبقة القيم المُعدِّلة، ويعيد توليد مفتاح العميل، ويستبدل شهادة عميل لم تنتهِ صلاحيتها بعد (وورود الرمز 409 من نقطة نهاية التوقيع يعني أن هناك شهادة موجودة بالفعل). وهو يحفظ معرّف UUID الخاص بعنقود الـ موصل ووضعه في نمط Managed. وتُبقي عمليات إعادة التشغيل غير التفاعلية على هذا الوضع، وعلى الطرفية يكون الـ prompt مضبوطًا عليه افتراضيًا، ما لم تمرّر --managed أو --no-managed. استخدم --force لتدوير بيانات الاعتماد أو استبدال شهادة؛ وراجع العمليات للاطلاع على النموذج الكامل لإعادة التشغيل والاستعادة.