Катомик приносит атомную поддержку и откат в Kubernetes Manifests

Катомик приносит атомную поддержку и откат в Kubernetes Manifests

25 июня 2025 г.

katomik- Atomic Apply to Kubernetes проявляется с поддержкой отката.

Применяет несколько Kubernetes, проявляющихся свсе или ничегогарантии. Нравитьсяkubectl apply -f, но транзакция:
Если какой -либо ресурс не применяется или станет готовым, все ранее применяемые ресурсы откатаются автоматически.

GitHub Repo →

Функции

  • Атомное поведение: Применяет несколько манифестов как единое целое. Во всяком случае, восстанавливает исходное состояние.
  • Серверная сторона применить(SSA): используетPATCHс SSA, чтобы минимизировать конфликты и сохранить намерения.
  • Отслеживание статуса: Ждать, пока все ресурсы станутCurrent(Готово/доступно) Перед тем, как добиться успеха.
  • Поддержка отката: Автоматически восстанавливает предыдущее состояние, если подать заявку или ожидание.
  • Рекурсивный: Нравитьсяkubectl, поддерживает каталоги и-Rдля рекурсивного обхода.
  • Поддержка Stdin: Использовать-f -читать изstdinПолем

Установка

Ручная установка

  1. Загрузите последний двоичный файл для вашей платформы сСтраница выпускаПолем
  2. Поместите бинарку в свою системуPATH(например.,/usr/local/bin)

Установка сценария

(
set -euo pipefail

OS="$(uname | tr '[:upper:]' '[:lower:]')"
ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')"
TAG="$(curl -s https://api.github.com/repos/hashmap-kz/katomik/releases/latest | jq -r .tag_name)"

curl -L "https://github.com/hashmap-kz/katomik/releases/download/${TAG}/katomik_${TAG}_${OS}_${ARCH}.tar.gz" |
tar -xzf - -C /usr/local/bin && \
chmod +x /usr/local/bin/katomik
)

Домашняя установка

brew tap hashmap-kz/homebrew-tap
brew install katomik

Использование

# Apply multiple files atomically
katomik apply -f manifests/

# Read from stdin
katomik apply -f - < all.yaml

# Apply recursively
katomik apply -R -f ./deploy/

# Set a custom timeout (default: 5m)
katomik apply --timeout 2m -f ./manifests/

# Process and apply a manifest located on a remote server
katomik apply \
  -f https://raw.githubusercontent.com/user/repo/refs/heads/master/manifests/deployment.yaml

Пример вывода

# katomik apply -f test/integration/k8s/manifests/

+ waiting for resources
| namespace/katomik-test                (cluster)
| configmap/postgresql-init-script      katomik-test
| configmap/postgresql-envs             katomik-test
| configmap/postgresql-conf             katomik-test
| service/postgres                      katomik-test
| persistentvolumeclaim/postgres-data   katomik-test
| statefulset/postgres                  katomik-test
| configmap/prometheus-config           katomik-test
| persistentvolumeclaim/prometheus-data katomik-test
| service/prometheus                    katomik-test
| statefulset/prometheus                katomik-test
| persistentvolumeclaim/grafana-data    katomik-test
| service/grafana                       katomik-test
| configmap/grafana-datasources         katomik-test
| deployment/grafana                    katomik-test
+ waiting for resources

+ watching
| Service/grafana                       katomik-test Unknown
| Deployment/grafana                    katomik-test Unknown
| StatefulSet/postgres                  katomik-test InProgress
| StatefulSet/prometheus                katomik-test InProgress
+ watching

✓ Success

🔒 Гарантии отката

Об отказе (плохой манифест, отсутствие зависимости, тайм -аут и т. Д.):

  • Существующие объекты возвращаются в их точное состояние до применения.
  • Новые объекты удалены.

Это гарантирует, что ваш кластер остается последовательным - без частичных обновлений.

Обратная связь

Есть запрос на функции или проблема? Не стесняйтесь __Откройте проблему__ или отправьте PR!


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE