Skip to main content
تتناول هذه الصفحة تغييرات التهيئة التي يُرجّح إجراؤها بعد تثبيت الموصل. يرد كل مفتاح، مع قيمته الافتراضية ومعناه، في مرجع التهيئة؛ وترد خيارات سطر الأوامر في مرجع CLI. أما إنشاء الخدمات وتوسيع نطاقها وحذفها فمشروح في الخدمات المُدارة.

واجهات التهيئة

للموصل واجهة تهيئة واحدة لكل هدف تثبيت.
يُنشئ 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 قيد التشغيل ولا يعطّلها. أوقفها قبل تغيير التهيئة:
في Kubernetes، اضبط executor.enabled: false في القيم وطبّقها عبر helm upgrade لإزالة Deployment الخاص بالمنفّذ. وفي كلا الهدفين يظل منح العنقود قائمًا إلى أن تقوم بإزالته؛ راجع إيقاف الوضع المُدار.
يُجهّز 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 الخاص به للقراءة فقط من حزمة الوصول التي يُنشئها التجهيز.
أضف المثيل إلى خريطة 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.
بالنسبة إلى مثيل يديره Operator ولا يتوفر له مستخدم إداري قادر على تنفيذ SQL، استبدل --apply-ch-grants بـ --ch-user-via cr (تبقى علامات اختيار الـ pod كما هي)؛ راجع مرجع CLI. ثم اربط زوج Secret وServiceAccount الذي ينشئه كل أمر بخريطة accessBundles المطابقة، وشغّل helm upgrade المعروض أعلاه:
تعمل أوامر access provision نفسها مع --force على تدوير بيانات اعتماد ClickHouse الخاصة بالمثيل. راجع العمليات.

قائمة السماح بالمشغّلين

تتحكم قائمة سماح لعناوين البريد الإلكتروني للمشغّلين في الوصول إلى الجلسات المُدارة عبر Gateway. يجب أن يتضمن كل طلب إلى بوابة الجلسة رمز OIDC ID قصير الأجل، ويكون عنوان البريد الإلكتروني المُثبَت فيه مدرجًا في القائمة. تؤدي قائمة السماح الفارغة إلى إغلاق البوابة. على جهاز افتراضي، يمكن للمستخدم الجذر على المضيف أيضًا إدارة الجلسات مباشرةً من خلال ملف الجلسة المحلي؛ إذ تحكم قائمة السماح مسار البوابة فقط. راجع جلسات الدعم للاطلاع على نموذج الثقة الكامل.
توجد قائمة السماح في الطبقة المتراكبة، ويحوّلها المخطط إلى ConfigMap. لتغييرها، عدّل القائمة وشغّل helm upgrade:

سياسة الشبكة وحركة الخروج (egress)

على Kubernetes، يأتي المخطط مزوّدًا بكائن NetworkPolicy افتراضي يرفض كل الحركة، مع allowlist لحركة الخروج. ولا تصبح كائنات NetworkPolicy سارية المفعول إلا إذا كان الـ CNI لديك يفرضها. وفي ظل CNI يفرض السياسات، يقتصر الوصول على DNS العنقود ومساحات أسماء ClickHouse Service إلى أن تُملأ قائمتا CIDR معًا. وحتى ذلك الحين، لا يملك الموصل أي حركة خروج نحو نقطة نهاية الموصل أو خادم API الخاص بـ Kubernetes. ولا يهيّئ init السياسة في حالة enabled إلا عندما يعرف نطاقات CIDR الواقعة خلف نقطة نهاية الموصل لديك.
تأتي قائمتا 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 على اسمه؛ إذ يقوم مخطط بربطه في المسار نفسه.
يرفض مستكشف الأخطاء وإصلاحها البدء إذا كان ملف الأنماط موجودًا لكنه غير صالح، ويسجل الإدخال المسبّب للمشكلة. أما الملف المهيّأ غير الموجود فيؤدي فقط إلى تسجيل تحذير واستخدام الأنماط المضمّنة. يتحقق clicklink clctl preflight من صحة الملف، لذا شغّله قبل إعادة تشغيل البرنامج الخفي.

المرايا الخاصة ونقاط النهاية ضمن الحدود

يُعيّن المخطط المنشور مسبقًا image.repository إلى صورة موصل عامة متعددة المعماريات وموقّعة باستخدام cosign، لذا لا تتطلب عمليات التثبيت العادية قيمًا للصورة. لفحص الإعدادات الافتراضية المنشورة:
للسحب عبر السجل الخاص بك، استبدل المستودع في التراكب:
لتثبيت المخطط نفسه من مرآة، يقبل init الخيار --chart إما كاسم مخطط يُحلّ ضمن --chart-repo، أو كمرجع oci:// مباشر، أو URL، أو أرشيف أو دليل محلي. يستخدم --chart-version إصدار واجهة سطر الأوامر نفسه افتراضيًا، بحيث يبقى الملف الثنائي والمخطط متزامنين.
عندما تكون نقطة نهاية الموصل خلف مرجع تصديق خاص (CA) ضمن نطاقك، مرّر --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، ويلحقها الموصل بجذور النظام بالطريقة نفسها. للتسجيل وتوقيع الشهادات في بيئة معزولة هوائياً بالكامل، راجع الإعداد الأوّلي.

التخزين

يحتفظ مكوّنان بحالتهما على PersistentVolumeClaims. فمطالبة مستكشف الأخطاء ومصلحها تحتفظ بحالة الجلسة وسجل التدقيق:
أما مطالبة المنفّذ فتحتفظ بقاعدة بيانات الأوامر الخاصة به وبسجل الخدمات التي يديرها:
يضبط init كلتا قيمتَي storageClass على الفئة التي اخترتها. وتؤدي قيمة storageClass الفارغة إلى استخدام StorageClass الافتراضية للعنقود؛ وإذا لم يحدد العنقود فئة افتراضية، يطلب init تحديد واحدة عبر الموجّه أو عبر --storage-class. وتحمل مطالبة المنفّذ التعليق التوضيحي helm.sh/resource-policy: keep، لذا يتركها helm uninstall في مكانها؛ راجع إلغاء التثبيت.