Всем привет! Использую gitlab-ci. Настроил gitlab-agent для деплоя в куб.

При деплое проекта в логах такая ошибка:
Executing deploy plan
failed to watch "ns:my-project/Ingress.v1.networking.k8s.io/my-project-ingress": Get "https://my-gitlab.com/-/kuberne ↵
tes-agent/k8s-proxy/api/v1/namespaces/my-project/events?allowWatchBookmarks=true&fieldSelector=involvedObject.name%3Dmy-project ↵
ingress%2CinvolvedObject.apiVersion%3Dnetworking.k8s.io%2Fv1%2CinvolvedObject.kind%3DIngress%2CinvolvedObject.namespac ↵
e%3Dmy-project&resourceVersion=158110990&timeout=6m4s&timeoutSeconds=364&watch=true": context canceled
failed to watch "ns:my-project/Service.v1/my-project-service": Get "https://my-gitlab.com/-/kubernetes-agent/k8s-prox ↵
y/api/v1/namespaces/my-project/events?allowWatchBookmarks=true&fieldSelector=involvedObject.name%3Dmy-project-service% ↵
2CinvolvedObject.apiVersion%3Dv1%2CinvolvedObject.kind%3DService%2CinvolvedObject.namespace%3Dmy-project&resourceVersion=15 ↵
8110990&timeout=8m54s&timeoutSeconds=534&watch=true": context canceled
при этом процесс идёт, объекты в кубе обновляются в течение первой минуты-полутора, но werf как будто не может получить об этом инфу. В итоге джоба работает 5-8 минут и завершается успешно. Вот лог:
┌ Progress status
│ RESOURCE (→READY) STATE INFO
│ Deployment/my-project WAITING Ready:0/1
│ • Pod/my-project-8669cbb46d-6nvdm CREATED Status:ContainerCreating
│ Ingress/my-project-ingress READY
│ Service/my-project-service READY
└ Progress status
┌ Progress status
│ RESOURCE (→READY) STATE INFO
│ Deployment/my-project WAITING Ready:0/1
│ • Pod/my-project-8669cbb46d-6nvdm CREATED Status:ContainerCreating
└ Progress status
┌ Progress status
│ RESOURCE (→READY) STATE INFO
│ Deployment/my-project WAITING Ready:0/1
│ • Pod/my-project-8669cbb46d-6nvdm CREATED Status:ContainerCreating
└ Progress status
...
### ДЖОБА ВИСИТ 5-7 минут
...
┌ Progress status
│ RESOURCE (→READY) STATE INFO
│ Deployment/my-project WAITING Ready:0/1
│ • Pod/my-project-8669cbb46d-6nvdm CREATED Status:Running
└ Progress status
┌ Progress status
│ RESOURCE (→READY) STATE INFO
│ Deployment/my-project READY Ready:1/1
│ • Pod/my-project-8669cbb46d-6nvdm READY Status:Running
└ Progress status
┌ Completed operations
│ Update resource: Deployment/my-project
│ Update resource: Ingress/my-project-ingress
│ Update resource: Service/my-project-service
└ Completed operations
Succeeded release "my-project-prod" (namespace: "my-project")
Running time 530.54 seconds
Если запускать werf converge через консоль с сервера, то такой фигни нет. Где может быть проблема? Куда копать?

7 ответов

44 просмотра
Konstantin-Moiseev Автор вопроса

ап

--debug не включен? context canceled возможно что-то с сетью, хотя есть вероятность что у нас там какие-то баги с параллельностью. В целом то, что джоба висит 5-7 минут это штатно, судя по логу. Мы ждём, пока Deployment не придет в готовность. Учитывая, что Pod поднялся, скорее всего пробы долго отрабатывают (мы их тоже проверяем, чтобы определить готовность)

Ilya Lesikov L.
--debug не включен? context canceled возможно что-...

Дебаг попробую включить посмотреть, джоба не висит 7 минут, 6 сек

Konstantin-Moiseev Автор вопроса
Ilya Lesikov L.
--debug не включен? context canceled возможно что-...

Всё дело было в ServiceAccount, который использовался для деплоя. Гитлаб агент создал его при установке. Я подготовил ServiceAccount по инструкции и настроил агента на его использование. Это решило проблему.

Konstantin-Moiseev Автор вопроса
Konstantin Moiseev
Всё дело было в ServiceAccount, который использова...

К сожалению, это сработало только на одном кластере и одном проекте. Собрал больше статистики. Есть кластер d8 с таким поведением: деплой через Jenkins с использованием kubeconfig-а работает нормально, деплой через gitlab-ci с использованием kubeconfig - нормально, деплой через gitlab-ci с использованием gitlab agent - ошибка failed to watch (любой ресурс: сервис, деплоймент итд): context canceled, и процесс идет 8-10 минут вместо положенных 30-40 секунд. Есть другой кластер d8, при деплое в него с помощью Jenkins и kubeconfig получаем такую же ошибку и долго ждем релиза; при деплое руками из консоли всё отрабатывает быстро. Есть третий кластер d8, в него быстро и без ошибок werf задеплоить не может вообще никакими способами. Доп. информация. Это три разных ДЦ. Сетевики и админы уверяют, что все везде настраивают одинаково. Мы все настройки делаем ансиблом. Конфиги Deckhouse также одинаковые, кроме сети и доменных имен. Куда смотреть? Почему такое поведение?

Konstantin Moiseev
К сожалению, это сработало только на одном кластер...

ну больше всего похоже либо на проблемы с сетью, либо какие-то серверные компоненты кубов перегружены

Похожие вопросы

Обсуждают сегодня

Всем привет 👋 Подскажите пожалуйста, а чего тут не хватает permission или образ битый? Running with gitlab-runner 17.0.0 (44feccdf) on gitlab-runner-c58775949-d7znz YxYz2zp...
Max
2
Коллеги, у меня тут возникла одна очень интересная задачка. Есть один бандл, который содержит в себе 2 типа образов - бэкенд и фронтенд. Выкатываются последовательно, сперва б...
სერგეი ქრისტოვი
12
Коллеги, день добрый первый раз решил потрогать верфь, и не понял один момент пробую werf + helm-secrets плагин? почему оно в HELM_BIN кладет "werf-in-a-user-namespace"? HELM_...
Elenhil
8
Добрый день, подскажите пожалуйста. RabbitMQ автоматически создаёт очередь если я отправляю сообщение в несуществующую очередь? Вопрос вроде тупой, но мнения разошлись. Одни г...
Elmo
9
Привет. Почему может RabbitMQ через эндпойнт :15692/metrics/detailed?family=queue_metrics не выдавать метрик по конкретной очереди (выдавать нули)? кластер кроля в кубере сост...
Vlad
4
config file failed: GET https://index.docker.io/v2/library/gradle/manifests/sha256:3a895bcb1cc3bd1e1235befa1a6b32ca8cc72a105a9086ed303f24c37a551df7: TOOMANYREQUESTS: You have ...
Max
5
спасибо, может глупый вопрос, как я понял - он запустит в кубе, а как в таком случае артефакт забрать? скажем тест отдает json файл который надо сгрузить к себе в CI
Egor Talantsev
1
Должно получиться так? project: myproject-be configVersion: 1 deploy: helmRelease: "[[ project ]]-[[ env ]]" namespace: "[[ env ]]" --- image: apiapp dockerfile: compose/...
Evgheni Mad
1
Блин а мне как поумнеть ?
Toxin
191
так вроде блокировка докерхаба была ошибочной, разлочили же?
Владимир Муковоз
3
Карта сайта