Errors
Kubernetes

Kubernetes: List all the kubernetes resources related to a helm deployment or chart

Ты поставил чарт через `helm install`, всё вроде бы завертелось. Но теперь нужно понять, что именно завертелось — какие поды, сервисы, конфигурации появились в

Ты поставил чарт через helm install, всё вроде бы завертелось. Но теперь нужно понять, что именно завертелось — какие поды, сервисы, конфигурации появились в кластере. И, что важнее, всё ли из этого в порядке.

kubectl get pods и grep по имени релиза — это путь новичка. Он покажет только поды, да и то если имя релиза в них прописано. А где сервисы? Где ConfigMaps, Secrets, PersistentVolumeClaims? Их так просто не отфильтруешь.

Как Helm помечает свои ресурсы

Helm 3, если не вмешиваться в его работу, аккуратно маркирует все создаваемые ресурсы специальными метками (labels). Две ключевые для поиска:

  • app.kubernetes.io/managed-by=Helm — общая метка для всех ресурсов, управляемых Helm.
  • app.kubernetes.io/instance=<release-name> — метка, которая связывает ресурс с конкретным релизом (установкой) твоего чарта.

Именно на них нужно охотиться.

Команды, которые экономят время

Чтобы увидеть вообще все ресурсы в кластере, созданные любым Helm, выполни:

kubectl get all --all-namespaces -l='app.kubernetes.io/managed-by=Helm'

Ключевой момент — get all. Эта группа ресурсов (pods, services, deployments, replicasets, statefulsets, daemonsets, jobs, cronjobs) покрывает большинство случаев. Но чарт мог создать и что-то вне этого списка.

Для точечной проверки именно твоего релиза (например, my-redis-release) используй обе метки:

kubectl get all --all-namespaces -l='app.kubernetes.io/managed-by=Helm,app.kubernetes.io/instance=my-redis-release'

Эта команда — твой основной инструмент для быстрой проверки состояния деплоя. Она покажет, что поднялось, что падает, какие сервисы созданы.

А если нужны не только all?

Бывает, чарт создаёт ConfigMap, Ingress, ServiceAccount или PersistentVolumeClaim. Группа all их не включает. Тогда ищи по конкретному типу ресурса с теми же метками:

kubectl get configmaps,ingress,serviceaccount,pvc --all-namespaces -l='app.kubernetes.io/managed-by=Helm,app.kubernetes.io/instance=my-redis-release'

Или, если лень перечислять, можно сделать хитрее — получить вообще все типы ресурсов, которые поддерживают селектор по меткам. Но это уже для экстренных случаев.

Важное предупреждение про метки

Стандартные метки — это рекомендация, а не железное правило. Автор чарта мог переопределить их в templates/. Всегда проверяй, чем именно помечены ресурсы твоего релиза. Посмотреть можно на любом из созданных объектов:

kubectl get pod <pod-name> -o yaml | grep -A 5 -B 5 'labels:'

Актуальный список стандартных меток и их назначение лучше всегда смотреть в официальной документации Helm. Там же описана логика их применения.

Итог

Забудь про grep в выводе kubectl get pods. Фильтрация по меткам app.kubernetes.io/managed-by=Helm и app.kubernetes.io/instance=<release-name> — это каноничный и надёжный способ увидеть полную картину по твоему Helm-релизу. Сначала get all с этими метками, а если чего-то не хватает — дополняй запрос конкретными типами ресурсов.