Воспроизводится в сизиф на версии пакета: cert-manager-1.19.2-alt1.x86_64 Не воспроизводится в p11: cert-manager-1.14.5-alt1.x86_64 Шаги: 1) # apt-get install kubernetes<VERSION>-kubeadm kubernetes<VERSION>-kubelet kubernetes<VERSION>-crio cri-tools<VERSION> cert-manager -y sed -i '/swap/d' /etc/fstab reboot 2) # systemctl enable --now crio kubelet kubeadm init --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=SystemVerification 3) # mkdir -p /home/test/.kube cp /etc/kubernetes/admin.conf /home/test/.kube/config chown -R test:test /home/test/.kube 4) $ kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v$(rpm -q --queryformat "%{VERSION}" cert-manager)/cert-manager.crds.yaml 5) $ startupapicheck check api Ожидаемый результат: успешное выполнение startupapicheck check api и вывод: The cert-manager API is ready Реальный результат: $ startupapicheck check api E0127 14:17:36.178466 2412 main.go:76] "error executing command" err="the cert-manager mutation webhook did not mutate the dry-run CertificateRequest object" logger="cert-manager" Аналогично например не работают: $ cmctl renew example-local -bash: cmctl: команда не найдена $ kubectl-cert_manager check api -bash: kubectl-cert_manager: команда не найдена На версии в p11 всё работает корректно по указанным шагам. Если выполнить шаги с версиями из p11 и обновить cert-manager (например до задания 405902 или же до сизиф), то cert-manager перестаёт работать.
Попробуйте установить cmcrl
(Ответ для Alexey Shabalin на комментарий #1) > Попробуйте установить cmcrl Установка cmctl помогла решить проблему с выполнением $ cmctl renew example-local обновление сертификата успешно Выполнение: $ kubectl-cert_manager check api Приводит к error: the cert-manager mutation webhook did not mutate the dry-run CertificateRequest object Выполнение: $ startupapicheck check api приводит к E0127 17:52:37.839788 2430 main.go:76] "error executing command" err="the cert-manager mutation webhook did not mutate the dry-run CertificateRequest object" logger="cert-manager"
Для новой версии cert-manager недостаточно применить cert-manager.crds.yaml. Необходимо применить полный манифест: kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v$(rpm -q --queryformat "%{VERSION}" cert-manager)/cert-manager.yaml Или манифест из инструкции https://www.altlinux.org/Cert-manager.
Применение cert-manager.yaml вместо применения cert-manager.crds.yaml в шаге 4 помогает, решение работает на обоих версиях (1.14.5-alt1 и 1.19.2-alt1). Примечание: в cert-manager.yaml прописан taint для control-plane узла, поэтому поды не стартуют "из коробки" и api соответственно тоже. Запуск подов: $ kubectl get nodes $ kubectl taint nodes <Node_Name> node-role.kubernetes.io/control-plane:NoSchedule- Доустановка пакета cmctl делает возможным выполнение cmctl renew example-local и kubectl-cert_manager check api. При обновлении версии cert-manager-1.14.5-alt1.x86_64 до cert-manager-1.19.2-alt1.x86_64 сервис перестаёт работать, если на старой версии разворачивать с cert-manager.crds.yaml, но раз новая версия требует cert-manager.yaml, то ожидаемо. Но на новой версии запуск вебхука по умолчанию стал требовать TLS-сертификат, на версии 1.14.15 работало без него: webhook --kubeconfig ~/.kube/config --secure-port 1337 -v 1, на версии 1.19.2 уже требует обязательный сертификат. В описаниях релизов (https://github.com/cert-manager/cert-manager/releases) не нашёл чёткого указания о подобном изменении, является ли такое поведение ожидаемым?
Такое поведение является ожидаемым, и описано на сайте проекта, в документации: https://cert-manager.io/docs/concepts/webhook/#overview:~:text=Overview