واجهات التهيئة
للموصل واجهة تهيئة واحدة لكل هدف تثبيت.- Kubernetes
- جهاز Linux افتراضي
يُنشئ حرّر التراكب، ثم طبّقه:تعيد هذه الكتلة تطبيق قيمك المعدّلة على إصدار المخطط المثبّت حاليًا، لذا لا يتحول تغيير التهيئة إلى ترقية غير مخططة. والانتقال إلى إصدار جديد خطوة منفصلة؛ راجع العمليات. إذا كان التثبيت يستخدم نسخة معكوسة من مستودع المخططات، فاستبدل
clicklink clctl init تراكب قيم باسم clicklink-values.yaml في دليل العمل، وينشر مخطط clicklink-connector باستخدامه. ويُعد هذا التراكب سجلًا دائمًا لعملية النشر: فعند إعادة تشغيل init، يُحتفَظ به ما لم تمرر --force، لذا تبقى تعديلاتك محفوظة عبر عمليات إعادة التشغيل والاستعادة.تستخدم أوامر التشغيل اللاحقة للنشر في هذه الصفحة وفي العمليات واجهة سطر الأوامر
helm. وحده init يتضمن عميل Helm مدمجًا.--repo بمرآتك.لا يتضمن التثبيت من مرجع مباشر للمخطط (oci:// أو URL أو أرشيف أو دليل محلي، راجع المرايا الخاصة) مستودعًا يمكن الرجوع إليه لحل المرجع. أعد تنفيذ الترقية باستخدام المرجع الذي ثبّت منه:الوضع المُدار
يُشغّل الوضع المُدار المنفّذ، الذي يطبّق على عنقودك دورة حياة الخدمة التي تقودها ClickHouse Cloud. ويقومinit بتفعيله عند التسجيل ويملأ هوية العنقود (انظر تفعيل الوضع المُدار). أما المفاتيح أدناه فهي التي قد تحتاج إلى مراجعتها لاحقًا. ولتغيير الوضعية، أعد تنفيذ init مع --force و--managed أو --no-managed. وكما هو الحال في كل تنفيذ لـ init، يتطلب ذلك نقطة دخول: --handoff إذا احتفظت بالحزمة، أو --enroll مع رمز جديد (انظر إعادة التنفيذ والاسترداد).
على جهاز افتراضي، يعطّل --no-managed المنفّذ في التهيئة، لكنه لا يوقف وحدة systemd قيد التشغيل ولا يعطّلها. أوقفها قبل تغيير التهيئة:
executor.enabled: false في القيم وطبّقها عبر helm upgrade لإزالة Deployment الخاص بالمنفّذ. وفي كلا الهدفين يظل منح العنقود قائمًا إلى أن تقوم بإزالته؛ راجع إيقاف الوضع المُدار.
- Kubernetes
- جهاز افتراضي يعمل بنظام Linux
يُجهّز
init كتلة executor في clicklink-values.yaml انطلاقًا من عنقود EKS الذي يشير إليه سياق kube لديك:cluster.namespacePrefixتشترك فيه جميع المكوّنات، وهو البادئة التي يقصر إذن المُنفِّذ (executor) نطاقه عليها. ويعني تغييره بعد التثبيت إعادة تنفيذ منح الإذن.executor.clusterهو عنقود واحد بالضبط:nameوregionوaccountIdوinCluster: true، وهو ما يجعل المُنفِّذ يستوثق بهوية ServiceAccount الخاص بالـ pod. أما المفاتيح الأخرى فتُمرَّر إلى المُنفِّذ حرفيًا بصيغة snake_case، مثلs3_storage.executor.serviceAccountيبقىcreate: false: إذ يمنحinitوصولًا على مستوى العنقود بأكمله إلى ServiceAccount المسمىpcm-executorفي نطاق أسماء الـ connector، ويرتبط المخطط به بدلًا من إنشاء حساب جديد غير مرتبط.executor.persistenceيوفّر التخزين الدائم لـ/var/lib/clicklink، حيث يحتفظ المُنفِّذ بقاعدة بيانات الأوامر وسجل الخدمات الخاص به؛ راجع storage.executor.platformBundleSecretيحدّد اسم الـ Secret الذي يحتوي على تحديث منصة معتمد. والربط اختياري، لذا يبدأ الـ pod عمله قبل أول اعتماد؛ راجع اعتماد تحديث منصة.executor.ports.healthيوفّر/livezو/metrics؛ ولا يوجد منفذ مقاييس منفصل في أي مكوّن.
helm upgrade الموضّح في أسطح التهيئة.إضافة مثيلات ClickHouse أو تغييرها
تُسجِّل الخدمات التي يُنشئها المنفّذ نفسها تلقائيًا، لذا لن تحتاج في الوضع المُدار إلى إضافتها هنا إطلاقًا. ينطبق هذا القسم على عملية نشر موصل منفصلة تعمل بدون المنفّذ، وتراقب ClickHouse الذي تُشغّله بنفسك. مرِّر--ch-user-suffix عند تنفيذ init الخاص بها إذا كانت عمليتا النشر تتشاركان النسخة نفسها. يُحدِّد كل مدخل ضمن instances نقطة نهاية للبروتوكول native في ClickHouse يقرأ منها موصل: host وport وdatabase وsecure وcluster، وعلى Kubernetes كذلك namespace. ويحدّ كل من max_open_conns وmax_idle_conns سعة مجمّع الاتصالات. لا تُخزَّن بيانات الاعتماد أبدًا في التهيئة؛ إذ يستخرج كل مكوّن مستخدم ClickHouse الخاص به للقراءة فقط من حزمة الوصول التي يُنشئها التجهيز.
- Kubernetes
- جهاز Linux افتراضي
أضف المثيل إلى خريطة وفّر صلاحية القراءة فقط لكل مكوّن من محطة العمل لديك. يطبّق بالنسبة إلى مثيل يديره Operator ولا يتوفر له مستخدم إداري قادر على تنفيذ SQL، استبدل
instances ذات المستوى الأعلى في clicklink-values.yaml (بالحقول نفسها الموجودة في سجل الجهاز الافتراضي). وأضف مساحة اسمه إلى networkPolicy.clickhouseNamespaces، وتتم المطابقة باستخدام التسمية kubernetes.io/metadata.name الخاصة بمساحة الاسم. يعرض المخطط الخريطة داخل ConfigMap باسم clicklink-instance-registry التي يقرأ منها البرنامجان الخفيان. ولا يعمل ذلك إلا عندما تكون executor.enabled بالقيمة false؛ فعند تفعيل المنفّذ يفشل العرض لأن المنفّذ هو مالك تلك ConfigMap.--apply-ch-grants امتيازات ClickHouse المُنشأة داخل الـ pod عبر kubectl exec؛ ومن دونه ينشئ الأمر جانب Kubernetes فقط ويترك ch-grants.sql على القرص لتطبّقه بنفسك. إذا كانت للمستخدم الإداري كلمة مرور، فأضف --ch-admin-password-stdin ومرّر كلمة المرور عبر pipe.--apply-ch-grants بـ --ch-user-via cr (تبقى علامات اختيار الـ pod كما هي)؛ راجع مرجع CLI. ثم اربط زوج Secret وServiceAccount الذي ينشئه كل أمر بخريطة accessBundles المطابقة، وشغّل helm upgrade المعروض أعلاه:قائمة السماح بالمشغّلين
تتحكم قائمة سماح لعناوين البريد الإلكتروني للمشغّلين في الوصول إلى الجلسات المُدارة عبر Gateway. يجب أن يتضمن كل طلب إلى بوابة الجلسة رمز OIDC ID قصير الأجل، ويكون عنوان البريد الإلكتروني المُثبَت فيه مدرجًا في القائمة. تؤدي قائمة السماح الفارغة إلى إغلاق البوابة. على جهاز افتراضي، يمكن للمستخدم الجذر على المضيف أيضًا إدارة الجلسات مباشرةً من خلال ملف الجلسة المحلي؛ إذ تحكم قائمة السماح مسار البوابة فقط. راجع جلسات الدعم للاطلاع على نموذج الثقة الكامل.- Kubernetes
- جهاز Linux افتراضي
توجد قائمة السماح في الطبقة المتراكبة، ويحوّلها المخطط إلى ConfigMap. لتغييرها، عدّل القائمة وشغّل
helm upgrade:سياسة الشبكة وحركة الخروج (egress)
على Kubernetes، يأتي المخطط مزوّدًا بكائن NetworkPolicy افتراضي يرفض كل الحركة، مع allowlist لحركة الخروج. ولا تصبح كائنات NetworkPolicy سارية المفعول إلا إذا كان الـ CNI لديك يفرضها. وفي ظل CNI يفرض السياسات، يقتصر الوصول على DNS العنقود ومساحات أسماء ClickHouse Service إلى أن تُملأ قائمتا CIDR معًا. وحتى ذلك الحين، لا يملك الموصل أي حركة خروج نحو نقطة نهاية الموصل أو خادم API الخاص بـ Kubernetes. ولا يهيّئinit السياسة في حالة enabled إلا عندما يعرف نطاقات CIDR الواقعة خلف نقطة نهاية الموصل لديك.
allowEgressCIDRsأنت من يوفّرها: وهي النطاقات الواقعة خلف نقطة نهاية الموصل الخاصة بك، وتُحدَّد عند التثبيت عبر--egress-cidrsأو عند المطالبة. وتحتاج إليها جميع المكوّنات للوصول إلى نقطة نهاية الموصل الخاصة بك. وفي الوضع المُدار، عندما تكون مخططات المنصة موجودة في Amazon ECR، أضف نطاقات ECR وSTS الخاصة بمنطقتك (أو نطاق mirror الخاص بك). فمن دونها تفشل عمليات سحب مخططات المنفّذ بموجب السياسة.apiserverCIDRsيشتقّهاinitفي الوضع المُدار من شبكة VPC الخاصة بعنقود EKS (eks:DescribeClusterوec2:DescribeVpcs). فكل مكوّن يُصدر طلبات رموز Kubernetes، ويدير المنفّذ الخدمات عبر واجهة برمجة التطبيقات، ولذلك تُحجب جميعها في ظل CNI يفرض السياسات إلى أن تُضبط هذه القائمة. وإذا فشل الـ lookup، يُصدرinitتحذيرًا ويترك القائمة فارغة لتملأها بكتل CIDR الخاصة بشبكة VPC لديك.
clicklink.clickhouse.com/managed-by: executor، وتسمح بها السياسة استنادًا إلى هذا الوسم، ولذلك يمكن في التثبيت المُدار ترك clickhouseNamespaces فارغة. أما المساحات المنشأة خارج المنفّذ، لأجل ClickHouse الذي تشغّله بنفسك، فهي وحدها التي يلزم إدراجها بالاسم.
تفعيل السياسة لاحقًا. إذا تخطّيت نطاقات CIDR الخاصة بنقطة النهاية عند التثبيت، فسيهيّئ init القيمة enabled: false مع allowEgressCIDRs: [] ويطبع الخطوة اللازمة لإتمام الأمر. وبمجرد معرفتك بنطاقات CIDR، اضبط enabled: true وallowEgressCIDRs في clicklink-values.yaml، وتأكد من أن apiserverCIDRs يحتوي على نطاقات شبكة VPC لديك، ثم نفّذ helm upgrade الموضّح في أسطح التهيئة.
وعند تفعيل بوابة الجلسة، تبرز قاعدة خروج إضافية مهمة: clctl.gateway.jwksEgressCIDRs. إذ يجلب مستكشف الأخطاء ومصلحها JWKS الخاص بمزوّد الهوية لديك للتحقق من operator tokens، ولذلك فإن ترك القائمة فارغة في ظل الرفض الافتراضي يحجب كل عمليات التحقق من الرموز:
private.googleapis.com، الذي يغطي مزوّد هوية من Google يتم الوصول إليه عبر Private Google Access. أما لأي مزوّد هوية آخر، فحدّد نطاقه، أو نطاق CIDR الخاص بوسيط الخروج (egress) الذي يتوسّطه.
يتبقى مفتاحان للدخول: metricsScrapeSelector الذي يقصر دخول سحب المقاييس على مساحة أسماء واحدة لـ Prometheus استنادًا إلى الوسم، وkubeletProbeCIDRs الذي يسمح صراحةً بفحوصات سلامة kubelet في ظل سياسة الرفض الافتراضي الصارمة. راجع مرجع التهيئة للاطلاع على قائمة المفاتيح الكاملة.
أنماط إخفاء المعلومات الحساسة
يُخفي مستكشف الأخطاء وإصلاحها المعلومات الحساسة من مخرجاته قبل أن تغادر نطاقك. تغطي الأنماط المضمّنةipv4 وipv6 وbearer-token وaws-access-key وemail وjwt وssh-private-key وconnection-string-credentials. أضف أنماطك الخاصة في ملف YAML. إذ تُطبَّق أولًا حسب ترتيبها في الملف، ثم الأنماط المضمّنة؛ ويستبدل الإدخال الذي يعيد استخدام name لنمط مضمّن ذلك النمط.
يحدّد كل نمط name (مطلوب وفريد)، وregex (مطلوب، بصياغة Go RE2)، وreplace (القيمة الافتراضية [REDACTED]، ويدعم مراجع الالتقاط مثل $1)، وcase_insensitive (القيمة الافتراضية false):
/etc/clicklink/redaction-patterns.yaml. ويهيّئ المثبّت الملف بمجموعة أولية من الأنماط النشطة (مفاتيح واجهات برمجة التطبيقات لأطراف خارجية، ومفاتيح AWS السرية، وما إلى ذلك). يمكنك تقليص هذه المجموعة أو توسيعها؛ ويحافظ المثبّت على نسختك عبر عمليات الترقية. في Kubernetes، ضع ملف YAML في ConfigMap تحت المفتاح redaction-patterns.yaml واضبط troubleshooter.redaction.patternsConfigMap على اسمه؛ إذ يقوم مخطط بربطه في المسار نفسه.
المرايا الخاصة ونقاط النهاية ضمن الحدود
يُعيّن المخطط المنشور مسبقًاimage.repository إلى صورة موصل عامة متعددة المعماريات وموقّعة باستخدام cosign، لذا لا تتطلب عمليات التثبيت العادية قيمًا للصورة. لفحص الإعدادات الافتراضية المنشورة:
init الخيار --chart إما كاسم مخطط يُحلّ ضمن --chart-repo، أو كمرجع oci:// مباشر، أو URL، أو أرشيف أو دليل محلي. يستخدم --chart-version إصدار واجهة سطر الأوامر نفسه افتراضيًا، بحيث يبقى الملف الثنائي والمخطط متزامنين.
--api-private-ca إلى init. إذ يُهيّئ api.tls.caFile: /etc/clicklink/secrets/mtls/ca.crt، ويتحقق الموصل من نقطة النهاية باستخدام جذور النظام إضافةً إلى سلسلة CA من حزمة التسجيل. على جهاز افتراضي (VM)، يكون المكافئ هو api.tls.ca_file في /etc/clicklink/config.yaml: يثبّت init سلسلة الحزمة في /etc/clicklink/tls/ca.crt، ويلحقها الموصل بجذور النظام بالطريقة نفسها. للتسجيل وتوقيع الشهادات في بيئة معزولة هوائياً بالكامل، راجع الإعداد الأوّلي.
التخزين
- Kubernetes
- جهاز افتراضي يعمل بنظام Linux
يحتفظ مكوّنان بحالتهما على PersistentVolumeClaims. فمطالبة مستكشف الأخطاء ومصلحها تحتفظ بحالة الجلسة وسجل التدقيق:أما مطالبة المنفّذ فتحتفظ بقاعدة بيانات الأوامر الخاصة به وبسجل الخدمات التي يديرها:يضبط
init كلتا قيمتَي storageClass على الفئة التي اخترتها. وتؤدي قيمة storageClass الفارغة إلى استخدام StorageClass الافتراضية للعنقود؛ وإذا لم يحدد العنقود فئة افتراضية، يطلب init تحديد واحدة عبر الموجّه أو عبر --storage-class. وتحمل مطالبة المنفّذ التعليق التوضيحي helm.sh/resource-policy: keep، لذا يتركها helm uninstall في مكانها؛ راجع إلغاء التثبيت.