Ответ
Историю изменений (rollout history) для Deployment можно посмотреть с помощью команды kubectl rollout history. Это позволяет отслеживать, какие версии приложения были развернуты и какие изменения вносились.
Основные команды:
# Показать список всех ревизий для Deployment
kubectl rollout history deployment/<deployment-name>
# Показать детали конкретной ревизии (например, 3)
kubectl rollout history deployment/<deployment-name> --revision=3
# Указать namespace, если Deployment находится не в default
kubectl rollout history deployment/<deployment-name> -n <namespace>
# Вывести детали ревизии в формате YAML (полезно для аудита)
kubectl rollout history deployment/<deployment-name> --revision=3 --output=yaml
Пример вывода kubectl rollout history deployment/nginx-app:
REVISION CHANGE-CAUSE
1 kubectl apply --filename=deployment-v1.yaml
2 kubectl set image deployment/nginx-app nginx=nginx:1.21
3 kubectl apply --filename=deployment-v3.yaml
Практическое применение:
- Аудит изменений: Понимание, кто и когда вносил изменения (если заполнено поле
CHANGE-CAUSEчерез аннотациюkubernetes.io/change-cause). - Откат (rollback): Зная номер стабильной ревизии, можно выполнить откат:
kubectl rollout undo deployment/<deployment-name> --to-revision=2. - Сравнение конфигураций: Детали ревизии показывают разницу в образах, переменных окружения или ресурсах между версиями.
Важно: Для корректного отображения CHANGE-CAUSE нужно добавлять аннотацию при применении манифеста, например: kubectl apply -f deployment.yaml --record (флаг --record устарел в новых версиях, лучше явно указывать в манифесте).