ملف إعداد VM
على جهاز VM يعمل بنظام Linux، يقرأ الموصل الملف/etc/clicklink/config.yaml. ينشئه الأمر clicklink clctl init ويُحتفَظ به عند إعادة تشغيل الأمر ما لم تُمرِّر الخيار --force. تستخدم المفاتيح غير الموجودة في الملف الإعدادات الافتراضية المُصرَّفة أدناه. لا يكتب الأمر init أي بيانات اعتماد فيه: تُخزَّن مفاتيح HMAC في مسارات *_file وشهادة العميل ضمن /etc/clicklink/tls.
المفاتيح العليا
| المفتاح | القيمة الافتراضية | المعنى |
|---|---|---|
pcm_infra_uuid | يُنشئه init | معرّف فريد لعملية نشر هذا الموصل، يُرسَل مع كل طلب إلى المصدر. يُحفَظ عند إعادة التشغيل، بما في ذلك --force. لا تعدّله. |
cloud | يكتشفه init | تسمية موفر Cloud لهذا المضيف. مطلوب؛ ترفض العمليات الخفية البدء إذا كان فارغًا. |
region | يكتشفه init | تسمية المنطقة لهذا المضيف. مطلوب؛ ترفض العمليات الخفية البدء إذا كان فارغًا. |
namespace_prefix | ns- | بادئة مساحات أسماء Kubernetes التي توجد فيها الخدمات المُدارة (<prefix><service>). تشتق كل عملية خفية مساحات الأسماء منها. |
report_infra_meta | true | الإبلاغ عن اسم العنقود المُدار ومنطقته وحسابه إلى ClickHouse Cloud مع كل نبضة. وهو المقابل على الجهاز الافتراضي للإعداد cluster.reportInfraMeta في المخطط. |
token_renew.sweep_interval | 10m | عدد مرات فحص المنفّذ والكاشط لرموز ServiceAccount الخاصة بحزمة الوصول لديهما بغرض التجديد. |
token_renew.requested_ttl | 24h | مدة صلاحية الرمز المطلوبة عند التجديد. يمكن لخادم API تقييدها بقيمة أقل. |
api | كتلة اتصال واجهة برمجة التطبيقات المصدر، راجع api. | |
scraper | كتلة العملية الخفية للكاشط، راجع scraper. | |
troubleshooter | كتلة العملية الخفية لأداة استكشاف الأخطاء وإصلاحها، راجع troubleshooter. | |
executor | كتلة العملية الخفية للمنفّذ (الوضع المُدار)، راجع executor. | |
observability | كتلة التسجيل والمنفذ المشتركة، راجع observability. |
instances: في هذا الملف. توجد المثيلات في سجل المثيلات.
api
| المفتاح | القيمة الافتراضية | المعنى |
|---|---|---|
api.endpoint | من حزمة التسجيل | نقطة نهاية الموصّل الخاصة بك، https://<subdomain>.<connector-domain>. |
api.access_key_file | /etc/clicklink/access-key (يكتبه init) | ملف يحتوي على مفتاح وصول HMAC (بوضع 0600). |
api.secret_key_file | /etc/clicklink/secret-key (يكتبه init) | ملف يحتوي على المفتاح السري لـ HMAC (بوضع 0600). |
api.access_key, api.secret_key | غير مضبوطة | مفاتيح HMAC مضمّنة مباشرةً، للتطوير فقط. لا يكتبها init أبدًا؛ والملف الذي يحتوي عليها يحتاج إلى الحماية 0600 نفسها المطلوبة لملفات المفاتيح. وترفض الخدمات الخفية أي ملف تكون فيه الصيغتان مضبوطتين. |
api.tls.enabled | true | يقدّم شهادة عميل mTLS في اتصالات واجهة برمجة التطبيقات. |
api.tls.cert_file | /etc/clicklink/tls/client.crt | شهادة العميل الطرفية لـ mTLS؛ تعيد الخدمات الخفية كتابتها عند التجديد. |
api.tls.key_file | /etc/clicklink/tls/client.key | المفتاح الخاص لعميل mTLS. |
api.tls.ca_file | /etc/clicklink/tls/ca.crt | سلسلة CA إضافية تُلحق بجذور النظام للتحقق من الخادم؛ يثبّت init سلسلة حزمة التسجيل هنا. |
api.retry.max_retries | 5 | عدد محاولات إعادة المحاولة لكل طلب واجهة برمجة تطبيقات. |
api.retry.initial_delay | 1s | تأخير التراجع قبل أول إعادة محاولة. |
api.retry.max_delay | 30s | الحد الأقصى لتأخير التراجع. |
api.retry.jitter_factor | 0.25 | تذبذب عشوائي يُطبّق على تأخيرات التراجع. |
سجل المثيلات
توجد المثيلات في/var/lib/clicklink/instances.yaml، وهي خريطة instances: عليا المستوى مفهرسة بالاسم. يقوم init بتهيئتها (seed) ويتولى المنفّذ صيانتها؛ ويراقب الساحب الملف، لذا تُطبَّق التعديلات دون إعادة تشغيل. يصف كل إدخال هدفًا واحدًا لـ ClickHouse عبر البروتوكول الأصلي:
| المفتاح | القيمة الافتراضية | المعنى |
|---|---|---|
host | اسم المضيف أو عنوان IP لمستمع ClickHouse الأصلي. | |
port | منفذ البروتوكول الأصلي (عادةً 9440 مع TLS و9000 كنص عادي). | |
database | قاعدة البيانات الافتراضية لجلسات الموصل. | |
secure | false | استخدام TLS للاتصال الأصلي. |
max_open_conns | غير محدد | الحد الأقصى للاتصالات المفتوحة بهذا المثيل. |
max_idle_conns | غير محدد | الحد الأقصى للاتصالات المجمّعة الخاملة بهذا المثيل. |
namespace | مساحة أسماء Kubernetes الخاصة بالمثيل، وتُستخدم لتحديد نطاق قراءات Kubernetes لمكوّن استكشاف الأخطاء وإصلاحها. | |
cluster | default | اسم عنقود ClickHouse المستخدم للاستعلامات الموزعة. |
scraper
| المفتاح | القيمة الافتراضية | المعنى |
|---|---|---|
scraper.enabled | false (يكتب init القيمة true) | شغّل خدمة scraper. |
scraper.labels.platform | تسمية تُضاف إلى كل مقياس يتم إصداره. مطلوبة عند تمكين scraper. | |
scraper.labels.env | تسمية البيئة، مثل production. مطلوبة. | |
scraper.labels.region | تسمية المنطقة. مطلوبة. | |
scraper.scrape.interval | 2m | عدد مرات جمع المقاييس من كل مثيل. |
scraper.scrape.timeout | 30s | مهلة الاستعلام لكل عملية جمع. يجب أن تكون أقصر من interval. |
scraper.scrape.max_scrape_window | 30m | إلى أي مدى في الماضي تصل عملية الجمع الأولى عندما لا يكون هناك مؤشر محفوظ. |
scraper.scrape.grace_period | 35s | مدى تأخر نهاية كل نافذة جمع عن الوقت الحالي، بحيث لا تُتجاهل الصفوف المكتوبة متأخرًا. |
scraper.scrape.tables | انظر أدناه | جداول النظام التي تُجمع منها المقاييس لكل مثيل. تتضمن المجموعة الافتراضية metric_log وasynchronous_metric_log وtables وwarnings وserver_settings. ويُستثنى query_log عمدًا كي لا يغادر نص SQL الخام نطاقك افتراضيًا. |
scraper.buffer.path | /var/lib/clicklink/buffer | منطقة تخزين مؤقتة على القرص لتسليم البيانات مرة واحدة على الأقل عند تعذر الوصول إلى نقطة نهاية connector الخاصة بك. |
scraper.buffer.retention | 168h | الحد الأقصى لعمر البيانات المخزنة مؤقتًا. |
scraper.buffer.max_size_mb | 1024 | الحد الأقصى لحجم التخزين المؤقت بالميغابايت. |
scraper.buffer.max_segments | 0 (غير محدود) | الحد الأقصى لعدد ملفات مقاطع التخزين المؤقت على القرص. |
scraper.sender.bandwidth_limit_mb | 1.0 | حد معدل الرفع بالميغابايت/ثانية. |
scraper.instance_sync.interval | 0 (30s) | عدد مرات إبلاغ scraper عن حالة ClickHouseCluster لكل مثيل مسجّل إلى ClickHouse Cloud. |
scraper.backup_sync.interval | 0 (30s) | عدد مرات إبلاغ scraper عن حالة النسخ الاحتياطي إلى ClickHouse Cloud. |
scraper.observability.health_port | 8082 | منفذ الحالة الصحية والمقاييس لـ scraper. |
scraper.access_directory | /etc/clicklink/access/scraper | الدليل الجذر لحزم الوصول الخاصة بكل مثيل لـ scraper. |
troubleshooter
| المفتاح | القيمة الافتراضية | المعنى |
|---|---|---|
troubleshooter.enabled | false (تضبط init القيمة على true) | تشغيل خدمة troubleshooter. |
troubleshooter.poll_interval | 5s | الفاصل الزمني لاستقصاء حالة الجلسة. |
troubleshooter.command_timeout | 60s | مهلة تنفيذ كل أمر. |
troubleshooter.session_timeout | 4h | المدة الافتراضية لجلسة الدعم. |
troubleshooter.session_file_path | /var/lib/clicklink/session.json | ملف حالة الجلسة، مشترك مع أوامر clicklink clctl troubleshoot session. |
troubleshooter.access_directory | /etc/clicklink/access/troubleshooter | الدليل الجذر لحزم الوصول الخاصة بكل مثيل من troubleshooter. |
troubleshooter.allowed_tables | راجع قائمة السماح الافتراضية للجداول | جداول النظام التي يمكن لـ troubleshooter تنفيذ SELECT عليها. يجب أن تكون الإدخالات بصيغة schema.table. ترفض الخدمة البدء إذا كان query_log أو text_log مُدرجًا. |
troubleshooter.max_open_conns | 5 | الحد الأقصى لاتصالات ClickHouse المفتوحة. |
troubleshooter.max_idle_conns | 5 | الحد الأقصى للاتصالات المجمّعة الخاملة. |
troubleshooter.redaction.workers | 4 | عمّال تنقيح يعملون بالتوازي. |
troubleshooter.redaction.patterns_file | /etc/clicklink/redaction-patterns.yaml | أنماط التنقيح التي يمكن للعميل تعديلها؛ ترفض الخدمة البدء إذا كان الملف موجودًا لكنه غير صالح. |
troubleshooter.redaction.metrics_per_pattern | false | إصدار مقياس لعدد المطابقات لكل نمط. |
troubleshooter.redaction.metrics_per_pattern_cap | 50 | الحد الأقصى لعدد أسماء الأنماط المميزة في المقياس الخاص بكل نمط. |
troubleshooter.audit_log.path | /var/log/clicklink/troubleshoot-audit.log | سجل تدقيق NDJSON يُضاف إليه فقط، لكل أمر مقبول أو محظور. |
troubleshooter.audit_log.max_size_mb | 128 | تدوير ملف السجل النشط عند تجاوز هذا الحجم. |
troubleshooter.audit_log.max_files | 5 | عدد الملفات المُدوّرة التي يُحتفظ بها. |
troubleshooter.audit_log.max_age | 168h | تُحذف الملفات المُدوّرة الأقدم من هذه المدة. |
troubleshooter.gateway.enabled | false | تشغيل بوابة الجلسات (جلسات الدعم عبر OIDC). |
troubleshooter.gateway.listen_addr | لا شيء (تكتب init القيمة ":8443") | عنوان استماع البوابة. مطلوب عند تمكين البوابة. |
troubleshooter.gateway.audience | لا شيء (تكتب init القيمة clicklink-clctl) | مطالبة الجمهور المطلوبة في رموز المشغّلين. مطلوبة عند تمكين البوابة. |
troubleshooter.gateway.required_hosted_domain | "" | قيد اختياري على مطالبة النطاق المستضاف؛ ترفض البوابة الرموز الواردة من خارج النطاق قبل البحث في قائمة السماح. |
troubleshooter.gateway.allowed_operators_file | /etc/clicklink/allowed-operators.txt (تضبطها init) | قائمة سماح بعناوين البريد الإلكتروني للمشغّلين، مفصولة بأسطر جديدة. القيمة الفارغة تعني عدم السماح لأيٍّ منهم. مطلوبة عند تمكين البوابة؛ وترفض الخدمة البدء بدونها. |
troubleshooter.gateway.require_verified_email | true | اشتراط وجود مطالبة email_verified في رموز المشغّلين. لا تُعتمد القيمة false إلا مع ضبط jwks_uri وissuer. |
troubleshooter.gateway.rate_limit_per_minute | 0 (معطّل) | حد معدل الطلبات لكل مشغّل. |
troubleshooter.gateway.handler_timeout | 15s | مهلة الطلب من جانب الخادم. |
troubleshooter.gateway.jwks_uri | "" | نقطة نهاية JWKS لموفّر هوية غير Google؛ تستخدم القيمة الفارغة موفّر Google. |
troubleshooter.gateway.issuer | "" | مطالبة الجهة المُصدِرة التي تُثبّت عند ضبط jwks_uri. |
troubleshooter.gateway.tls.enabled | false (تضبط init القيمة على true على VM عند تمكين جلسات الدعم) | تقديم البوابة عبر TLS. تنشئ الخدمة شهادة موقعة ذاتيًا عند عدم وجود شهادة؛ يثبّت المشغّلون بصمتها. |
troubleshooter.gateway.tls.cert_file | /var/lib/clicklink/gateway/tls/server.crt | شهادة البوابة. |
troubleshooter.gateway.tls.key_file | /var/lib/clicklink/gateway/tls/server.key | مفتاح البوابة. |
troubleshooter.gateway.tls.ca_file | "" | جهة إصدار الشهادات (CA) التي يجب أن تتسلسل إليها شهادات عملاء المشغّلين. عند ضبطها، تصبح mTLS مطلوبة إضافةً إلى رمز bearer الخاص بـ OIDC. |
troubleshooter.gateway.tls.self_signed_dns_names | [] (تملأ init اسم المضيف مسبقًا) | أسماء SAN للشهادة الموقعة ذاتيًا؛ تتحول الإدخالات التي يمكن تحليلها كعناوين IP إلى عناوين IP SAN. |
executor
يعمل المنفّذ في الوضع المُدار. يكتبinit --managed القيمة enabled: true وهوية cluster؛ أما بقية القيم فتعود إلى الإعدادات الافتراضية.
| Key | Default | المعنى |
|---|---|---|
executor.enabled | false (يكتب init --managed القيمة true) | تشغيل البرنامج الخفي للمنفّذ. |
executor.cluster.name | يكتبه init | اسم عنقود EKS الوحيد الذي يديره هذا المنفّذ. مطلوب عند تفعيل المنفّذ. |
executor.cluster.region | يكتبه init | منطقة AWS الخاصة بالعنقود. مطلوب. |
executor.cluster.account_id | يكتبه init | حساب AWS الخاص بالعنقود. مطلوب. |
executor.cluster.kubeconfig_path | غير مضبوط | ملف kubeconfig الذي يستوثق به المنفّذ. إذا لم يُضبط، فإن كل أمر خدمة يُنفَّذ باستخدام حزم الوصول الموجودة ضمن /etc/clicklink/access/executor. |
executor.cluster.in_cluster | false | الاستيثاق بصفة ServiceAccount الخاصة بالجراب بدلاً من ملف kubeconfig؛ وهو الشكل المتّبع في تثبيت Kubernetes، ولا يمكن الجمع بينه وبين kubeconfig_path. |
executor.cluster.delete_instance_data.enabled | false | ما إذا كان clicklink clctl executor teardown يحذف بيانات خدمة مُتقاعدة دون --delete-data. أما البرنامج الخفي للمنفّذ نفسه فلا يحذف أي بيانات. |
executor.target_cluster | executor.cluster.name | العنقود الذي تُوجَّه إليه الأوامر الواردة. اتركه غير مضبوط؛ فأي قيمة أخرى تؤدي إلى فشل قاتل عند بدء التشغيل. |
executor.poll_interval | 5m | الفاصل الزمني للاستطلاع. يجب أن يكون موجباً. |
executor.sync_interval | 30s | مدى تكرار تحديث حالة الخدمة من العنقود. يجب أن يكون موجباً. |
executor.stop_wait_timeout | 8m | المدة التي ينتظرها الحذف حتى تتوقف الخوادم قبل إعادة المحاولة. |
executor.create_retry_horizon | 30m | المدة التي تُعاد خلالها محاولة الإنشاء، محسوبة من آخر تقرير تقدّم له. |
executor.delete_retry_horizon | 2h | المدة التي تُعاد خلالها محاولة الحذف، محسوبة من آخر تقرير تقدّم له. |
executor.db_path | /var/lib/clicklink/executor.db | قاعدة بيانات الأوامر المحلية. |
executor.api_port | 9999 | منفذ واجهة برمجة التطبيقات المحلية، مرتبط بحلقة الاسترجاع فقط. |
executor.observability.health_port | 8086 | منفذ صحة المنفّذ ومقاييسه. |
executor.cluster عبارة عن ربط مفرد: عنقود واحد لكل منفّذ. ويدمج المُحمِّل قائمة clusters: القديمة ذات المدخل الواحد داخل cluster عند غياب ربط cluster:. كما يرفض أي قائمة تحتوي أكثر من مدخل واحد، أو قائمة ترد إلى جانب مفتاح cluster:، عند تفعيل المنفّذ.
قابلية الرصد
| المفتاح | القيمة الافتراضية | المعنى |
|---|---|---|
observability.enabled | true | يوفّر نقاط نهاية للصحة والمقاييس. |
observability.log_level | info | مستوى السجل. |
observability.health_port | 8080 | المنفذ الأساسي المشترك للتحقق من الصحة. |
/livez (متن status بتنسيق JSON) و/readyz و/healthz و/metrics على مستمع واحد؛ ولا يوجد منفذ منفصل للمقاييس. تتجاوز كتل observability الخاصة بكل مكوّن هذه الإعدادات الأساسية: يستخدم scraper المنفذ 8082، ويستخدم troubleshooter المنفذ 8084، ويستخدم executor المنفذ 8086، وتستمع البوابة على المنفذ 8443 عند تفعيلها. ولا يزال مفتاح metrics_port الموجود في تهيئة أقدم يُحمَّل، لكنه لا يرتبط بأي شيء.
قائمة السماح الافتراضية بالجداول
مجموعةallowed_tables الافتراضية لمكوّن troubleshooter، وهي مطابقة للقيمة الافتراضية troubleshooter.allowedTables في مخطط Helm:
system.build_options system.clusters system.columns
system.databases system.tables system.parts
system.parts_columns system.parts_summary system.detached_parts
system.processes system.merges system.mutations
system.replicas system.replication_queue
system.metrics system.events system.asynchronous_metrics
system.disks system.storage_policies
system.settings system.settings_profiles
system.settings_profile_elements
system.functions system.formats system.table_engines
system.users system.roles system.grants
قيم مخطط Helm
في Kubernetes، تتم تهيئة الموصل عبر قيم مخططclicklink-connector. ينشئ clicklink clctl init تراكبًا باسم clicklink-values.yaml يتضمن جميع القيم التالية بعد تعبئتها، ويحتفظ به عند إعادة التشغيل ما لم تُمرِّر الخيار --force. تعرض الجداول القيم الافتراضية للمخطط. وتتوافر إعدادات أعباء العمل القياسية (resources، nodeSelector، tolerations، affinity، serviceAccount.annotations، env) في كل مكوّن بقيم افتراضية فارغة، ولا تُكرَّر في كل جدول.
المفاتيح عالية المستوى
| المفتاح | القيمة الافتراضية | المعنى |
|---|---|---|
imagePullSecrets | [] | أسرار سحب الصور (image pull Secrets) المشتركة بين جميع المكوّنات. |
instances | {} | سجل نسخ ClickHouse التي تشغّلها بنفسك، وله نفس حقول سجل النسخ الخاص بالجهاز الافتراضي، ويُولَّد ضمن ConfigMap باسم clicklink-instance-registry. يجب أن يكون فارغًا عندما تكون قيمة executor.enabled هي true، وإلا فسيفشل التوليد. |
podSecurityContext | غير جذري، uid 65532، seccomp بقيمة RuntimeDefault | سياق أمان pod المشترك بين جميع المكوّنات. |
securityContext | بلا تصعيد للامتيازات، نظام ملفات جذري للقراءة فقط، وإسقاط جميع الصلاحيات | سياق أمان الحاوية المشترك بين جميع المكوّنات. |
serviceMonitor.enabled | false | توليد ServiceMonitor خاص بـ Prometheus Operator لخدمات المكوّنات. وتُحدِّد شكله الحقول namespace وinterval (30s) وscrapeTimeout (10s) وlabels. |
externalSecrets.enabled | false | تجسيد أسرار mTLS وHMAC وحزمة الوصول عبر External Secrets Operator بدلًا من الأسرار المنشأة مسبقًا. وتُحدِّد الحقول secretStoreRef وrefreshInterval (1h) وmtlsRemoteKey وhmacRemoteKey وaccessBundles المخزن البعيد والمفاتيح. |
المجموعة
| المفتاح | القيمة الافتراضية | المعنى |
|---|---|---|
cluster.pcmInfraUuid | "" (يملؤه init) | معرّف فريد لنشر هذا الموصل. مطلوب عند تمكين أي مكوّن، ويُحفَظ عبر عمليات إعادة التشغيل. |
cluster.region | "" (يملؤه init) | تسمية المنطقة. مطلوب. |
cluster.cloud | "" (يملؤه init) | تسمية موفّر Cloud. مطلوب. |
cluster.namespacePrefix | ns- | بادئة مساحات أسماء Kubernetes التي تعمل داخلها الخدمات المُدارة (<prefix><service>). |
cluster.reportInfraMeta | true | إرسال اسم العنقود المُدار ومنطقته وحسابه إلى ClickHouse Cloud مع كل نبضة، لأغراض الفرز. اضبطه على false لإلغاء الاشتراك. |
image
| المفتاح | القيمة الافتراضية | المعنى |
|---|---|---|
image.repository | محدد مسبقًا في المخطط المنشور | مستودع صورة الموصل. يشير المخطط المنشور إلى صورة في السجل العام (متعددة المعماريات وموقعة باستخدام cosign)؛ لا تعيّنها إلا لتجاوزها، مثل استخدام مرآة داخل النطاق. افحص القيمة المنشورة باستخدام helm show values. |
image.tag | "" (يتتبع appVersion الخاص بالمخطط؛ يثبّت init إصدار CLI) | وسم الصورة. |
image.pullPolicy | IfNotPresent | سياسة سحب الصور في Kubernetes. |
api
| المفتاح | القيمة الافتراضية | المعنى |
|---|---|---|
api.endpoint | "" (يملؤه init) | نقطة نهاية الموصل الخاصة بك، ويستخدمها كل مكوّن. |
api.tls.enabled | true | قدّم شهادة عميل mTLS عند الاتصال بواجهة برمجة التطبيقات. |
api.tls.caFile | "" (جذور النظام) | تُضاف شهادة CA إلى جذور النظام للتحقق من الخادم. عيّنها إلى /etc/clicklink/secrets/mtls/ca.crt (أو أعد تشغيل init باستخدام --api-private-ca) عندما تستخدم نقطة النهاية شهادة صادرة عن CA خاصة. |
الأسرار
يستخدم المخطط كائنات Secrets المُنشأة مسبقًا؛ وينشئهاinit قبل التثبيت.
| المفتاح | القيمة الافتراضية | المعنى |
|---|---|---|
secrets.mtlsSecretName | clicklink-mtls | كائن Secret من نوع kubernetes.io/tls يحتوي على المفتاح الخاص لعميل mTLS والشهادة وسلسلة CA. |
secrets.hmacSecretName | clicklink-hmac | كائن Secret معتم يحتوي على access-key وsecret-key لتوقيع الطلبات. |
secrets.mtlsWriteback | true | اسمح للعمليات الخفية بكتابة شهادة mTLS الطرفية المُجدَّدة تلقائيًا مجددًا في كائن Secret الخاص بـ mTLS. يمنح ServiceAccounts الخاصة بالمكوّن صلاحية update على كائن Secret واحد باسمه المطابق تمامًا؛ وبدون ذلك، لن تجد الشهادات المُجدَّدة مكانًا دائمًا لتُحفظ فيه. يُتجاهل عندما تكون externalSecrets.enabled مضبوطة على true. |
scraper
| المفتاح | القيمة الافتراضية | المعنى |
|---|---|---|
scraper.enabled | false (تكتب init القيمة true) | نشر scraper. |
scraper.replicaCount | 1 | عدد نُسخ scraper المتماثلة. |
scraper.logLevel | info | مستوى السجل. |
scraper.ports.health | 8082 | منفذ الصحة والمقاييس. |
scraper.labels.platform, scraper.labels.env, scraper.labels.region | "" | تسميات تُضاف إلى كل مقياس يتم إصداره. يجب تحديد القيم الثلاث جميعها عند تمكين scraper؛ وإلا فسيظهر chart خطأ أثناء التصيير. |
scraper.config | {} | تمرير مباشر لأي مفتاح إعدادات لـ scraper غير ممثّل أعلاه (فاصل الكشط، والمخزن المؤقت، والمرسل، وغير ذلك، وبالمخطط نفسه لكتلة scraper في VM). |
scraper.bufferSizeLimit | 2Gi | الحد الأقصى لحجم وحدة التخزين المؤقتة لـ scraper؛ ولا يحتفظ scraper بحالة دائمة على القرص. |
scraper.rbac.extraSecretNames | [] | أسماء Secret إضافية يمكن لـ ServiceAccount الخاص بـ scraper تنفيذ get عليها؛ وبأسماء مطابقة تمامًا فقط. |
scraper.accessBundles | {} | حزم وصول لكل مثيل، مفهرسة باسم المثيل، وتحتوي كل منها على secretName وserviceAccountName. تُربط في /etc/clicklink/access/scraper/<instance>/؛ ويُنشئها الأمر clicklink clctl scraper access provision --target helm. |
مستكشف الأعطال
| المفتاح | القيمة الافتراضية | المعنى |
|---|---|---|
troubleshooter.enabled | false (تكتب init القيمة true) | انشر مستكشف الأعطال (StatefulSet بنسخة متماثلة واحدة). |
troubleshooter.logLevel | info | مستوى السجل. |
troubleshooter.ports.health | 8084 | منفذ الصحة والمقاييس. |
troubleshooter.sessionTimeout | 4h | المدة الافتراضية لجلسة الدعم. |
troubleshooter.allowedTables | قائمة السماح الافتراضية للجداول | الجداول التي يستطيع مستخدم ClickHouse الخاص بمستكشف الأعطال تنفيذ SELECT عليها. هذه هي مساحة مراجعة الأمان التي ينبغي تعديلها في طبقة التراكب. يرفض المخطط التصيير، ويرفض البرنامج الخفي البدء، في حال إدراج query_log أو text_log. |
troubleshooter.auditLog.path | /var/log/clicklink/troubleshoot-audit.log | موقع سجل التدقيق على وحدة تخزين الحالة، لضمان بقاء السجل عند إعادة جدولة Pod. |
troubleshooter.auditLog.maxSizeMb | 128 | دوّر السجل عند تجاوز هذا الحجم. |
troubleshooter.auditLog.maxFiles | 5 | عدد الملفات المُدوّرة المحتفَظ بها. |
troubleshooter.auditLog.maxAge | 168h | تُزال الملفات المُدوّرة الأقدم من هذه المدة. |
troubleshooter.redaction.workers | 4 | عمال تنقيح متوازيون. |
troubleshooter.redaction.patternsConfigMap | "" | اسم ConfigMap يحتوي مفتاحه redaction-patterns.yaml على أنماط مخصصة؛ يربطه المخطط عند /etc/clicklink/redaction-patterns.yaml. عند تركه فارغًا، لا تُطبَّق إلا الأنماط المضمّنة. |
troubleshooter.redaction.metricsPerPattern | false | إصدار مقياس عدّاد للتطابقات لكل نمط. |
troubleshooter.redaction.metricsPerPatternCap | 50 | حد عدد أسماء الأنماط المميزة في المقياس الخاص بكل نمط. |
troubleshooter.config | {} | تمرير أي مفتاح إعداد لـ troubleshooter غير مبيّن أعلاه (فاصل الاستقصاء، مهلة الأوامر، حدود الاتصال، وما إلى ذلك). |
troubleshooter.rbac.extraSecretNames | [] | أسماء Secret إضافية يستطيع ServiceAccount الخاص بمستكشف الأعطال تنفيذ get عليها، بأسماء مطابقة تمامًا فقط. |
troubleshooter.accessBundles | {} | حزم وصول لكل مثيل، بالبنية نفسها لـ scraper.accessBundles، ومربوطة عند /etc/clicklink/access/troubleshooter/<instance>/. |
executor
المنفّذ الخاص بـالوضع المُدار: Deployment بنسخة متماثلة واحدة على PersistentVolumeClaim. يهيّئهinit --managed في حالة مفعّلة مع تعبئة هوية العنقود.
| Key | Default | المعنى |
|---|---|---|
executor.enabled | false (يكتب init --managed القيمة true) | نشر المنفّذ. |
executor.logLevel | info | مستوى السجل. |
executor.pollInterval | 30s | فاصل الاستطلاع. |
executor.syncInterval | 30s | معدّل تحديث حالة الخدمة من العنقود. |
executor.apiPort | 9999 | منفذ واجهة برمجة التطبيقات المحلي. مقيّد بـ 127.0.0.1 داخل pod وغير معروض عبر الـ Service؛ يمكن الوصول إليه باستخدام kubectl port-forward. |
executor.ports.health | 8086 | منفذ الصحة والمقاييس. |
executor.cluster.name | "" (يعبّئه init) | اسم عنقود EKS الوحيد الذي يديره هذا المنفّذ. مطلوب عند تفعيل المنفّذ. |
executor.cluster.region | "" (يعبّئه init) | منطقة AWS الخاصة بالعنقود. مطلوب. |
executor.cluster.accountId | "" (يعبّئه init) | حساب AWS الخاص بالعنقود. مطلوب؛ كما تُقبل الصيغة account_id بنمط snake_case. |
executor.cluster.inCluster | false (يكتب init القيمة true) | المصادقة بصفة ServiceAccount الخاص بـpod، وهو شكل التثبيت على Kubernetes؛ إذ لا توجد حزمة وصول داخل pod. |
executor.cluster.delete_instance_data.enabled | false | ما إذا كان clicklink clctl executor teardown يحذف بيانات خدمة مُتقاعدة دون --delete-data. يتركه init غير مضبوط. أما بقية المفاتيح الخاصة بكل عنقود فتمرّ حرفياً بصيغة snake_case المستخدمة في الملف التنفيذي. |
executor.targetCluster | "" (مشتق من cluster.name) | العنقود الذي تُوجَّه إليه الأوامر الواردة. اتركه غير مضبوط؛ فأي قيمة لا تطابق cluster.name تفشل عند التصيير. |
executor.config | {} | تمرير مباشر لأي مفتاح إعداد executor غير مذكور أعلاه، مثل حدود إعادة المحاولة في كتلة executor الخاصة بالجهاز الافتراضي. |
executor.platformBundleSecret | clicklink-platform-bundle | الـ Secret الذي يحتوي على حزمة موافقة المنصة، ويُربط للقراءة فقط عند /etc/clicklink/access/executor/_platform؛ ويكتبه clicklink clctl platform approve --secret-namespace. الربط اختياري، لذا يبدأ pod قبل الموافقة الأولى. والقيمة الفارغة تعطّل الربط. |
executor.serviceAccount.create | false | ما إذا كان المخطط ينشئ ServiceAccount الخاص بالمنفّذ. معطّل افتراضياً: إذ يمنح init --managed صلاحيات RBAC للمنفّذ خارج النطاق مقابل اسم ثابت، ويرتبط المخطط به. |
executor.serviceAccount.name | pcm-executor | ServiceAccount الذي يعمل المنفّذ بصفته. مطلوب عندما تكون قيمة create هي false. |
executor.persistence.enabled | true | إسناد /var/lib/clicklink (قاعدة بيانات الأوامر وسجل المثيلات) إلى PersistentVolumeClaim. |
executor.persistence.storageClass | "" (القيمة الافتراضية للعنقود) | الـ StorageClass الخاص بالمطالبة؛ يعبّئه init من --storage-class أو من القيمة الافتراضية المكتشفة. |
executor.persistence.size | 5Gi | حجم المطالبة. |
executor.persistence.accessModes | [ReadWriteOnce] | أوضاع الوصول للمطالبة. |
executor.cluster ربط مفرد: عنقود واحد لكل منفّذ. أما قائمة clusters فتفشل عند التصيير.
الاستمرارية
| المفتاح | القيمة الافتراضية | المعنى |
|---|---|---|
persistence.enabled | true | استخدم PersistentVolumeClaim لتخزين دليل الحالة الخاص بـ troubleshooter بشكل دائم، بحيث تبقى حالة الجلسة وسجل التدقيق محفوظين بعد إعادة التشغيل. |
persistence.storageClass | "" (القيمة الافتراضية للعنقود) | StorageClass للمطالبة؛ يضبطه init استنادًا إلى --storage-class أو إلى القيمة الافتراضية المكتشفة. |
persistence.size | 5Gi | حجم المطالبة. |
persistence.accessModes | [ReadWriteOnce] | أوضاع الوصول للمطالبة. |
clctl.gateway
بوابة الجلسات لـجلسات الدعم.| المفتاح | القيمة الافتراضية | المعنى |
|---|---|---|
clctl.gateway.enabled | false | تشغيل بوابة الجلسات داخل troubleshooter. |
clctl.gateway.listenAddr | ":8443" | عنوان الاستماع المحلي للـPod. |
clctl.gateway.port | 8443 | منفذ الحاوية المكشوف عبر Service وIngress الخاصين بـtroubleshooter؛ يطابق منفذ listenAddr. |
clctl.gateway.audience | clicklink-clctl | مطالبة audience المطلوبة في رموز operator. يستخدم عميل الجلسة القيمة نفسها افتراضيًا، لذا لا يلزم تنسيق القيمتين إلا عند تغيير هذه القيمة. |
clctl.gateway.requiredHostedDomain | "" | مطالبة اختيارية بالنطاق المستضاف تشترطها البوابة؛ فهي ترفض الرموز المميزة من خارج مساحة عملك قبل البحث في قائمة السماح. |
clctl.gateway.allowedOperators | [] (مغلق) | قائمة سماح بعناوين البريد الإلكتروني للمشغّلين، تُنشأ في ConfigMap؛ يتطلب التدوير تغييرًا في values بالإضافة إلى helm upgrade. |
clctl.gateway.requireVerifiedEmail | true | اشتراط مطالبة email_verified في رموز operator. يؤدي ضبطها على false دون تعيين كل من jwksUri وissuer إلى فشل الإنشاء. |
clctl.gateway.jwksUri | "" | تجاوز لنقطة نهاية JWKS لموفري الهوية غير التابعين لـGoogle؛ تستخدم القيمة الفارغة نقطة نهاية Google. |
clctl.gateway.issuer | "" | مطالبة issuer لتثبيتها. مطلوبة لأي نشر فعلي يضبط jwksUri. |
clctl.gateway.jwksEgressCIDRs | [] | نطاقات CIDR التي تحتاج البوابة إلى الوصول إليها للتحقق من JWKS بموجب NetworkPolicy ذات الرفض الافتراضي؛ تمنع القيمة الفارغة جميع عمليات التحقق من الرموز المميزة. |
clctl.gateway.ingressFromSelector | {} | مصدر حركة Ingress في NetworkPolicy لمنفذ البوابة؛ تسمح القيمة الفارغة لأي Pod في مساحة الاسم الخاصة بـchart. اضبطه على تسمية مساحة اسم وحدة تحكم Ingress عند استخدام Ingress. |
clctl.gateway.rateLimit.requestsPerMinute | 30 | حد معدل الطلبات لكل operator. |
clctl.gateway.ingress.enabled | false | إنشاء Ingress للبوابة. عند تعطيله، يصل المشغّلون إلى البوابة باستخدام kubectl port-forward؛ ولا يلزم استخدام وحدة تحكم Ingress أو cert-manager. |
clctl.gateway.ingress.className, hosts, tls, annotations | "", [], [], {} | حقول Ingress القياسية؛ يشير tls إلى Secrets من نوع kubernetes.io/tls. |
networkPolicy
| المفتاح | القيمة الافتراضية | المعنى |
|---|---|---|
networkPolicy.enabled | true | يُنشئ NetworkPolicy بسياسة رفض افتراضية وقائمة سماح لحركة المرور الصادرة. يتطلب تطبيقها استخدام CNI يفرض السياسات. |
networkPolicy.allowEgressCIDRs | [] (يملؤها init --egress-cidrs) | نطاقات CIDR الواقعة خلف نقطة نهاية الموصل. في الوضع المُدار، عندما توجد مخططات المنصة في Amazon ECR، تشمل أيضًا نطاقات ECR وSTS الإقليمية، أو نطاق المرآة الخاصة بك. عند استخدام CNI يفرض السياسات، لا يُسمح للموصل بحركة مرور صادرة حتى تحديد هذه القيمة؛ ولا يهيّئ init السياسة مفعّلة إلا عندما تكون هذه القيم معروفة. |
networkPolicy.allowEgressPorts | [443] | المنافذ المسموح بالوصول إليها ضمن allowEgressCIDRs؛ تجاوزها إذا كانت نقطة النهاية تستمع على منفذ غير افتراضي. |
networkPolicy.clickhouseNamespaces | [] | مساحات الأسماء لخدمات ClickHouse الخاصة بك، المطابَقة بواسطة الوسم kubernetes.io/metadata.name. أما مساحات الأسماء التي يُنشئها المنفّذ فيُسمح بها في جميع الأحوال، بفضل الوسم clicklink.clickhouse.com/managed-by=executor الذي يضعه عليها، ولذلك لا يسرد التثبيت المُدار سوى مساحات الأسماء المُنشأة خارج المنفّذ. وعندما تكون فارغة، تعود سياسة مستكشف الأخطاء ومصلحها إلى قيم namespace في خريطة instances عالية المستوى؛ أما سياسة أداة السحب فليس لها بديل احتياطي، لذا اسرد مساحات الأسماء هنا لأغراض السحب. |
networkPolicy.metricsScrapeSelector | {} | يقيّد دخول جلب المقاييس إلى مساحة أسماء محددة لـ Prometheus باستخدام تسمية؛ تسمح القيمة الفارغة بالجلب من أي pod في مساحة أسماء المخطط. |
networkPolicy.kubeletProbeCIDRs | [] | نطاقات CIDR التي تصدر منها مجسّات سلامة kubelet (عناوين IP للعقد). تسمح القيمة الفارغة بدخول المجسّات من أي مصدر، بما يتوافق مع استثناء kubelet في معظم شبكات CNI؛ حدّدها صراحةً عند استخدام سياسة رفض افتراضية صارمة. |
networkPolicy.apiserverCIDRs | [] (يملؤها init --managed من شبكة VPC الخاصة بالعنقود) | نطاقات CIDR لخادم API في Kubernetes. لا تُنشئ القيمة الفارغة قاعدة حركة مرور صادرة لخادم API، وتفشل العمليات الخفية في طلب token الأول على Kubernetes المُدار إلى أن تُحدَّد. ثبّت نطاقات شبكة VPC، لا العناوين الخاصة بخادم API نفسه، فهي تتغير على مدى عمر العنقود. |