devops cheatsheet
1661 commands · click to copy
1661 shown
tool
tag
Все поды с расположением на нодах и IP-адресами
kubectl get pods -A -o wide
Описание пода
kubectl
Подробная информация: события, условия, монтирование томов
kubectl describe pod <name> -n <ns>
Следить за логами пода
kubectl
Потоковые логи в реальном времени; добавьте -c <container> для мульти-контейнерных подов
kubectl logs -f <pod> -n <ns>
Логи предыдущего контейнера
kubectl
Логи последнего упавшего или перезапущенного экземпляра контейнера
kubectl logs <pod> --previous -n <ns>
Войти в под
kubectl
Интерактивная оболочка внутри работающего контейнера
kubectl exec -it <pod> -n <ns> -- bash
Проброс порта сервиса
kubectl
Туннелирование порта кластерного сервиса на localhost
kubectl port-forward svc/<name> 8080:80 -n <ns>
Следить за статусом rollout
kubectl
Блокировать до завершения деплоя или таймаута (используется в CI)
kubectl rollout status deployment/<name> -n <ns>
Откат деплоймента
kubectl
Вернуться к предыдущей ревизии
kubectl rollout undo deployment/<name> -n <ns>
Масштабирование деплоймента
kubectl
Немедленно изменить количество реплик
kubectl scale deployment/<name> --replicas=3 -n <ns>
События кластера по времени
kubectl
Последние события кластера, сначала старые — удобно при post-incident разборе
kubectl get events -A --sort-by='.lastTimestamp'
Валидация манифеста через живой API без применения изменений
kubectl apply --server-side --dry-run=server -f file.yaml
Экспорт ресурса в YAML
kubectl
Текущее состояние без служебных полей; удобен как базовый шаблон
kubectl get deployment/<name> -n <ns> -o yaml
Удалить под в состоянии Terminating немедленно (используйте с осторожностью)
kubectl delete pod <name> -n <ns> --grace-period=0 --force
Копирование файла из пода
kubectl
Извлечь файл из работающего контейнера
kubectl cp <ns>/<pod>:/remote/path ./local-path
Cordon ноды
kubectl
Пометить ноду как неналиняющую — новые поды сюда не попадают
kubectl cordon <node>
Drain ноды
kubectl
Аккуратно вытеснить все поды перед обслуживанием
kubectl drain <node> --ignore-daemonsets --delete-emptydir-data
Редактировать ресурс в кластере
kubectl
Открыть ресурс в $EDITOR; изменения применяются при сохранении
kubectl edit deployment/<name> -n <ns>
Проверка прав RBAC
kubectl
Проверить что ServiceAccount имеет право делать
kubectl auth can-i list pods --as=system:serviceaccount:<ns>:<sa> -n <ns>
Деплой чарта; создаёт неймспейс если не существует
helm install <release> <chart> -f values.yaml -n <ns> --create-namespace
Безопасно в CI — устанавливает если нет, обновляет если есть
helm upgrade --install <release> <chart> -f values.yaml -n <ns>
Показать что именно изменится (требует плагин helm-diff)
helm diff upgrade <release> <chart> -f values.yaml -n <ns>
Вывести сгенерированный YAML в stdout без деплоя
helm template <release> <chart> -f values.yaml --debug
Все вычисленные значения для задеплоенного релиза
helm get values <release> -n <ns> --all
Вернуться к конкретной исторической ревизии
helm rollback <release> <revision> -n <ns>
Линтинг чарта
helm
Проверка структуры чарта и values; падает на предупреждениях в режиме --strict
helm lint <chart-dir> -f values.yaml --strict
Убедиться что все контроллеры Flux запущены и CRD установлены
flux check
Все ресурсы Flux
flux
Сводная таблица: Kustomizations, HelmReleases, Sources — со статусом синхронизации
flux get all -A
Инициировать немедленный git pull + apply
flux reconcile kustomization <name> --with-source -n <ns>
Немедленно повторить цикл Helm install/upgrade
flux reconcile helmrelease <name> --with-source -n <ns>
Трассировка ресурса
flux
Показать какие объекты Flux владеют этим ресурсом
flux trace <kind>/<name> -n <ns>
Поставить на паузу — удобно при ручных hotfix
flux suspend kustomization <name> -n <ns>
Включить приостановленный Kustomization или HelmRelease
flux resume kustomization <name> -n <ns>
Бэкап текущего конфига Flux как YAML для бутстрапа другого кластера
flux export kustomization --all > clusters/cluster.yaml
Кросс-компиляция и push в реестр с BuildKit
docker buildx build --platform linux/amd64,linux/arm64 -t reg/img:tag --push .
Локальный запуск с переменными из файла; --rm удаляет контейнер при выходе
docker run --rm -it --env-file .env -p 8000:8000 img:tag
Просмотр слоёв образа
docker
Каждый слой, его команда и размер; поиск лишнего
docker history --no-trunc img:tag
Очистка неиспользуемого
docker
Удалить остановленные контейнеры, неиспользуемые образы, сети, тома
docker system prune -af --volumes
Перетегировать и запушить в другой реестр
docker pull src-reg/img:tag && docker tag src-reg/img:tag dst-reg/img:tag && docker push dst-reg/img:tag
Сохранение образа в архив
docker
Экспорт образа для передачи в изолированную среду
docker save img:tag | gzip > img.tar.gz
Plan с файлом переменных
terraform
Показать изменения; сохранить артефакт плана для гейтинга в CI
terraform plan -var-file=prod.tfvars -out=plan.tfplan
Apply сохранённого плана
terraform
Применить именно ранее сгенерированный план — без интерактивных запросов
terraform apply plan.tfplan
Импорт существующего ресурса
terraform
Взять уже существующий ресурс под управление Terraform
terraform import module.path.resource_type.name <remote-id>
Просмотр состояния ресурса
terraform
Атрибуты ресурса в Terraform state
terraform state show module.path.resource_type.name
Перемещение ресурса в state
terraform
Переименовать/реорганизовать ресурс без удаления и пересоздания
terraform state mv old.address new.address
Эфемерный debug-контейнер
k8s-debug
Присоединить debug-контейнер (netshoot) к работающему поду — общие PID/net namespace
kubectl debug -it <pod> --image=nicolaka/netshoot -n <ns>
Использование ресурсов нодами
k8s-debug
CPU и память по каждой ноде (требует metrics-server)
kubectl top nodes
Использование ресурсов подами
k8s-debug
Поды отсортированные по памяти во всех неймспейсах — найти прожорливые
kubectl top pods -A --sort-by=memory
Просмотр ConfigMap
k8s-debug
Вывести только поле data; передайте в python -m json.tool для форматирования
kubectl get cm <name> -n <ns> -o jsonpath='{.data}'
Декодирование Secret
k8s-debug
Дамп и base64-декодирование всех полей k8s Secret
kubectl get secret <name> -n <ns> -o jsonpath='{.data}' | python3 -c "import sys,json,base64; [print(k,'=',base64.b64decode(v).decode()) for k,v in json.load(sys.stdin).items()]"
Список всех ресурсов в неймспейсе
k8s-debug
Перечислить все типы ресурсов в неймспейсе — удобно для аудита
kubectl api-resources --verbs=list --namespaced -o name | xargs -I{} kubectl get {} -n <ns> --ignore-not-found
JSONPath для любого ресурса
k8s-debug
Извлечь конкретные поля из объектов k8s API без jq
kubectl get pods -A -o jsonpath='{range .items[*]}{.metadata.namespace}\t{.metadata.name}\t{.status.phase}\n{end}'
Ресурс с кастомными колонками
kubectl
Вывести только нужные поля без jq
kubectl get pods -n <ns> -o custom-columns='NAME:.metadata.name,NODE:.spec.nodeName,STATUS:.status.phase'
Patch поля ресурса
kubectl
Изменить поле ресурса без редактирования манифеста
kubectl patch deployment <name> -n <ns> -p '{"spec":{"replicas":2}}'
Добавить аннотацию к ресурсу
kubectl
Добавить/обновить аннотацию; --overwrite заменяет существующее значение
kubectl annotate pod <pod> -n <ns> key=value --overwrite
Добавить лейбл к ресурсу
kubectl
Добавить или изменить лейбл на любом ресурсе
kubectl label node <node> role=worker --overwrite
Добавить taint на ноду
kubectl
Запретить размещение подов без соответствующего toleration
kubectl taint nodes <node> key=value:NoSchedule
Снять taint с ноды
kubectl
Снять taint — поставить тире в конце
kubectl taint nodes <node> key=value:NoSchedule-
Обновить образ деплоймента
kubectl
Обновить образ контейнера без редактирования YAML
kubectl set image deployment/<name> <container>=image:tag -n <ns>