Используйте эту инструкцию только если недоступна штатная процедура смены registry.
Если после истечения лицензионного токена поды Deckhouse Kubernetes Platform (DKP) были перезапущены, в их логах появится ошибка подключения к registry при загрузке образов DKP. Чтобы переключить кластер на новый токен, на любом master-узле выполните следующие шаги:
-
Загрузите текущую конфигурацию секрета
deckhouse-registryво временный файл:d8 k -n d8-system get secret deckhouse-registry -o yaml > /tmp/deckhouse-registry.yaml -
Во временном файле
/tmp/deckhouse-registry.yamlзамените значение поля.dockerconfigjsonна Base64-кодированную строку с параметрами подключения к registry. Получить нужную строку можно командами ниже, подставив свои значенияMYPASSWORDиMYREGISTRY:declare MYUSER='license-token' declare MYPASSWORD='example-token' declare MYREGISTRY='example-regsitry.deckhouse.ru' MYAUTH=$(echo -n "$MYUSER:$MYPASSWORD" | base64 -w0) MYRESULTSTRING=$(echo -n "{\"auths\":{\"$MYREGISTRY\":{\"username\":\"$MYUSER\",\"password\":\"$MYPASSWORD\",\"auth\":\"$MYAUTH\"}}}" | base64 -w0) echo "$MYRESULTSTRING" -
Разрешите изменение устаревшего секрета:
d8 k delete validatingadmissionpolicybindings.admissionregistration.k8s.io heritage-label-objects.deckhouse.io -
Импортируйте обновленную конфигурацию:
d8 k -n d8-system apply -f /tmp/deckhouse-registry.yaml -
Найдите проблемный под
deckhouseна текущем master-узле и удалите его:d8 k get pods -n d8-system -o wide d8 k delete pod -n d8-system deckhouse-<id> -
Убедитесь, что новый под
deckhouseзапустился корректно:d8 k get pods -n d8-system -
При необходимости удалите остальные поды
deckhouse, находящиеся в некорректном статусе. -
Повторите штатную процедуру смены registry, подставив ваш токен и нужный адрес registry и редакцию вместо
example:d8 k -n d8-system exec -ti svc/deckhouse-leader -c deckhouse -- deckhouse-controller helper change-registry --user licence-token --password MY-PASSWORD registry-example.deckhouse.ru/deckhouse/example