# Отчёт: миграция S3→PV + баги helm upgrade — 2026-05-19 ## Что делали 1. Бенчмарк 3 хранилищ (local-path PV, vcd-disk-ext4 PV, S3) 2. Переехали storagesvc с S3 на PV (vcd-disk-ext4, 2Gi) 3. Обнаружили что S3 фактически не использовался (все Package URL — http://storagesvc..., не s3://) 4. Миграция была no-op: перенесено=0, пропущено=44 --- ## Баги и ошибки ### БАГ 1: helm upgrade откатил executor/router с v1.23.0 → v1.22.1 **Причина:** в `helm/fission-values.yaml` был прописан `imageTag: v1.22.1` вместо `v1.23.0`. До helm upgrade executor/router жили вне helm (задеплоены через `kubectl set image`). **Симптом:** консоль не показывала функции. **Исправление:** изменён `imageTag: v1.23.0` в values, пересоздан executor/router. --- ### БАГ 2: field manager конфликт — fission-console vs helm **Причина:** fission-console патчит `FISSION_RESOURCE_NAMESPACES` в executor и router через server-side apply. Когда helm пытается обновить те же deployment-ы — конфликт field manager. **Симптом:** ``` conflict with "fission-console" using apps/v1: .spec.template.spec.containers[name="executor"].env[name="FISSION_RESOURCE_NAMESPACES"].value ``` **Обход:** перед `helm upgrade` удалять executor и router вручную: ```bash kubectl delete deploy executor router -n fission helm upgrade fission fission-charts/fission-all --version 1.22.1 \ -n fission -f helm/fission-values.yaml --no-hooks --timeout 180s ``` **Системное решение:** нужно чтобы fission-console не трогал deployments executor/router напрямую (FISSION_RESOURCE_NAMESPACES должен читаться из ConfigMap или CRD, а не инжектироваться в deployment env). --- ### БАГ 3: FETCHER_IMAGE = fission/fetcher:v1.22.0 — образ не существует **Причина:** helm chart `fission-all:1.22.1` имеет дефолтное значение: ```yaml fetcher: image: fission/fetcher imageTag: v1.22.0 ``` Этот образ на Docker Hub не существует (fission переехал на ghcr.io). До наших helm upgrade executor не управлялся helm — FETCHER_IMAGE либо не был задан (код падал на дефолт `ghcr.io/fission/fetcher`), либо был задан правильно вручную. После helm upgrade — chart прописал неправильный FETCHER_IMAGE. **Симптом:** - Pool pods: `ImagePullBackOff` на контейнере `fetcher` - `fission/fetcher:v1.22.0: not found` на Docker Hub - Функции не запускаются (504 при invoke) **Правильное значение:** `naeel/fission-bundle:v1.23.0` Fetcher — часть fission-bundle, отдельного образа нет. Находится в: `fission-src/pkg/fetcher/` **Неправильные ключи в values (игнорируются чартом):** ```yaml fetcherImage: naeel/fission-bundle # ← НЕПРАВИЛЬНО, такого ключа нет fetcherImageTag: v1.23.0 # ← НЕПРАВИЛЬНО ``` **Правильные ключи:** ```yaml fetcher: image: naeel/fission-bundle # ← ПРАВИЛЬНО imageTag: v1.23.0 # ← ПРАВИЛЬНО ``` Шаблон чарта (`charts/fission-all/templates/_helpers.tpl`): ``` {{- define "fetcherImage" -}} {{- $args := list (.Values.fetcher.repository | default .Values.repository) .Values.fetcher.image .Values.fetcher.imageTag -}} ``` --- ### БАГ 4: router JWT пароль сменился при helm upgrade **Причина:** helm upgrade пересоздал secret `router` с новым паролем. | До | После | |----|-------| | `slxGj3G3FAD7l5ms2tJ9` | `58oKMuBIvmBBXHXqaLHw` | fission-console читает пароль из secret динамически (`valueFrom: secretKeyRef`) — поэтому сам работает. CLI-инструменты с сохранённым токеном требуют перегенерации токена. --- ## Текущее состояние (на момент отчёта) | Компонент | Образ | Статус | |-----------|-------|--------| | executor, router, buildermgr, storagesvc, timer, webhook, kubewatcher | `naeel/fission-bundle:v1.23.0` | ✅ Running | | fission-console | `naeel/fission-console:v1.3.92` | ✅ Running | | FETCHER_IMAGE (env в executor) | `fission/fetcher:v1.22.0` | ❌ НЕПРАВИЛЬНО | | fission-storage-pvc | 2Gi, vcd-disk-ext4, Bound | ✅ OK | ## Что нужно сделать 1. Исправить `helm/fission-values.yaml` — заменить `fetcherImage`/`fetcherImageTag` на правильную секцию `fetcher:` 2. Сделать helm upgrade (с предварительным удалением executor/router) 3. Проверить что pool pods поднимаются без ImagePullBackOff 4. Проверить что функции nubes1 (`a1`, `c1`) запускаются