Полезные команды
- Получение всех логов со всех контейнеров приложения
- Сбор логов только с одного сервиса
- Получение всех событий K8s-кластера в текущем пространстве имен
- Развертывание на урезанной конфигурации
- Откат на предыдущий релиз
- Отладка LDAP-интеграции
- Генерация нового пароля администратора
- Обновление пароля администратора в базе
- Ошибка авторизации Access denied
- Авторизация проходит успешно, но страница авторизации появляется по кругу
- Получение ключа шифрования CONTROL_API_CRYPTO_KEYиз секретов K8s
- Восстановление воркбука по его ID
- Итоги
В этом уроке вы найдете команды, которые пригодятся при администрировании DataLens On-premises.
Получение всех логов со всех контейнеров приложения
./init.sh --stern .
Сбор логов только с одного сервиса
./init.sh --stern --tail 100 --no-follow deployment/datalens-enterprise-auth
Получение всех событий K8s-кластера в текущем пространстве имен
./init.sh --kubectl get events
Развертывание на урезанной конфигурации
Минимальная конфигурация, которую мы рекомендуем для комфортной работы:
- vCPU — 8;
- RAM — 16 ГБ;
При необходимости можно развернуть и при такой конфигурации:
- vCPU — 4;
- RAM — 8 ГБ;
И даже при такой (при условии деградации производительности):
- vCPU — 2;
- RAM — 4 ГБ;
Для переопределения значений выделенных ресурсов для сервисов укажите необходимые значения в файле values.yaml.
Достаточно указать только те значения, которые требуют переопределения, например:
application:
control_api:
replicas: 1
version: '0.29.0'
maxSurge: 50%
maxUnavailable: 0
resources:
requests:
cpu: 1
memory: 512Mi
limits:
memory: 1024Mi
data_api:
replicas: 1
version: '0.29.0'
maxSurge: 50%
maxUnavailable: 0
resources:
requests:
cpu: 1
memory: 512Mi
limits:
memory: 1024Mi
ui:
replicas: 1
version: '0.95.0'
maxSurge: 50%
maxUnavailable: 0
resources:
requests:
cpu: 0.5
memory: 256Mi
limits:
memory: 512Mi
us:
replicas: 1
version: '0.79.0'
maxSurge: 50%
maxUnavailable: 0
resources:
requests:
cpu: 0.5
memory: 512Mi
limits:
memory: 1024Mi
auth:
replicas: 1
version: '0.34.0'
maxSurge: 50%
maxUnavailable: 0
resources:
requests:
cpu: 1
memory: 512Mi
limits:
memory: 1024Mi
Для еще более сжатой конфигурации можно указать так:
application:
control_api:
replicas: 1
version: '0.29.0'
maxSurge: 50%
maxUnavailable: 0
resources:
requests:
cpu: 1
memory: 256Mi
limits:
memory: 512Mi
data_api:
replicas: 1
version: '0.29.0'
maxSurge: 50%
maxUnavailable: 0
resources:
requests:
cpu: 1
memory: 512Mi
limits:
memory: 1024Mi
ui:
replicas: 1
version: '0.95.0'
maxSurge: 50%
maxUnavailable: 0
resources:
requests:
cpu: 0.25
memory: 256Mi
limits:
memory: 512Mi
us:
replicas: 1
version: '0.79.0'
maxSurge: 50%
maxUnavailable: 0
resources:
requests:
cpu: 0.5
memory: 256Mi
limits:
memory: 512Mi
auth:
replicas: 1
version: '0.34.0'
maxSurge: 50%
maxUnavailable: 0
resources:
requests:
cpu: 1
memory: 256Mi
limits:
memory: 512Mi
После указания настроек можно применить значения через команду ./init.sh --values ./values.yaml.
Откат на предыдущий релиз
export KUBECONFIG="/etc/rancher/k3s/k3s.yaml"
./bin/helm-amd64 rollback datalens-enterprise -n datalens-enterprise
Отладка LDAP-интеграции
ldapsearch \
-H ldap://localhost:8389 \
-x \
-D cn=admin,dc=example,dc=org \
-w admin \
-b ou=users,dc=example,dc=org \
"(uid=bob)"
ldapsearch \
-H ldap://localhost:8389 \
-x \
-D cn=admin,dc=example,dc=org \
-w admin \
-b ou=groups,dc=example,dc=org \
"(&(objectClass=groupOfNames)(member=uid=bob,ou=users,dc=example,dc=org))"
Генерация нового пароля администратора
echo ""
echo "Generate DataLens password hash..."
PASSWORD_LENGTH=32
PASSWORD_VALUE=$(openssl rand -base64 "${PASSWORD_LENGTH}" | tr -dc a-zA-Z0-9 | head -c "${PASSWORD_LENGTH}")
SALT=$(openssl rand 16)
SALT_HEX=$(echo -n "${SALT}" | od -A n -t x1 -v | tr -d ' \n')
SALT_BASE64URL=$(echo -n "${SALT}" | base64 | tr '+/' '-_' | tr -d '=')
echo " new admin password: ${PASSWORD_VALUE}"
KEY_LENGTH=64
COST_ITERATIONS=16384
BLOCK_SIZE=8
PARALLELIZATION=1
MAX_MEMORY_BYTES=33554432
KEY_BASE64URL=$(
openssl kdf -keylen "${KEY_LENGTH}" \
-kdfopt "pass:${PASSWORD_VALUE}" -kdfopt "hexsalt:${SALT_HEX}" \
-kdfopt "n:${COST_ITERATIONS}" -kdfopt "r:${BLOCK_SIZE}" -kdfopt "p:${PARALLELIZATION}" \
-kdfopt "maxmem_bytes:${MAX_MEMORY_BYTES}" \
-binary scrypt | base64 | tr '+/' '-_' | tr -d '='
)
PASSWORD_HASH="${SALT_BASE64URL}:${KEY_BASE64URL}"
echo " new hash: ${PASSWORD_HASH}"
Обновление пароля администратора в базе
psql \
--host "${POSTGRES_HOST}" \
--port "${POSTGRES_PORT}" \
--username "${POSTGRES_USER_AUTH}" \
--dbname "${POSTGRES_DB_AUTH}" <<-EOSQL
UPDATE auth_users SET password = '${PASSWORD_HASH}' WHERE login = 'admin';
EOSQL
Ошибка авторизации Access denied

-
Проверить корректное заполнение секретов:
secrets.AUTH_TOKEN_PRIVATE_KEY secrets.AUTH_TOKEN_PUBLIC_KEY -
Если использовался режим развертывания через файл
values.yaml, то эти секреты нужно сгенерировать самостоятельно.Пример файла
values.yaml:KUBECONFIG=~/.kube/config ./init.sh --values ./values.deploy.yaml --ingress-domain <domain> --disable-postgresКоманда для генерации ключа:
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096
Авторизация проходит успешно, но страница авторизации появляется по кругу
- В Auth-сервисе можно проверить значение переменной
UI_APP_ENDPOINT— именно на это значение выписывается Cookie авторизации. - Если пользователь заходит в сервис по другому эндпоинту, то авторизация будет выполняться с некорректным значением Cookie.
Получение ключа шифрования CONTROL_API_CRYPTO_KEYиз секретов K8s
./init.sh --kubectl get secret datalens-enterprise-secrets -o jsonpath='{.data.CONTROL_API_CRYPTO_KEY}' | base64 -d; echo
Вывод все равно будет в формате base64. Это не ошибка, это значение ключа в base64, которое и нужно сохранить.
Восстановление воркбука по его ID
./init.sh --kubectl exec -it deploy/datalens-enterprise-us -- node -e "fetch('http://localhost:8080/private/v2/workbooks/<WORKBOOK_ID>/restore',{method:'POST',headers:{'content-type':'application/json','x-us-master-token':process.env.MASTER_TOKEN}}).then(r=>r.json()).then(console.log)"
Где <WORKBOOK_ID> — ID воркбука.
Получить список удаленных воркбуков:
./init.sh --pg sh -c 'psql -U "${POSTGRES_USER}" -d "${POSTGRES_DB_US}" -c "SELECT encode_id(workbook_id) AS workbook_id,deleted_at FROM workbooks WHERE deleted_at IS NOT NULL"'
Заполнять ничего не нужно, скопируйте и вставьте команду как есть.
Итоги
Вы узнали о полезных командах, которые пригодятся для решения задач администрирования DataLens On-premises.