我想创建一个 cron 作业,它从超过 29 天的给定类型(例如 kubernetes.io/tls)中选择名称 kubernetes secrets。
我尝试了这两种方式:
1 - 使用 grep:
kubectl get secrets --all-namespaces| grep kubernetes.io/tls
cicd devkins.infra.mydomain.ninja.tls kubernetes.io/tls 2 14d
cust-ao-xmas cust-ao-xmas.infra.mydomain.ninja.tls kubernetes.io/tls 2 1h
dev dev.mydomain.com.tls kubernetes.io/tls 2 4h
logging graylog.infra.mydomain.ninja.tls kubernetes.io/tls 2 10d
Run Code Online (Sandbox Code Playgroud)
2 使用jsonpath
kubectl get secrets --all-namespaces -o jsonpath='{range .items[?(@.type=="kubernetes.io/tls")]}[{.metadata.namespace},{.metadata.name},{.metadata.creationTimestamp}]{"\n"}{end}'
[cicd,devkins.infra.mydomain.ninja.tls,2017-12-13T22:57:02Z]
[cust-ao-xmas,cust-ao-xmas.infra.mydomain.ninja.tls,2017-12-28T03:13:32Z]
[dev,dev.mydomain.com.tls,2017-12-28T00:59:10Z]
[logging,graylog.infra.mydomain.ninja.tls,2017-12-17T22:23:38Z]
Run Code Online (Sandbox Code Playgroud)
他们都返回了答案,但很难解析
有没有更好的方法来实现这一目标?
这就是我使用的......可能有更好的方法,但适用于我的情况(超过 24 小时的秘密)。
kubectl get secrets -o json | jq -r "[.items[] | {name: .metadata.name, startTime: .metadata.creationTimestamp | fromdate } | select(.startTime < (now | . - 86400))]" | jq -r ".[].name"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
786 次 |
| 最近记录: |