[K8S] 使用 kubectl 取出儲存在 configmap 中的檔案內容

[K8S] 使用 kubectl 取出儲存在 configmap 中的檔案內容

在找問題時,有時會需要查看儲存在 configmap 中的檔案內容。

平常會用  kubectl get cm -o yaml 的方式,

直接把 configmap 的內容以 yaml 的方式列印出來:

$ kubectl -n app get cm status-cm -o yaml

apiVersion: v1
data:
  dev.json: |-
    {
     "es": {
        "node": "https://eck-es-master.svc.cluster.local:9200",
        "auth": {
            "username": "elastic",
            "password": "***"
        },
        "requestTimeout": 120000,
        "maxRetries": 3
      }
    }
kind: ConfigMap

 

不過有時會希望把檔案內容直接另存成檔案,

這樣的話上面輸出的 yaml 就有點不太適合 (因為還有前方的空格),

這時可以用  -jsonpath 的方式指定要讀取的值,

像是要讀取 data 下面的 dev.json 的話,可以這樣下

(dev.json 裡的  . 需要用  \ 來 escape):

kubectl -n app get cm status-cm -o jsonpath='{.data.dev\.json}'

 

這樣就能取出完整的檔案內容了:

{
 "es": {
    "node": "https://eck-es-master.svc.cluster.local:9200",
    "auth": {
        "username": "elastic",
        "password": "***"
    },
    "requestTimeout": 120000,
    "maxRetries": 3
  }
}

 

參考資料:kubernetes – How to save content of a configmap to a file with kubectl and jsonpath?

(本頁面已被瀏覽過 126 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料