You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过kubectl的custom-columns格式显示常量值(集群上下文名)

解决Kubernetes多集群Ingress无证书排查时添加集群上下文的问题

你可以通过结合shell文本处理工具,将集群上下文名称注入到每条输出的开头。修改后的命令如下:

k config get-contexts -o name | grep -E 'app(5|3)41.+-admin' | xargs -n1 -I {} sh -c 'kubectl --context {} get ingress -A -o "custom-columns=NS:{.metadata.namespace},NAME:{.metadata.name},CERT:{.spec.tls.*.secretName}" | grep "<none>" | awk -v ctx="{}" "{printf \"%-25s %s\\n\", ctx, \$0}"'

关键修改说明:

  • 用sh -c在xargs的每个循环中串联执行命令,实现集群上下文变量的传递
  • 通过awk -v ctx="{}"把当前集群上下文作为变量传入awk,方便追加到每行开头
  • 借助printf格式化输出,让上下文列对齐,提升整体可读性

修改后的输出示例(格式更规整):

app541-prod-admin       argocd               argo-cd-argocd-server    <none>
app341-test-admin       reference-app         reference-app-netcore-ingress    <none>
app541-prod-admin       test-ingress         my-nginx                <none>

另一种简洁实现方式

如果希望直接通过kubectl的自定义列输出上下文,可利用shell环境变量传递值:

k config get-contexts -o name | grep -E 'app(5|3)41.+-admin' | xargs -n1 -I {} sh -c 'export CTX={}; kubectl --context $CTX get ingress -A -o "custom-columns=CONTEXT:${CTX},NS:{.metadata.namespace},NAME:{.metadata.name},CERT:{.spec.tls.*.secretName}" | grep "<none>"'

这种方法无需额外文本处理工具,直接将上下文值插入到自定义列中,输出结构更贴近kubectl原生格式。

内容的提问来源于stack exchange,提问作者mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 08:30:52