Используйте эту инструкцию только если недоступна штатная процедура смены 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 -o 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