Найти в Дзене
Подводные камни Kubernetes аннотаций
Подводные камни Kubernetes аннотаций 🤔 Недавно столкнулся с интересной ошибкой при деплое Helm чарта: StatefulSet.apps "pgsql" is invalid: spec.template.annotations: Invalid value: "checksum/secret/pgsql" Оказывается, в Kubernetes есть строгие правила для имён аннотаций. Ключ аннотации может содержать только один слеш /, который разделяет префикс и имя. ❌ Неправильно: annotations:   checksum/secret/pgsql: "..."   checksum/secret/postgres-exporter: "..." ✅ Правильно: annotations:   checksum/secret-pgsql: "..."   checksum/secret-postgres-exporter: "....
2 месяца назад
Словил интересный баг в GitLab CI, делюсь кейсом
Словил интересный баг в GitLab CI, делюсь кейсом. 💡 Пайплайн, который работал годами, внезапно упал с ошибкой об отсутствующем пакете. При этом пакет был на месте в package.json, а Dockerfile давно никто не редактировал. Проблема: Для кэширования и ускорения последующих сборок было две задачи: - в одной задаче создавалась папка node_modules от пользователя root. - в следующей задаче она копировалась в образ, где работа шла от пользователя node. Но папка так и оставалась принадлежать root. Почему это работало несколько лет, а потом перестало — для меня до сих пор загадка. Скорее всего, старая версия Docker (или самого раннера) закрывала на это глаза...
3 месяца назад
YAML кажется простым, пока не наткнёшься на «магические» значения, отступы и странные преобразования типов
YAML кажется простым, пока не наткнёшься на «магические» значения, отступы и странные преобразования типов. Вот быстрый чек-лист, чтобы не попасть: 1. Булевы ловушки # Плохо enabled: yes # станет true answer: No # станет false # Хорошо enabled: true answer: "No" # строка 2. Ведущие нули # Плохо port: 080 # Хорошо port: "080" # строка 3. Даты как строки # Плохо version: 2025-08-16 # Хорошо version: "2025-08-16" 4. Только пробелы, без табов items: - a - b 5. Анкоры и алиасы (DRY) base: &base image: nginx:latest web: <<: *base replicas: 2 6. Многострочные строки: `|` vs `>` | — сохраняет переносы строк...
3 месяца назад
В YAML списки (массивы) — это «последовательности
В YAML списки (массивы) — это «последовательности». Их пишут двумя способами: Блочный: с дефисами — самый читаемый servers: - web01 - web02 В строку (flow): компактно, но хуже на длинных списках web_servers: [web01, web02] Можно вкладывать списки в словари и наоборот: environments: - name: production servers: - prod-web01 - prod-db01 Длинные элементы удобно хранить как многострочные строки: config_files: - | server { listen 80; } Где это нужно: Ansible (tasks, hosts), Kubernetes (containers, ports), CI/CD (steps). Советы: * Только пробелы, без табов...
4 месяца назад
Если вы кодируете данные в Base64 для URL или пытаетесь сгенерировать JWT, символы + и / могут некорректно обрабатываться
Если вы кодируете данные в Base64 для URL или пытаетесь сгенерировать JWT, символы + и / могут некорректно обрабатываться. Для этого придуман стандарт Base64URL, где они заменены на - и _, а паддинг = убран. В PHP готовых функций нет, но их легко написать на основе base64_encode и strtr. Главное — не забыть при декодировании вернуть = на место, иначе ничего не получится. Кодирование: rtrim(strtr(base64_encode($data), '+/', '-_'), '='); Декодирование: base64_decode(strtr($data, '-_', '+/') . str_repeat('=',...
4 месяца назад
Если нравится — подпишитесь
Так вы не пропустите новые публикации этого канала