Особенности дистрибутивов Kubernetes

Особенности дистрибутивов Kubernetes#

Процедура обновления не зависит от дистрибутива Kubernetes. Для ее выполнения необходимы доступ к узлам кластера по SSH, право sudo и среда выполнения контейнеров containerd. Для кластера, развернутого на собственных серверах или виртуальных машинах, дополнительные действия не требуются.

Боцман#

Процедура обновления в кластере под управлением платформы «Боцман» (Bootsman) совпадает с основным сценарием. Особенности:

  • для доступа по SSH к узлам подчиненного кластера укажите в поле ansible_user описания инвентаря учетную запись bootsman;

  • утилиту kubectl можно использовать из веб-интерфейса «Боцмана» (Kubectl Shell), однако для запуска сценария размещения образов необходим установочный узел с доступом к узлам кластера по SSH;

  • хранилище и классы StorageClass при обновлении не изменяются.

Примечание

Штатный контроллер Ingress «Боцмана» – ingress-nginx. Если вместо него используется контроллер Traefik, компонент Automation Dashboard после обновления будет недоступен без дополнительной настройки, что относится к известным проблемам.

Yandex Managed Service for Kubernetes#

В управляемом кластере Yandex Cloud при наличии доступа к узлам по SSH применима основная процедура. В качестве альтернативы вместо стадии размещения образов можно использовать реестр Yandex Container Registry.

Для использования реестра выполните следующие действия:

  1. Распакуйте установочный пакет на машине с установленным Docker – это может быть установочный узел или отдельная рабочая станция.

  2. Получите IAM-токен и аутентифицируйтесь в реестре:

    yc iam create-token | docker login cr.yandex --username iam --password-stdin
    
  3. Загрузите образы и отправьте их в реестр:

    export REGISTRY_ID="<registry_id>"
    
    for image_tar in ~/aa-bundle/images/*.tar; do
      docker load -i "${image_tar}"
    done
    
    docker tag registry.astra.ru/aa/<image>:2.1 cr.yandex/${REGISTRY_ID}/aa/<image>:2.1
    docker push cr.yandex/${REGISTRY_ID}/aa/<image>:2.1
    

    Здесь:

    • <registry_id> – идентификатор реестра Yandex Container Registry;

    • <image> – название образа.

    Повторите команды docker tag и docker push для каждого образа из каталога images/.

  4. В манифестах операторов замените реестр:

    for f in ~/aa-bundle/operators/*.yaml; do
      sed -i.bak "s#registry.astra.ru/aa/#cr.yandex/${REGISTRY_ID}/aa/#g" "$f"
    done
    
  5. Убедитесь, что узлы кластера могут загружать образы из реестра: назначьте сервисному аккаунту групп узлов кластера роль container-registry.images.puller на реестр. В этом случае дополнительные секреты для загрузки образов в кластере не требуются.

  6. В манифесте приложения укажите все поля образов, включая control_plane_ee_image и offline_content_loader.image_name, с путем cr.yandex/<registry_id>/aa/.... Если в манифесте заданы верхнеуровневые поля image, image_proxy, postgres_image или redis_image, обновите версии в соответствующих полях *_version, не указывая тег в имени образа.

Остальные стадии не отличаются от основного сценария.

Примечание

Срок жизни IAM-токена ограничен. Если между аутентификацией и загрузкой образов прошло много времени, создайте новый токен и повторите команду docker login перед выполнением docker push.