Работа с паролями в кластере
При изменении паролей от систем хранения и баз данных нужно поменять соответствующие секреты в Kubernetes (Kubernetes Secrets) — объекты, которые хранят конфиденциальную информацию, такую как пароли и токены. Может также потребоваться перезапуск соответствующих приложений, чтобы они смогли повторно прочитать актуальные данные.
В случае с ClickHouse регистрационные данные обновляются через NATS Key/Value — сервис, который хранит конфигурационные данные и позволяет централизованно управлять паролями и настройками.
Смена пароля пользователя ClickHouse
Чтобы обновить пароль пользователя ClickHouse:
-
Измените пароль ClickHouse, выполнив следующий запрос в консоли ClickHouse:
SQL-запросALTER USER <user> IDENTIFIED BY '<new_password>';Здесь:
-
<user>— имя пользователя. -
<new_password>— новый пароль.
-
-
Если требуется изменить пароль пользователя writer, обновите пароль в блоке
<remote_servers>в конфигурации кластера. -
Подключитесь к терминалу master-узла кластера.
-
Получите название ключа ClickHouse в бакете
r-space-service-discovery-registry, выполнив команду:kubectl exec -n <namespace> deployment/nats-space-box -- nats kv ls r-space-service-discovery-registryЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Запишите содержимое ключа ClickHouse в отдельный файл формата JSON на master-узле, выполнив команду:
kubectl exec -n <namespace> deployment/nats-space-box -- nats kv get r-space-service-discovery-registry <key_name> --raw > <path_to_file>Здесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<key_name>— название ключа, полученное ранее. -
<path_to_file>— путь до файла формата JSON, например,/path/to/config.json.
-
-
В файле формата JSON с содержимым ключа ClickHouse измените значения паролей в следующих полях:
-
"owner_password"; -
"reader_password"; -
"writer_password".
Пример содержимого ключа ClickHouse
{ "name": "clickhouse1", "instances": [ { "address": "click.host", "port": 1001, "meta": { "grpc_port": "1000", "is_tls_enabled": "true", "https_port": "0000", "ca_base_64_string": "base64_e3ncoded_cert=", "owner_password": "password", "reader_password": "password", "writer_password": "password" }, "healthChecks": [ { "id": "evo-clickhouse1-http-api-ping", "url": "http://click.host:0000/ping", "method": "GET", "interval": 10000, "timeout": 1000 } ] } ] } -
-
Загрузите обновленное содержимое ключа ClickHouse, выполнив команду:
kubectl exec -i -n <namespace> deployment/nats-space-box -- nats kv put r-space-service-discovery-registry <key_name> < <path_to_file>Здесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<key_name>— название ключа, полученное ранее. -
<path_to_file>— путь до файла формата JSON, например,/path/to/config.json.
-
-
Перезапустите контроллер Deployment
evo.space.service-discovery, выполнив команду:kubectl -n <namespace> rollout restart deployment evo.space.service-discoveryЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
Дождитесь перезапуска контроллера.
-
-
Перезапустите связанные контроллеры Deployment, выполнив команды:
kubectl -n <namespace> rollout restart deployment evo.streams.event-storage-manager kubectl -n <namespace> rollout restart deployment evo.streams.active-list-manager kubectl -n <namespace> rollout restart deployment evo.streams.query-log-managerЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
Смена пароля PostgreSQL
Чтобы обновить пароль PostgreSQL:
-
Через командную строку
-
Через Lens
-
Подключитесь к кластеру.
-
Узнайте имя пода PostgreSQL, выполнив команду:
kubectl get pods -n <namespace> -l app.kubernetes.io/instance=postgresqlЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Подключитесь к контейнеру пода PostgreSQL, выполнив команду:
kubectl exec -it -n <namespace> <pod_name> -- shПри наличии нескольких контейнеров у пода PostgreSQL добавьте оператор -c <container_name>в команду выше.Здесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<pod_name>— имя пода PostgreSQL, полученное на предыдущем шаге. -
<container_name>— имя контейнера пода PostgreSQL.
-
-
Подключитесь к базе данных, выполнив команду:
psql -U postgres -d auth -
Обновите пароль, выполнив SQL-запрос:
ALTER USER <postgres_user> WITH PASSWORD '<new_password>';Здесь:
-
<postgres_user>— имя пользователя. -
<new_password>— новый пароль.
После смены пароля сервисы, использующие PostgreSQL, перестанут работать до обновления секретов в Kubernetes. -
-
Измените секреты Kubernetes
evo.core.global,evo.streams.globalиevo.infra.global, содержащие пароль PostgreSQL. Для этого выполните следующие действия для каждого секрета:-
Закодируйте пароль в base64, например, с помощью команды:
echo -n <new_password> | base64Здесь:
-
<new_password>— новый пароль.
-
-
Откройте необходимый секрет для редактирования, выполнив команду:
kubectl -n <namespace> edit secret <secret_name>Здесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<secret_name>— имя секрета:evo.core.global,evo.streams.globalиevo.infra.global.
-
-
Замените значение ключа
POSTGRES_PASSWORDв блокеdataна пароль, закодированный ранее. -
Обновите значение ключа
POSTGRES_URL. Для этого добавьте новый незакодированный пароль в следующий URL вместо переменной<new_password>:postgres://<postgres_user>:<new_password>@<postgres_host>:<postgres_port>Здесь:
-
<postgres_user>— декодированное значение ключаPOSTGRES_USER. -
<new_password>— пароль пользователя PostgreSQL. -
<postgres_host>— декодированное значение ключаPOSTGRES_HOST. -
<postgres_port>— декодированное значение ключаPOSTGRES_PORT.
Пример декодированного значения ключа
POSTGRES_URLpostgres://user:password@postgresql:0000 -
-
Закодируйте полученный URL сначала в кодировку URLEncode, а затем в base64. Например, вы можете сделать это с помощью утилиты jq, выполнив команду:
echo -n 'postgres://<postgres_user>:<new_password>@<postgres_host>:<postgres_port>' | jq -rR '@uri' | base64 -
Сохраните изменения и закройте конфигурацию секрета.
Вы можете проверить, что значение ключа было обновлено, с помощью команды:
kubectl -n <namespace> get secret <secret_name>Здесь:
-
<namespace>— название пространства имен, в котором установлена система. -
<secret_name>— название редактируемого секрета.
-
-
-
Перезапустите связанные контроллеры Deployment, выполнив команды:
kubectl -n <namespace> rollout restart deployment/evo.core.access kubectl -n <namespace> rollout restart deployment/evo.core.mf-feed kubectl -n <namespace> rollout restart deployment/evo.streams.active-list-manager kubectl -n <namespace> rollout restart deployment/evo.streams.dashboard-manager kubectl -n <namespace> rollout restart deployment/evo.streams.driver-manager kubectl -n <namespace> rollout restart deployment/evo.streams.entity-relation-manager kubectl -n <namespace> rollout restart deployment/evo.streams.event-model-manager kubectl -n <namespace> rollout restart deployment/evo.streams.event-storage-manager kubectl -n <namespace> rollout restart deployment/evo.streams.expertise-manager kubectl -n <namespace> rollout restart deployment/evo.streams.integration-manager kubectl -n <namespace> rollout restart deployment/evo.streams.query-log-manager kubectl -n <namespace> rollout restart deployment/evo.streams.secret-manager kubectl -n <namespace> rollout restart deployment/evo.streams.settings-manager kubectl -n <namespace> rollout restart deployment/evo.streams.template-managerЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Проверьте состояние подов, контроллеры которых были перезапущены:
kubectl -n <namespace> get podsЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
Названия необходимых подов начинаются с названий их контроллеров.
-
-
Подключитесь к кластеру.
-
В выпадающем меню свойств кластера выберите пункт Workloads → Pods.
-
Выберите под PostgreSQL. В правой части экрана откроется карточка управления подом.
Название пода PostgreSQL начинается с postgresql-, например,postgresql-0. -
Нажмите на кнопку Shell на панели управления подом. Откроется вкладка терминала с подключением к поду PosgtreSQL.
-
Подключитесь к базе данных, выполнив команду:
psql -U postgres -d auth -
Обновите пароль, выполнив SQL-запрос:
ALTER USER <postgres_user> WITH PASSWORD '<new_password>';Здесь:
-
<postgres_user>— имя пользователя. -
<new_password>— новый пароль.
После смены пароля сервисы, использующие PostgreSQL, перестанут работать до обновления секретов в Kubernetes. -
-
Измените секреты Kubernetes
evo.core.global,evo.streams.globalиevo.infra.global, содержащие пароль PostgreSQL. Для этого выполните следующие действия для каждого секрета:-
Закодируйте пароль в base64, например, с помощью команды в окне терминала:
echo -n <new_password> | base64Здесь:
-
<new_password>— новый пароль.
-
-
В выпадающем меню свойств кластера выберите пункт Config → Secrets.
-
Найдите секрет
evo.core.globalв списке и нажмите на него. В правой части экрана откроется карточка с информацией этого секрета. -
Нажмите на кнопку Edit на панели управления секретом. Откроется вкладка терминала с конфигурацией секрета.
-
Замените значение ключа
POSTGRES_PASSWORDв блокеdataна пароль, закодированный ранее. -
Обновите значение ключа
POSTGRES_URL. Для этого добавьте новый незакодированный пароль в следующий URL вместо переменной<new_password>:postgres://<postgres_user>:<new_password>@<postgres_host>:<postgres_port>Здесь:
-
<postgres_user>— декодированное значение ключаPOSTGRES_USER. -
<new_password>— пароль пользователя PostgreSQL. -
<postgres_host>— декодированное значение ключаPOSTGRES_HOST. -
<postgres_port>— декодированное значение ключаPOSTGRES_PORT.
Пример декодированного значения ключа
POSTGRES_URLpostgres://user:password@postgresql:0000 -
-
Закодируйте полученный URL сначала в кодировку URLEncode, а затем в base64. Например, вы можете сделать это с помощью утилиты jq, выполнив команду:
echo -n 'postgres://<postgres_user>:<new_password>@<postgres_host>:<postgres_port>' | jq -rR '@uri' | base64 -
Сохраните внесенные изменения в конфигурации секрета.
-
Повторите вышеперечисленные шаги для изменения пароля в секретах
evo.streams.globalиevo.infra.global.
-
-
Перезапустите связанные контроллеры Deployment. Для этого:
-
В выпадающем меню свойств кластера выберите пункт Workloads → Deployments.
-
Найдите следующие контроллеры Deployment:
-
evo.core.access; -
evo.core.mf-feed; -
evo.streams.active-list-manager; -
evo.streams.dashboard-manager; -
evo.streams.driver-manager; -
evo.streams.entity-relation-manager; -
evo.streams.event-model-manager; -
evo.streams.event-storage-manager; -
evo.streams.expertise-manager; -
evo.streams.integration-manager; -
evo.streams.query-log-manager; -
evo.streams.secret-manager; -
evo.streams.settings-manager; -
evo.streams.template-manager.
-
-
Откройте карточку каждого контроллера и нажмите на кнопку Restart.
-
Дождитесь перезапуска всех контроллеров.
-
-
В выпадающем меню свойств кластера выберите пункт Workloads → Pods.
-
Проверьте, что все связанные поды корректно перезапустились.
Названия подов, связанных с контроллерами Deployment, начинаются с названий этих контроллеров.
Смена пароля Grafana
|
Для смены пароля в Grafana необходимо:
|
Чтобы обновить пароль пользователя Grafana:
-
Перейдите по адресу
https://<domain_name>/grafanaи авторизуйтесь в сервисе c помощью учетных данных.Здесь:
-
<domain_name>— доменное имя системы.
-
-
Нажмите на аватар пользователя в правом верхнем углу. Откроется меню действий.
-
Выберите опцию Change password. Откроется страница изменения пароля.
-
Измените пароль в веб-интерфейсе Grafana, введя старый и новый пароль в соответствующие поля.
-
Измените пароль пользователя в секрете
kube-prometheus-stack-grafana. Для этого:-
Зашифруйте новый пароль в кодировке base64, например, используя команду:
-
Windows
-
Linux
Используйте командную оболочку PowerShell:
[Convert]::ToBase64String([text.Encoding]::UTF8.GetBytes("<new_password>"))echo -n <new_password> | base64Здесь:
-
<new_password>— новый пароль.
-
-
Подключитесь к кластеру.
-
Откройте конфигурацию секрета
kube-prometheus-stack-grafana, выполнив команду:kubectl edit secret -n kube-prometheus-stack kube-prometheus-stack-grafana -
Введите новый пароль в поле
admin-passwordв блокеmetadata → dataв кодировке base64.
-
Была ли полезна эта страница?