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 с этими метками, а если чего-то не хватает — дополняй запрос конкретными типами ресурсов.