列出与 Helm 部署或 Chart 相关的所有 Kubernetes 资源

D. *_*Rao 26 kubernetes kubectl kubernetes-helm

我使用部署了一个 Helm Chart helm install,之后我想查看与此部署相关的 pod/services/cms 是否已启动或失败。有办法看到这个吗?

使用kubectl get pods和 grep 查找该名称是有效的,但它不会显示部署此 Helm Chart 时部署的服务和其他资源。

Kam*_*san 19

如果您使用 Helm3:

要列出 helm 管理的所有资源,请使用带有 label 的标签选择器app.kubernetes.io/managed-by=Helm

$ kubectl get all --all-namespaces -l='app.kubernetes.io/managed-by=Helm'
Run Code Online (Sandbox Code Playgroud)

列出由 helm 管理的所有资源以及特定版本的一部分:( edit release-name)

kubectl get all --all-namespaces -l='app.kubernetes.io/managed-by=Helm,app.kubernetes.io/instance=release-name'
Run Code Online (Sandbox Code Playgroud)

更新:

标签键可能会随着时间的推移而变化,请遵循官方文档以获取最新标签。

  • 您所描述的标签没有任何变化。文档:https://helm.sh/docs/chart_best_practices/labels/#standard-labels 这是我们在文档中可以看到的内容:`下表定义了 Helm 图表使用的常见标签。Helm 本身从不要求存在特定标签。建议使用标记为 REC 的标签,并将其放置在图表上以实现全局一致性。 (2认同)
  • 不幸的是,“获取全部”并没有列出所有资源。例如,CRD-s、ClusterRoles、ClusterRoleBindings 未列出,仅举几例。 (2认同)

小智 7

我找不到任何地方可以提供我想要的东西,所以我使用yq. 它以格式打印出所有对象Kind/name。如果任何清单只是注释,您可能会得到一些空白。

helm get manifest $RELEASE_NAME | yq -N eval '[.kind, .metadata.name] | join("/")' - | sort
Run Code Online (Sandbox Code Playgroud)

发布于此处:https ://gist.github.com/bioshazard/e478d118fba9e26314bffebb88df1e33