Файл конфигурации VM
/etc/clicklink/config.yaml, который создаётся командой clicklink clctl init и сохраняется при повторных запусках, если не указан параметр --force. Для ключей, отсутствующих в файле, используются приведённые ниже скомпилированные значения по умолчанию. Учётные данные в этом файле никогда не хранятся.
Ключи верхнего уровня
| Ключ | По умолчанию | Значение |
|---|---|---|
pcm_infra_uuid | создаётся командой init | Уникальный идентификатор этого развертывания коннектора, передаваемый с каждым upstream-запросом. Сохраняется при повторных запусках, включая --force. Не изменяйте. |
cloud | определяется командой init | Метка облачного провайдера для этого хоста. Обязательна: при пустом значении демоны не запускаются. |
region | определяется командой init | Метка региона для этого хоста. Обязательна: при пустом значении демоны не запускаются. |
api | Блок подключения к upstream API; см. api. | |
instances | {} | Сопоставление экземпляров ClickHouse по имени; см. instances. |
scraper | Блок демона scraper; см. scraper. | |
troubleshooter | Блок демона средства устранения неполадок; см. troubleshooter. | |
observability | Общий блок логирования и портов; см. observability. |
api
| Ключ | По умолчанию | Значение |
|---|---|---|
api.endpoint | из пакета регистрации | Конечная точка API коннектора вашей организации: 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.tls.enabled | true | Предъявлять клиентский сертификат mTLS при подключении к API. |
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-запроса. |
api.retry.initial_delay | 1s | Задержка перед первой повторной попыткой. |
api.retry.max_delay | 30s | Максимальная задержка. |
api.retry.jitter_factor | 0.25 | Случайное отклонение, добавляемое к задержкам. |
инстансы
instances.<name> описывает один целевой экземпляр 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 | Тайм-аут запроса при одном сборе данных. |
scraper.scrape.tables | см. ниже | Системные таблицы, из которых собираются данные для каждого инстанса. По умолчанию: metric_log, asynchronous_metric_log, tables, warnings, server_settings; query_log намеренно исключена, чтобы исходный текст SQL по умолчанию не покидал ваш периметр. |
scraper.buffer.path | /var/lib/clicklink/buffer | Дисковый буфер для доставки как минимум один раз, пока конечная точка API недоступна. |
scraper.buffer.retention | 168h | Максимальный срок хранения буферизованных данных. |
scraper.buffer.max_size_mb | 1024 | Максимальный размер буфера в МБ. |
scraper.sender.bandwidth_limit_mb | 1.0 | Ограничение скорости загрузки в МБ/с. |
scraper.observability.health_port | 8082 | Порт конечной точки проверки работоспособности scraper. |
scraper.observability.metrics_port | 9092 | Порт метрик scraper. |
scraper.access_directory | /etc/clicklink/access/scraper | Корневой каталог пакетов доступа scraper для каждого инстанса. |
средство устранения неполадок
| Ключ | По умолчанию | Значение |
|---|---|---|
troubleshooter.enabled | false (init записывает true) | Запускать демон устранения неполадок. |
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.allowed_tables | см. список разрешённых таблиц по умолчанию | Системные таблицы, из которых средство устранения неполадок может выполнять SELECT. |
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 | ":8443" (записывается init) | Адрес, на котором шлюз принимает подключения. |
troubleshooter.gateway.audience | clicklink-clctl (записывается init) | Значение claim audience, обязательное для токенов операторов. |
troubleshooter.gateway.required_hosted_domain | "" | Необязательная проверка claim размещённого домена; токены из-за пределов домена отклоняются до проверки списка разрешений. |
troubleshooter.gateway.allowed_operators_file | /etc/clicklink/allowed-operators.txt (записывается init) | Список разрешённых адресов электронной почты операторов, по одному в строке. Пустой список означает, что доступ закрыт. |
troubleshooter.gateway.rate_limit_per_minute | 0 (отключено) | Ограничение частоты запросов для каждого оператора. |
troubleshooter.gateway.handler_timeout | не задано | Тайм-аут обработки запроса на стороне сервера. |
troubleshooter.gateway.jwks_uri | "" | Конечная точка JWKS для провайдера идентификации, отличного от Google; при пустом значении используется Google. |
troubleshooter.gateway.issuer | "" | Значение claim 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.self_signed_dns_names | [] (init предварительно заполняет хост) | SAN самоподписанного сертификата, который демон выпускает при его отсутствии; записи, распознаваемые как IP-адреса, становятся IP SAN. |
обсервабилити
| Ключ | По умолчанию | Описание |
|---|---|---|
observability.enabled | true | Включает конечные точки проверки работоспособности и метрик. |
observability.log_level | info | Уровень журналирования. |
observability.health_port | 8080 | Базовый общий порт для проверки работоспособности. |
observability.metrics_port | 9090 | Базовый общий порт метрик. |
observability для отдельных компонентов переопределяют эту базовую конфигурацию: scraper использует 8082/9092, средство устранения неполадок — 8084/9094, а шлюз при включении прослушивает порт 8443.
Список разрешённых таблиц по умолчанию
allowed_tables для средства устранения неполадок по умолчанию, совпадающий со значением по умолчанию 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-чарта
clicklink-connector. Команда clicklink clctl init создаёт оверлей clicklink-values.yaml со всеми заполненными ниже значениями и сохраняет его при повторных запусках, если не указан параметр --force. В таблицах приведены значения Helm-чарта по умолчанию; стандартные параметры рабочих нагрузок (resources, nodeSelector, tolerations, affinity, serviceAccount.annotations, env, imagePullSecrets) доступны для каждого компонента, имеют пустые значения по умолчанию и не повторяются в каждой таблице.
кластер
| Ключ | По умолчанию | Описание |
|---|---|---|
cluster.pcmInfraUuid | "" (заполняется init) | Уникальный идентификатор этого развертывания коннектора. Обязателен, если включен хотя бы один компонент; сохраняется при повторных запусках. |
cluster.region | "" (заполняется init) | Метка региона. Обязательно. |
cluster.cloud | "" (заполняется init) | Метка облачного провайдера. Обязательно. |
image
| Ключ | По умолчанию | Значение |
|---|---|---|
image.repository | задано в опубликованном Helm-чарте | Репозиторий образа коннектора. Опубликованный Helm-чарт указывает на образ из публичного registry (мультиархитектурный, подписанный cosign); изменяйте его только при необходимости переопределения, например для mirror внутри периметра. Опубликованное значение можно посмотреть с помощью helm show values. |
image.tag | "" (соответствует appVersion Helm-чарта; init фиксирует версию CLI) | Тег образа. |
image.pullPolicy | IfNotPresent | Политика загрузки образа Kubernetes. |
api
| Ключ | По умолчанию | Значение |
|---|---|---|
api.endpoint | "" (заполняется командой init) | Конечная точка API коннектора вашей организации, общая для обоих компонентов. |
api.tls.enabled | true | Предъявлять клиентский сертификат mTLS при подключении к API. |
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 с точным именем; без неё обновлённые сертификаты будет негде надёжно хранить. |
scraper
| Ключ | По умолчанию | Описание |
|---|---|---|
scraper.enabled | false (init записывает true) | Развернуть scraper. |
scraper.replicaCount | 1 | Реплики scraper. |
scraper.logLevel | info | Уровень журналирования. |
scraper.ports.health | 8082 | Порт конечной точки проверки работоспособности. |
scraper.ports.metrics | 9092 | Порт метрик. |
scraper.instances | {} | Map экземпляров ClickHouse с той же структурой, что и поля instances для VM. |
scraper.labels.platform, scraper.labels.env, scraper.labels.region | "" | Метки, добавляемые к каждой отправляемой метрике. При включенном scraper требуются все три; в противном случае Helm-чарт выдаёт ошибку при рендеринге. |
scraper.config | {} | Передача ключей конфигурации scraper, не описанных выше (интервал scrape, буфер, отправитель и т. д.; та же схема, что и у блока scraper для VM). |
scraper.bufferSizeLimit | 2Gi | Максимальный размер временного volume 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.ports.metrics | 9094 | Порт метрик. |
troubleshooter.instances | {} | Сопоставление экземпляров ClickHouse той же структуры, что и scraper.instances. |
troubleshooter.sessionTimeout | 4h | Длительность сеанса поддержки по умолчанию. |
troubleshooter.allowedTables | стандартный список разрешенных таблиц | Таблицы, для которых пользователь ClickHouse средства устранения неполадок может выполнять SELECT. Этот список следует проверить с точки зрения безопасности и при необходимости изменить в вашем overlay; валидатор команд в любом случае применяет жестко заданный список запрещенных таблиц (query_log, text_log) независимо от указанного здесь списка. |
troubleshooter.auditLog.path | /var/log/clicklink/troubleshoot-audit.log | Путь к журналу аудита на томе состояния, чтобы он сохранялся при перепланировании пода. |
troubleshooter.auditLog.maxSizeMb | 128 | Выполнять ротацию при превышении этого размера. |
troubleshooter.auditLog.maxFiles | 5 | Количество сохраняемых файлов после ротации. |
troubleshooter.auditLog.maxAge | 168h | Файлы после ротации старше этого срока удаляются. |
troubleshooter.redaction.workers | 4 | Воркеры для параллельного маскирования. |
troubleshooter.redaction.patternsConfigMap | "" | Имя ConfigMap, ключ redaction-patterns.yaml которого содержит пользовательские шаблоны; Helm-чарт монтирует его в /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>/. |
сохранение данных
| Ключ | По умолчанию | Значение |
|---|---|---|
persistence.enabled | true | Хранить каталог состояния средства устранения неполадок в PersistentVolumeClaim, чтобы состояние сеанса и журнал аудита сохранялись после перезапусков. |
persistence.storageClass | "" (по умолчанию для кластера) | Класс хранилища для заявки; init задаёт его на основе --storage-class или обнаруженного значения по умолчанию. |
persistence.size | 5Gi | Размер заявки. |
persistence.accessModes | [ReadWriteOnce] | Режимы доступа заявки. |
clctl.gateway
| Ключ | По умолчанию | Значение |
|---|---|---|
clctl.gateway.enabled | false | Запускать шлюз сеансов в средстве устранения неполадок. |
clctl.gateway.listenAddr | ":8443" | Адрес прослушивания, доступный только в поде. |
clctl.gateway.port | 8443 | Порт контейнера, доступный через Service и входной шлюз средства устранения неполадок; соответствует порту listenAddr. |
clctl.gateway.audience | clicklink-clctl | Утверждение audience, обязательное для токенов операторов. По умолчанию клиент сеансов использует то же значение, поэтому согласовывать их нужно только при изменении этого значения. |
clctl.gateway.requiredHostedDomain | "" | Необязательное утверждение hosted-domain, которое требуется шлюзу; токены не из вашего рабочего пространства отклоняются до проверки по списку разрешённых. |
clctl.gateway.allowedOperators | [] (закрыт) | Список разрешённых адресов электронной почты операторов, отображаемый в ConfigMap; для ротации измените values и выполните helm upgrade. |
clctl.gateway.jwksUri | "" | Переопределение конечной точки JWKS для провайдеров идентификации, отличных от Google; при пустом значении используется конечная точка Google. |
clctl.gateway.issuer | "" | Утверждение issuer, значение которого необходимо закрепить. Требуется для любого фактического развертывания с заданным jwksUri. |
clctl.gateway.jwksEgressCIDRs | [] | CIDR-диапазоны, к которым шлюзу необходим доступ для проверки JWKS при NetworkPolicy с запретом по умолчанию; пустое значение блокирует все проверки токенов. |
clctl.gateway.ingressFromSelector | {} | Источник входящего трафика в NetworkPolicy для порта шлюза; пустое значение разрешает доступ из любого пода в пространстве имен Helm-чарта. При использовании входного шлюза укажите метку пространства имен его контроллера. |
clctl.gateway.rateLimit.requestsPerMinute | 30 | Ограничение частоты запросов для каждого оператора. |
clctl.gateway.ingress.enabled | false | Создать входной шлюз для шлюза. Если параметр отключен, операторы получают доступ к шлюзу через kubectl port-forward; контроллер входящего трафика и cert-manager не требуются. |
clctl.gateway.ingress.className, hosts, tls, annotations | "", [], [], {} | Стандартные поля входного шлюза; tls ссылается на Secrets типа kubernetes.io/tls. |
networkPolicy
| Ключ | По умолчанию | Значение |
|---|---|---|
networkPolicy.enabled | true | Создает NetworkPolicy с запретом всего трафика по умолчанию и списком разрешенных исходящих подключений. Для применения необходим CNI, поддерживающий принудительное применение политик. |
networkPolicy.allowEgressCIDRs | [] | CIDR-диапазоны, в которых находится конечная точка API вашего коннектора. При CNI с принудительным применением политик у коннектора не будет исходящего трафика, пока это значение не задано. |
networkPolicy.allowEgressPorts | [443] | Порты, открытые для allowEgressCIDRs; переопределите значение, если конечная точка использует нестандартный порт. |
networkPolicy.clickhouseNamespaces | [] | Пространства имен сервисов ClickHouse, сопоставляемые по метке kubernetes.io/metadata.name. Пустое значение запрещает доступ к ClickHouse внутри кластера. |
networkPolicy.metricsScrapeSelector | {} | Ограничивает входящий трафик для сбора метрик определенным пространством имен Prometheus по метке; пустое значение разрешает сбор метрик с любого пода в пространстве имен Helm-чарта. |
networkPolicy.kubeletProbeCIDRs | [] | CIDR-диапазоны, из которых исходят проверки состояния Кубелета (IP-адреса узлов). Пустое значение разрешает входящий трафик для проверок из любого источника, что соответствует исключению для Кубелета в большинстве CNI; при строгой политике запрета по умолчанию укажите значение явно. |
networkPolicy.apiserverCIDRs | [] | CIDR-диапазоны API-сервера Kubernetes. Пустое значение не создает правила исходящего трафика к API-серверу, и в управляемом Kubernetes демоны не смогут выполнить первый запрос токена, пока значение не будет задано. |