Bug 50041 - Некорректная обрезка версии при удалении пакетов
Summary: Некорректная обрезка версии при удалении пакетов
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: podsec-k8s (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: kaf@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-04-16 12:52 MSK by Artem Varaksa
Modified: 2024-04-22 15:41 MSK (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Artem Varaksa 2024-04-16 12:52:43 MSK
Шаги
====

1. # podsec-create-policy <ip>
2. # podsec-create-services
3. # podsec-create-imagemakeruser imagemaker
4. # podsec-create-podmanusers poduser
5. # ssh imagemaker@localhost
6. imagemaker$ U7S_KUBEVERSION=v1.28.7 podsec-k8s-save-oci out amd64 k8s-sisyphus

Фактический результат
=====================

Скрипт пытается удалить неверный пакет 'kubernetes.28-kubeadm":

> imagemaker$ U7S_KUBEVERSION=v1.28.7 podsec-k8s-save-oci out amd64 k8s-sisyphus
> Предупреждение: команда kubeadm версии 1.28.8 уже установлена
> Предупреждение: команда crio версии 1.28.4 уже установлена
> Версия v1.28.7 crio совпадает с устанавливаемой
> Удаление пакетов  kubernetes.28-kubeadm
> Установка пакетов  kubernetes1.28-kubeadm kubernetes1.28-kubelet kubernetes1.28-crio cri-tools1.28
> ...

Ожидаемый результат
===================

Успешная сборка архива с образами.

Воспроизводимость
=================

Воспроизводится на виртуальной машине:

[sisyphus] ALT Server 10.2 x86_64
podsec-1.0.10-alt6.noarch
kubernetes1.28-kubeadm-1.28.8-alt1.x86_64
kubernetes1.28-kubelet-1.28.8-alt1.x86_64
kubernetes1.28-crio-1.28.8-alt1.noarch
cri-tools1.28-1.28.0-alt1.x86_64

В p10 проверяемого функционала ещё нет.
Comment 1 Artem Varaksa 2024-04-16 13:33:20 MSK
Если пакетов несколько, неправильная обрезка происходит, похоже, только у первого или только у kubeadm:

> Удаление пакетов  kubernetes.28-kubeadm kubernetes1.28-crio cri-o1.28 cri-tools1.28
Comment 2 ALexey Kostarev 2024-04-16 16:08:17 MSK
А что в c10f1 уже kubernetes1.28-kubeadm-1.28.8 ?
У меня 1.26

Можно вывести результат
@kubernetes1.28-kubeadm-1.28.8@
?

Ставить пока 1.28 смысла нет, так как нет образов 1.28 для c10f1
Comment 3 ALexey Kostarev 2024-04-16 16:29:48 MSK
Виноват - не обратил внимание, что это sisyphus

(Ответ для Artem Varaksa на комментарий #0)
> Шаги
> ====
> 
> 1. # podsec-create-policy <ip>
> 2. # podsec-create-services
> 3. # podsec-create-imagemakeruser imagemaker
> 4. # podsec-create-podmanusers poduser
> 5. # ssh imagemaker@localhost
> 6. imagemaker$ U7S_KUBEVERSION=v1.28.7 podsec-k8s-save-oci out amd64
> k8s-sisyphus
> 
> Фактический результат
> =====================
> 
> Скрипт пытается удалить неверный пакет 'kubernetes.28-kubeadm":
> 
Вопрос - а почему неверный?
U7S_KUBEVERSION=v1.28.7  
задает не patch-версию kubeadm, а patch-верию kubernetes-образов
kube-apuserver:xxxx
kube-proxy:xxx

patch-версия kubeadm "прибита" в пакете 
 kubernetes1.28-kubeadm-1.28.x
Насколько я понимаю, если у нас есть пакет
kubernetes1.28-kubeadm-1.28.7
и появляется пакет
kubernetes1.28-kubeadm-1.28.8
то в RPM-репозитории 
- удаляется kubernetes1.28-kubeadm-1.28.7
- добавляется kubernetes1.28-kubeadm-1.28.8

То-есть в рамках минорной версии 1.28 может быть только одна patch-версия
kubernetes1.28-kubeadm-1.28.x

И в данной ситуации мне надо понять:
какая patch-версия kubeadm уже была установлена при установке podsec-k8s. Как правило по зависимости 
 Requires: kubernetes-kubeadm
ставится последняя доступная на момент установки podsec-k8s максимальная версия kubeadm

Какой пакет kubeadm установлен
rpm -qa | grep kubeadm
?

Какой доступный пакет kubeadm в repo
apt-get update
apt-cache show kubernetes1.28-kubeadm | grep Version

Если patch-версии kubeadm запрошенного, установленного и доступного в RPM-repo не совпадают, то есть смысл установить последний свежий kubeadm

Если данный сценарий не устраивает, о надо договориться о сценарии обновления kubeadm 



> > imagemaker$ U7S_KUBEVERSION=v1.28.7 podsec-k8s-save-oci out amd64 k8s-sisyphus
> > Предупреждение: команда kubeadm версии 1.28.8 уже установлена
> > Предупреждение: команда crio версии 1.28.4 уже установлена
> > Версия v1.28.7 crio совпадает с устанавливаемой
> > Удаление пакетов  kubernetes.28-kubeadm
> > Установка пакетов  kubernetes1.28-kubeadm kubernetes1.28-kubelet kubernetes1.28-crio cri-tools1.28
> > ...
> 
> Ожидаемый результат
> ===================
> 
> Успешная сборка архива с образами.

Из сообщения непонятно - сборка образов прошла успешно или нет?
В тексте нет сообщение о неуспешной сборке.

> 
> Воспроизводимость
> =================
> 
> Воспроизводится на виртуальной машине:
> 
> [sisyphus] ALT Server 10.2 x86_64
> podsec-1.0.10-alt6.noarch
> kubernetes1.28-kubeadm-1.28.8-alt1.x86_64
> kubernetes1.28-kubelet-1.28.8-alt1.x86_64
> kubernetes1.28-crio-1.28.8-alt1.noarch
> cri-tools1.28-1.28.0-alt1.x86_64
> 
> В p10 проверяемого функционала ещё нет.
Comment 4 Artem Varaksa 2024-04-17 12:20:49 MSK
В целом хотел отметить, что возможно логика удаления старых пакетов не столь необходима вообще, потому что при установке пакетов kubernetes другой версии уже установленные в системе пакеты kubernetes удаляются автоматически. То есть скрипт может просто ставить необходимые версии, а уже apt-get разберется с тем, какие пакеты нужно удалить.

(Ответ для ALexey Kostarev на комментарий #3)
> (Ответ для Artem Varaksa на комментарий #0)
> > Скрипт пытается удалить неверный пакет 'kubernetes.28-kubeadm":
> Вопрос - а почему неверный?

Обрезается "1" в начале версии:

Удаляется:        kubernetes.28-kubeadm
Должен удаляться: kubernetes1.28-kubeadm

> Какой пакет kubeadm установлен
> rpm -qa | grep kubeadm

kubernetes1.28-kubeadm-1.28.8-alt1.x86_64

> Какой доступный пакет kubeadm в repo
> apt-get update
> apt-cache show kubernetes1.28-kubeadm | grep Version

Version: 1.28.8-alt1:sisyphus+343074.100.1.1@1710862045

> Из сообщения непонятно - сборка образов прошла успешно или нет?
> В тексте нет сообщение о неуспешной сборке.

Нет, так как далее воспроизводятся ошибки:
* https://bugzilla.altlinux.org/50042 (если использовать U7S_KUBEVERSION); * https://bugzilla.altlinux.org/50043 (если использовать U7S_SETAVAILABLEIMAGES).
Comment 5 ALexey Kostarev 2024-04-17 13:08:25 MSK
(Ответ для Artem Varaksa на комментарий #4)
> В целом хотел отметить, что возможно логика удаления старых пакетов не столь
> необходима вообще, потому что при установке пакетов kubernetes другой версии
> уже установленные в системе пакеты kubernetes удаляются автоматически. То
> есть скрипт может просто ставить необходимые версии, а уже apt-get
> разберется с тем, какие пакеты нужно удалить.

Возможно - но я на момент программирования не стал рисковать
Установка и удаление пакетов производится за один вызов apt-get inrall
Удаляемые пакеты приведены с префиксом -, добавляемые (замещаемые) с префиксом +

Только недавно узнал о  такой возможности - решил проверить :-)

С замечанием согласен
Оттестирую и реализую в следующей версии alt7
Comment 6 ALexey Kostarev 2024-04-17 13:11:28 MSK
(Ответ для Artem Varaksa на комментарий #4)
> В целом хотел отметить, что возможно логика удаления старых пакетов не столь
> необходима вообще, потому что при установке пакетов kubernetes другой версии
> уже установленные в системе пакеты kubernetes удаляются автоматически. То
> есть скрипт может просто ставить необходимые версии, а уже apt-get
> разберется с тем, какие пакеты нужно удалить.
> 
> (Ответ для ALexey Kostarev на комментарий #3)
> > (Ответ для Artem Varaksa на комментарий #0)
> > > Скрипт пытается удалить неверный пакет 'kubernetes.28-kubeadm":
> > Вопрос - а почему неверный?
> 
> Обрезается "1" в начале версии:
> 

Прошу прощения - не заметил эту деталь, так как на ней не было акцентировано внимание

Замечание принимаю.
Исправление будет в версии alt7
Comment 7 Artem Varaksa 2024-04-22 15:41:47 MSK
(Ответ для Artem Varaksa на комментарий #4)
> То есть скрипт может просто ставить необходимые версии, а уже apt-get
> разберется с тем, какие пакеты нужно удалить.

Реализовано в podsec-1.0.10-alt7.noarch.