Kubernetes Secret をデコードして表示する jq 芸
通常、Kubernetes の Secret を見ようとすると、Base64 エンコードされた値で見えるので、実際の値はパッと見分からない。
$ kubectl get secret my-credential -o json | jq '.data'
{
"my-username": "yyyyyyyyyyyyyyyyyyy==",
"my-password": "xxxxxxxxxxxxxxxxxxx=="
}
jq v1.6 以降だと、@base64d
というコマンドが使えるようになっていて、コレで値を Base64 デコードできる。
以下のように to_entries
で Object から Array に直し、それを map()
で操作していく。Key Value の関係はそのままに、.value
の方は @base64d
を使ってデコードしてやる。最後に add
で Array to Object に変換してやると、元どおりの形式で、値がデコードされた状態になる。
$ kubectl get secret my-credential -o json | jq '.data | to_entries | map({ (.key|tostring): (.value|@base64d) }) | add'
{
"my-username": "MY-NAME-IS-NEO",
"my-password": "ORE-ORE-PASSWORD"
}
コレでおけ。