Kubernetes kubectl命令用于在configMap或Secrets中查找密钥
我有大约10个ConfigMap和一些秘密,它们将我的配置存储在key和value中。我正在寻找任何kubectl命令,我可以使用它在任何可用的configMap或secrets中查找我的密钥?Kubernetes kubectl命令用于在configMap或Secrets中查找密钥,kubernetes,Kubernetes,我有大约10个ConfigMap和一些秘密,它们将我的配置存储在key和value中。我正在寻找任何kubectl命令,我可以使用它在任何可用的configMap或secrets中查找我的密钥? 我知道我可以打开每个文件并找到我的密钥,但是有没有kubectl命令可以查找所有configMap或Serects以找到我的密钥?这可能不是最好的解决方案,但它可以工作,目前我想到的唯一方法是使用它。如果我将找到不同的解决方案,我将编辑此答案 如果kubectl命令只指定resource,而没有指定名称
我知道我可以打开每个文件并找到我的密钥,但是有没有
kubectl
命令可以查找所有configMap或Serects以找到我的密钥?这可能不是最好的解决方案,但它可以工作,目前我想到的唯一方法是使用它。如果我将找到不同的解决方案,我将编辑此答案
如果kubectl
命令只指定resource
,而没有指定名称,则它将打印来自该指定资源的所有对象的信息kubectl Descripte cm
将打印所有ConfigMaps
对于测试,我已经从中创建了5个(带有data.game.properties和data.ui.properties)。在其中3个键中,我用值1
、3
或5
设置了相同的键test
$ kubectl get cm
NAME DATA AGE
cm1 1 20m
cm2 1 21m
cm3 1 21m
cm4 1 21m
cm5 1 21m
所以最简单的方法就是使用kubest get cm-o yaml
,它将以yaml格式打印所有ConfigMaps
,然后按键或值打印它们
$ kubectl get cm -o yaml | grep test
test=configmap1
{"apiVersion":"v1","data":{"game.properties":"enemies=aliens\nlives=3\ntest=configmap1\n"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"cm1","namespace":"default"}}
test=configmap3
{"apiVersion":"v1","data":{"game.properties":"secret.code.allowed=true\nsecret.code.lives=30\ntest=configmap3\n"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"cm3","namespace":"default"}}
test=configmap5
{"apiVersion":"v1","data":{"ui.properties":"allow.textmode=true\nhow.nice.to.look=fairlyNice \ntest=configmap5\n"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"cm5","namespace":"default"}}
因此cm1
包括test=configmap1
,cm3
包括test=configmap3
和cm5
包括test=configmap5
。除了YAML
之外,还可以使用JSON
此外,由于ConfigMap
是名称空间的
,您可以使用-A
标志检查所有名称空间
$ kubectl get cm -o yaml -A | grep test
它可能很难读取,但在控制台输出中将突出显示它
您也可以使用。创建以下kubectl插件
#!/bin/bash
kubectl get secrets -o go-template='{{range $s:=.items}}{{range $k,$v:=$s.data}}{{printf "Secret %s: %s\n" $s.metadata.name $k}}{{end}}{{end}}' | grep -i $1
kubectl get configmap -o go-template='{{range $s:=.items}}{{range $k,$v:=$s.data}}{{printf "CM %s: %s\n" $s.metadata.name $k}}{{end}}{{end}}' | grep -i $1
它必须位于执行路径上的某个位置,并且是可执行的
# Make script executable
chmod +x /home/mark/bin/kubectl-find-key
# Check it can be found
kubectl plugin list
最后,它可以按如下方式使用
$ kubectl find key database
CM myapp-details: DATABASE_HOSTNAME