feat(clickhouse): добавлен пароль служебному default

- Зачем:
  - default должен остаться только учёткой локальных служебных вызовов.
- Что:
  - пароль default подставлен из окружения на обеих нодах.
  - healthcheck и служебные скрипты передают его внутри контейнера.
- Проверка:
  - make config-test, make up, make smoke, make check-clickhouse, make check-services.
This commit is contained in:
2026-08-13 10:23:32 +03:00
parent 62dc618252
commit 780b2d0ef9
4 changed files with 23 additions and 4 deletions
+2 -1
View File
@@ -12,6 +12,7 @@ x-clickhouse-common: &clickhouse-common
# Стенд локальный: нодам нужен общий пользователь без пароля для Distributed. # Стенд локальный: нодам нужен общий пользователь без пароля для Distributed.
CLICKHOUSE_SKIP_USER_SETUP: "1" CLICKHOUSE_SKIP_USER_SETUP: "1"
CLICKHOUSE_CLUSTER_SECRET: ${CLICKHOUSE_CLUSTER_SECRET:?Скопируйте .env.example в .env} CLICKHOUSE_CLUSTER_SECRET: ${CLICKHOUSE_CLUSTER_SECRET:?Скопируйте .env.example в .env}
CLICKHOUSE_DEFAULT_PASSWORD: ${CLICKHOUSE_DEFAULT_PASSWORD:?Скопируйте .env.example в .env}
CLICKHOUSE_ETL_PASSWORD: ${CLICKHOUSE_ETL_PASSWORD:?Скопируйте .env.example в .env} CLICKHOUSE_ETL_PASSWORD: ${CLICKHOUSE_ETL_PASSWORD:?Скопируйте .env.example в .env}
CLICKHOUSE_BI_PASSWORD: ${CLICKHOUSE_BI_PASSWORD:?Скопируйте .env.example в .env} CLICKHOUSE_BI_PASSWORD: ${CLICKHOUSE_BI_PASSWORD:?Скопируйте .env.example в .env}
CLICKHOUSE_ANALYST_PASSWORD: ${CLICKHOUSE_ANALYST_PASSWORD:?Скопируйте .env.example в .env} CLICKHOUSE_ANALYST_PASSWORD: ${CLICKHOUSE_ANALYST_PASSWORD:?Скопируйте .env.example в .env}
@@ -22,7 +23,7 @@ x-clickhouse-common: &clickhouse-common
# Гигабайта не хватало: половину съедали страницы самого бинарника (ADR 0004). # Гигабайта не хватало: половину съедали страницы самого бинарника (ADR 0004).
mem_limit: 4g mem_limit: 4g
healthcheck: healthcheck:
test: ["CMD-SHELL", "clickhouse-client --host 127.0.0.1 --query 'SELECT 1' >/dev/null 2>&1"] test: ["CMD-SHELL", "clickhouse-client --host 127.0.0.1 --user default --password \"$$CLICKHOUSE_DEFAULT_PASSWORD\" --query 'SELECT 1' >/dev/null 2>&1"]
interval: 5s interval: 5s
timeout: 3s timeout: 3s
retries: 30 retries: 30
+3
View File
@@ -37,6 +37,9 @@
</roles> </roles>
<users> <users>
<default>
<password from_env="CLICKHOUSE_DEFAULT_PASSWORD"/>
</default>
<etl> <etl>
<password from_env="CLICKHOUSE_ETL_PASSWORD"/> <password from_env="CLICKHOUSE_ETL_PASSWORD"/>
<profile>default</profile> <profile>default</profile>
+12 -2
View File
@@ -18,7 +18,12 @@ compose() {
query() { query() {
local service="$1" local service="$1"
local sql="$2" local sql="$2"
compose exec -T "$service" clickhouse-client --query "$sql" </dev/null compose exec -T "$service" sh -c '
clickhouse-client \
--user default \
--password "$CLICKHOUSE_DEFAULT_PASSWORD" \
--query "$1"
' _ "$sql" </dev/null
} }
query_with_timeout() { query_with_timeout() {
@@ -27,7 +32,12 @@ query_with_timeout() {
local sql="$3" local sql="$3"
timeout --foreground "${timeout_seconds}s" \ timeout --foreground "${timeout_seconds}s" \
docker compose --project-directory "$ROOT_DIR" exec -T "$service" \ docker compose --project-directory "$ROOT_DIR" exec -T "$service" \
clickhouse-client --query "$sql" sh -c '
clickhouse-client \
--user default \
--password "$CLICKHOUSE_DEFAULT_PASSWORD" \
--query "$1"
' _ "$sql"
} }
fail() { fail() {
+6 -1
View File
@@ -42,7 +42,12 @@ fail() {
query() { query() {
"${COMPOSE_CMD[@]}" --project-directory "$ROOT_DIR" exec -T clickhouse-01 \ "${COMPOSE_CMD[@]}" --project-directory "$ROOT_DIR" exec -T clickhouse-01 \
clickhouse-client --query "$1" </dev/null sh -c '
clickhouse-client \
--user default \
--password "$CLICKHOUSE_DEFAULT_PASSWORD" \
--query "$1"
' _ "$1" </dev/null
} }
expected="$(jq '[.days[].events] | add' "$INVENTORY")" expected="$(jq '[.days[].events] | add' "$INVENTORY")"