Варианты конфигурирования
Для каждой цели установки коннектора предусмотрен свой вариант конфигурирования.- Kubernetes
- Linux VM
clicklink clctl init создает в рабочем каталоге файл наложения значений clicklink-values.yaml и развертывает чарт clicklink-connector с его использованием. Этот файл — постоянная запись о вашем развертывании: при повторном запуске init он сохраняется, если не указать --force, поэтому внесенные изменения не теряются при повторных запусках и восстановлении.Для последующих операций, описанных на этой странице и в разделе операции, используется CLI
helm. Встроенный клиент Helm есть только в init.--repo на адрес своего mirror.При установке по прямой ссылке на чарт (oci://, URL, локальный архив или каталог; см. частные зеркала) репозиторий для разрешения недоступен. Повторите обновление, указав ту же ссылку, которая использовалась при установке:Управляемый режим
В управляемом режиме запускается исполнитель, который применяет к вашему кластеру жизненный цикл сервисов, задаваемый ClickHouse Cloud.init включает его при регистрации и заполняет идентификационные данные кластера (см. включение управляемого режима). Ниже перечислены параметры, к которым вы, возможно, вернётесь позже. Чтобы изменить режим, выполните init повторно с --force и --managed либо --no-managed. Как и любому запуску init, ему нужна точка входа: --handoff, если вы сохранили bundle, либо --enroll с новым token (см. повторные запуски и восстановление).
На ВМ --no-managed отключает исполнитель в конфигурации, но не останавливает и не выключает уже запущенный юнит systemd. Остановите его перед изменением конфигурации:
executor.enabled: false в values и примените изменения командой helm upgrade, чтобы удалить Развертывание исполнителя. В обоих случаях grant на кластере сохраняется до тех пор, пока вы его не удалите; см. остановка управляемого режима.
- Kubernetes
- Linux VM
init формирует блок executor в clicklink-values.yaml на основе EKS cluster, на который указывает ваш kube context:cluster.namespacePrefixиспользуется всеми компонентами и представляет собой префикс, которым grant ограничивает исполнителя. Его изменение после установки означает повторную выдачу grant.executor.cluster— это ровно один кластер:name,region,accountIdиinCluster: true, благодаря чему исполнитель аутентифицируется как ServiceAccount пода. Остальные ключи передаются исполнителю без изменений в snake_case, напримерs3_storage.executor.serviceAccountостаётсяcreate: false:initвыдаёт доступ уровня кластера ServiceAccountpcm-executorв пространстве имён коннектора, а chart привязывается именно к нему, а не создаёт новый, ни с чем не связанный.executor.persistenceобеспечивает работу/var/lib/clicklink, где исполнитель хранит свою базу данных команд и реестр сервисов; см. хранилище.executor.platformBundleSecretзадаёт имя Secret, содержащего утверждённое обновление платформы. Монтирование необязательно, поэтому под запускается ещё до первого утверждения; см. утверждение обновления платформы.executor.ports.healthобслуживает/livezи/metrics; отдельного порта для метрик нет ни у одного компонента.
helm upgrade, как показано в разделе поверхности конфигурации.Добавление или изменение экземпляров ClickHouse
Сервисы, создаваемые исполнителем, регистрируются сами, поэтому в управляемом режиме добавлять их здесь не требуется. Этот раздел относится к отдельному развертыванию коннектора, работающему без исполнителя, которое наблюдает за ClickHouse, который вы запускаете самостоятельно. Укажите--ch-user-suffix при его init, если оба развертывания используют один и тот же экземпляр. Каждая запись в instances задает конечную точку ClickHouse с нативным протоколом, из которой читает коннектор: host, port, database, secure, cluster, а в Kubernetes — namespace. Параметры max_open_conns и max_idle_conns ограничивают пул соединений. Учетные данные никогда не хранятся в конфигурации: каждый компонент получает своего пользователя ClickHouse с правами только для чтения из bundle доступа, создаваемого на этапе подготовки.
- Kubernetes
- Linux VM
Добавьте экземпляр в карту Настройте доступ только для чтения для каждого компонента с рабочей станции. Для экземпляра, управляемого оператором, без SQL-совместимого пользователя admin замените
instances верхнего уровня в clicklink-values.yaml (те же поля, что и в реестре на ВМ). Добавьте его пространство имен в networkPolicy.clickhouseNamespaces; сопоставление выполняется по метке пространства имен kubernetes.io/metadata.name. Chart преобразует эту карту в ConfigMap clicklink-instance-registry, который читают оба демона. Это работает только при executor.enabled равном false; если исполнитель включен, рендеринг завершается ошибкой, поскольку этот ConfigMap принадлежит исполнителю.--apply-ch-grants применяет сгенерированные привилегии ClickHouse внутри пода через kubectl exec; без этого параметра команда создает только ресурсы Kubernetes и оставляет ch-grants.sql на диске для последующего применения. Если у пользователя admin задан пароль, добавьте --ch-admin-password-stdin и передайте пароль через стандартный ввод.--apply-ch-grants на --ch-user-via cr (флаги выбора пода сохраняются); см. справочник CLI. Затем добавьте создаваемую каждой командой пару Secret и ServiceAccount в соответствующую карту accessBundles и выполните указанную выше команду helm upgrade:Список разрешённых операторов
Доступ к сеансам, управляемым шлюзом, ограничен списком разрешённых адресов электронной почты операторов. Каждый запрос к шлюзу сеансов должен содержать краткоживущий OIDC ID-токен с подтверждённым адресом электронной почты из этого списка. Если список разрешённых пуст, шлюз закрыт. На виртуальной машине пользователь root на хосте также может управлять сеансами напрямую через локальный файл сеансов; список разрешённых действует только для доступа через шлюз. Полную модель доверия см. в разделе сеансы поддержки.- Kubernetes
- Linux VM
Список разрешённых хранится в оверлее, и чарт преобразует его в ConfigMap. Чтобы изменить его, отредактируйте список и выполните
helm upgrade:Сетевая политика и исходящий трафик
В Kubernetes chart поставляется с NetworkPolicy, которая по умолчанию запрещает весь трафик, и со списком разрешённых для исходящего трафика. Объекты NetworkPolicy действуют только в том случае, если ваш CNI их применяет. При таком CNI доступны только кластерный DNS и пространства имен сервиса ClickHouse — до тех пор, пока не заполнены оба списка CIDR. До этого момента у коннектора нет исходящего доступа ни к вашей конечной точке коннектора, ни к API-серверу Kubernetes.init включает политику только тогда, когда ему известны CIDR, стоящие за вашей конечной точкой коннектора.
allowEgressCIDRsзадаёте вы: это диапазоны, стоящие за вашей конечной точкой коннектора, которые передаются при установке через--egress-cidrsили вводятся в ответ на промпт. Они нужны каждому компоненту, чтобы достучаться до вашей конечной точки коннектора. В управляемом режиме, когда чарты платформы размещены в Amazon ECR, добавьте диапазоны ECR и STS для вашего region (или диапазон вашего mirror). Без них загрузка чартов исполнителем будет завершаться ошибкой из-за policy.apiserverCIDRsв управляемом режиме определяется командойinitна основе VPC вашего EKS cluster (eks:DescribeClusterиec2:DescribeVpcs). Каждый компонент отправляет запросы токенов Kubernetes, а исполнитель управляет сервисами через API, поэтому при CNI с принудительным применением правил все они блокируются, пока значение не задано. Если lookup не удаётся,initвыводит предупреждение и оставляет список пустым, чтобы вы заполнили его CIDR-блоками своего VPC.
clicklink.clickhouse.com/managed-by: executor, и policy допускает их именно по этой метке, поэтому при установке в управляемом режиме параметр clickhouseNamespaces можно оставить пустым. Перечислять по имени нужно только те пространства имен, которые созданы вне исполнителя — для ClickHouse, который вы разворачиваете самостоятельно.
Включение policy позже. Если при установке вы пропустили CIDR для конечной точки, init подготовил конфигурацию с enabled: false и allowEgressCIDRs: [] и вывел шаг, который нужно выполнить для её завершения. Когда CIDR станут известны, задайте enabled: true и allowEgressCIDRs в clicklink-values.yaml, убедитесь, что apiserverCIDRs содержит диапазоны вашего VPC, и выполните helm upgrade, как показано в разделе конфигурационные поверхности.
Когда включён шлюз сеанса, важно ещё одно правило исходящего трафика: clctl.gateway.jwksEgressCIDRs. Средство диагностики запрашивает JWKS вашего провайдера идентификации, чтобы валидировать токены операторов, поэтому при политике запрета по умолчанию пустой список блокирует любую проверку токенов:
private.googleapis.com, который охватывает провайдер идентификации Google, доступный через Private Google Access. Для любого другого провайдера идентификации укажите его диапазон либо CIDR egress-прокси, стоящего перед ним.
Остаются два ключа входящего трафика: metricsScrapeSelector ограничивает входящий трафик сбора метрик одним пространством имен Prometheus по метке, а kubeletProbeCIDRs явным образом разрешает проверки состояния кубелета при строгой политике запрета по умолчанию. Полный список ключей см. в справочнике по конфигурации.
Шаблоны маскирования
Средство диагностики маскирует свой вывод, прежде чем тот покинет ваш периметр. Встроенные шаблоны охватывают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. Установщик заполняет его начальным набором активных шаблонов (ключи API сторонних сервисов, секретные ключи AWS и т. д.). Сокращайте или расширяйте этот набор; установщик сохраняет вашу версию при обновлениях. В Kubernetes поместите YAML в ConfigMap с ключом redaction-patterns.yaml и задайте его имя в troubleshooter.redaction.patternsConfigMap; чарт монтирует его по тому же пути.
Частное зеркало и конечные точки внутри периметра
В опубликованном чарт дляimage.repository заранее указан публичный мультиархитектурный образ коннектора, подписанный cosign, поэтому для обычной установки не нужно задавать значения image. Чтобы просмотреть опубликованные значения по умолчанию:
init принимает --chart как имя чарт из --chart-repo либо как прямую ссылку oci://, URL, локальный архив или каталог. По умолчанию --chart-version соответствует версии самого CLI, поэтому бинарный файл и чарт обновляются вместе.
--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, и коннектор таким же образом добавляет её к системным корневым сертификатам. Инструкции по регистрации и подписанию сертификатов в полностью изолированной от интернета среде см. в разделе онбординг.
Хранилище
- Kubernetes
- Linux VM
Два компонента хранят состояние в PersistentVolumeClaim. Том средства диагностики содержит состояние сеанса и журнал аудита:Том исполнителя содержит его базу данных команд и реестр управляемых им сервисов:
init задаёт для обоих параметров storageClass выбранный вами класс. Пустое значение storageClass означает использование класса хранилища по умолчанию для кластера; если в кластере класс по умолчанию не задан, init потребует указать его в промпте или через --storage-class. Claim исполнителя помечен аннотацией helm.sh/resource-policy: keep, поэтому helm uninstall оставляет его на месте; см. uninstall.