Skip to main content
На этой странице описаны изменения конфигурации, которые чаще всего вносят после установки коннектора ClickHouse. Сведения о каждом ключе, его значении по умолчанию и назначении см. в справочнике по конфигурации; сведения о флагах командной строки — в справочнике CLI.

Варианты конфигурирования

Для каждой цели установки коннектора предусмотрен свой вариант конфигурирования.
clicklink clctl init создает в рабочем каталоге файл наложения значений clicklink-values.yaml и развертывает чарт clicklink-connector с его использованием. Этот файл — постоянная запись о вашем развертывании: при повторном запуске init он сохраняется, если не указать --force, поэтому внесенные изменения не теряются при повторных запусках и восстановлении.
Для последующих операций, описанных на этой странице и в разделе операции, используется CLI helm. Встроенный клиент Helm есть только в init.
Отредактируйте файл наложения и примените изменения:
Этот блок повторно применяет отредактированные значения к уже установленной версии чарт, поэтому изменение конфигурации не приводит к незапланированному обновлению. Переход на новую версию — отдельный осознанный шаг, описанный в разделе операции. При mirror-установке с репозиторием чарт замените --repo на адрес своего mirror.При установке по прямой ссылке на чарт (oci://, URL, локальный архив или каталог; см. частные зеркала) репозиторий для разрешения недоступен. Повторите обновление, указав ту же ссылку, которая использовалась при установке:

Добавление или изменение экземпляров ClickHouse

Каждая запись в разделе instances задает конечную точку нативного протокола ClickHouse, из которой коннектор читает данные: host, port, database, secure, а в Kubernetes также namespace и cluster. Учетные данные никогда не хранятся в конфигурации: каждый компонент получает пользователя ClickHouse с правами только для чтения из пакета доступа, создаваемого при подготовке.
Добавьте экземпляр в обе карты компонентов в clicklink-values.yaml, а его пространство имен — в networkPolicy.clickhouseNamespaces (сопоставление выполняется по метке пространства имен kubernetes.io/metadata.name):
Настройте доступ только для чтения для каждого компонента с рабочей станции. --apply-ch-grants применяет сгенерированные привилегии ClickHouse внутри пода через kubectl exec; без этого параметра команда создает только ресурсы Kubernetes и оставляет ch-grants.sql на диске для последующего применения. Если у пользователя admin задан пароль, добавьте --ch-admin-password-stdin и передайте пароль через стандартный ввод.
Для экземпляра, управляемого оператором, без SQL-совместимого пользователя admin замените --apply-ch-grants на --ch-user-via cr (флаги выбора пода сохраняются); см. справочник CLI. Затем добавьте создаваемую каждой командой пару Secret и ServiceAccount в соответствующую карту accessBundles и выполните указанную выше команду helm upgrade:
Команды access provision с параметром --force также выполняют ротацию учетных данных ClickHouse для экземпляра. См. раздел операции.

Список разрешённых операторов

Доступ к сеансам, управляемым шлюзом, ограничен списком разрешённых адресов электронной почты операторов: каждый запрос к шлюзу сеансов должен содержать краткоживущий OIDC ID-токен с подтверждённым адресом электронной почты из этого списка. Если список разрешённых пуст, шлюз закрыт, и никто не сможет открыть через него сеанс. На виртуальной машине пользователь root на хосте также может управлять сеансами напрямую через локальный файл сеансов; список разрешённых действует только для доступа через шлюз. Полную модель доверия см. в разделе сеансы поддержки.
Список разрешённых хранится в наложении и преобразуется в ConfigMap. Чтобы изменить его, отредактируйте список и выполните helm upgrade:

Сетевая политика и исходящий трафик

В Kubernetes chart включает NetworkPolicy, которая по умолчанию запрещает весь трафик и содержит список разрешённых направлений для исходящего трафика (networkPolicy.enabled: true). Объекты NetworkPolicy действуют только если ваш CNI обеспечивает их применение; при использовании CNI с поддержкой политик connector вообще не имеет исходящего трафика, пока в allowEgressCIDRs не будут указаны CIDR-диапазоны, соответствующие конечной точке API connector.
Два правила требуют особого внимания:
  • apiserverCIDRs: если параметр пуст, чарт не создаёт правило исходящего трафика для API-сервера. В этом случае первый запрос демонов к токену Kubernetes завершается сетевой ошибкой — это означает, что параметр необходимо задать. В управляемом Kubernetes используйте CIDR конечной точки API-сервера кластера.
  • clctl.gateway.jwksEgressCIDRs: если включён шлюз сеансов, средство устранения неполадок получает JWKS вашего провайдера идентификации для проверки токенов операторов. При политике запрета по умолчанию пустой параметр блокирует все проверки токенов:
Пример — диапазон private.googleapis.com, охватывающий провайдер идентификации Google, доступный через Private Google Access; для любого другого провайдера идентификации укажите его диапазон (или CIDR прокси исходящего трафика перед ним). Ещё два параметра входного шлюза: metricsScrapeSelector ограничивает входящий трафик для сбора метрик конкретным пространством имен Prometheus по метке, а kubeletProbeCIDRs явно разрешает проверки состояния Кубелета в средах со строгой политикой запрета по умолчанию. Полный список ключей см. в справочнике по конфигурации.

Шаблоны маскирования

Вывод Troubleshooter маскируется, прежде чем покинуть ваш периметр. Встроенные шаблоны охватывают 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; установщик создаёт закомментированный файл по умолчанию и сохраняет вашу версию при обновлениях. В Kubernetes поместите YAML в ConfigMap с ключом redaction-patterns.yaml и задайте его имя в troubleshooter.redaction.patternsConfigMap; чарт монтирует его по тому же пути.
Средство устранения неполадок не запустится, если файл шаблонов существует, но некорректен, и запишет в журнал проблемную запись. clicklink clctl preflight проверяет файл, поэтому запустите его перед перезапуском демона.

Частное зеркало и конечные точки внутри периметра

В опубликованном чарт для image.repository заранее указан публичный мультиархитектурный образ connector, подписанный cosign, поэтому для обычной установки не нужно задавать значения image. Чтобы просмотреть опубликованные значения по умолчанию:
Чтобы использовать собственный registry для Pull, переопределите repository в наложении:
Чтобы установить сам чарт из частного зеркала, init принимает --chart как имя чарт из --chart-repo либо как прямую ссылку oci://, URL, локальный архив или каталог. По умолчанию --chart-version соответствует версии самого CLI, поэтому бинарный файл и чарт обновляются вместе:
Если конечная точка API вашего коннектора находится за private CA в пределах вашего периметра, передайте --api-private-ca в init: он задаст api.tls.caFile: /etc/clicklink/secrets/mtls/ca.crt, и конечная точка будет проверяться по цепочке CA из вашего пакета регистрации, а не по системным корневым сертификатам. На виртуальной машине эквивалентом является api.tls.ca_file в /etc/clicklink/config.yaml; init устанавливает цепочку сертификатов из пакета в /etc/clicklink/tls/ca.crt и добавляет её в системное хранилище корневых сертификатов для проверки. Инструкции по регистрации и подписанию сертификатов в полностью изолированной от интернета среде см. в разделе онбординг.

Хранилище

Средство устранения неполадок хранит своё состояние в PersistentVolumeClaim, поэтому состояние сеанса и журнал аудита сохраняются при перепланировании пода:
При пустом значении storageClass используется класс хранилища кластера по умолчанию. Если в кластере не назначен класс по умолчанию, для init его необходимо указать в промпте или с помощью --storage-class.
Последнее изменение 26 августа 2026 г.