【问题标题】:How can I view the config details of the current context in kubectl?如何在 kubectl 中查看当前上下文的配置详细信息?
【发布时间】:2019-04-23 11:30:55
【问题描述】:

我想查看以下命令显示的“配置”详细信息:

kubectl config view

但是,这显示了所有上下文的整个配置详细信息,我如何过滤它(或者可能有另一个命令),以查看当前上下文的配置详细信息?

【问题讨论】:

    标签: kubernetes kubectl


    【解决方案1】:

    使用以下命令获取包括证书在内的完整配置

    kubectl config view --minify --flatten
    

    【讨论】:

    • 使用--flatten有什么好处?
    • --flatten 会显示'certificate-authority-data',如果你不包含它会被省略
    【解决方案2】:

    您可以使用命令kubectl config view --minify 仅获取当前上下文。

    使用 --help 可以很方便地获取 kubectl 操作的选项。

    kubectl config view --help
    

    【讨论】:

      【解决方案3】:

      带有一点 jq 的 bash/kubectl,对于任何等效的上下文:

      exec >/tmp/output &&
      CONTEXT_NAME=kubernetes-admin@kubernetes \
      CONTEXT_CLUSTER=$(kubectl config view -o=jsonpath="{.contexts[?(@.name==\"${CONTEXT_NAME}\")].context.cluster}") \
      CONTEXT_USER=$(kubectl config view -o=jsonpath="{.contexts[?(@.name==\"${CONTEXT_NAME}\")].context.user}") && \
      echo "[" && \
      kubectl config view -o=json | jq  -j --arg CONTEXT_NAME "$CONTEXT_NAME" '.contexts[] | select(.name==$CONTEXT_NAME)' && \
      echo "," && \
      kubectl config view -o=json | jq  -j --arg CONTEXT_CLUSTER "$CONTEXT_CLUSTER" '.clusters[] | select(.name==$CONTEXT_CLUSTER)' && \
      echo "," && \
      kubectl config view -o=json | jq  -j --arg CONTEXT_USER "$CONTEXT_USER" '.users[] | select(.name==$CONTEXT_USER)' && \
      echo -e "\n]\n" && \
      exec >/dev/tty && \
      cat /tmp/output | jq && \
      rm -rf /tmp/output
      

      【讨论】:

        【解决方案4】:

        执行此操作的云原生方式是使用命令的 JSON 输出,然后使用 jq 对其进行过滤:

        kubectl config view -o json | jq '. as $o
            | ."current-context" as $current_context_name
            | $o.contexts[] | select(.name == $current_context_name) as $context
            | $o.clusters[] | select(.name == $context.context.cluster) as $cluster
            | $o.users[] | select(.name == $context.context.user) as $user
            | {"current-context-name": $current_context_name, context: $context, cluster: $cluster, user: $user}'
        
        {
          "current-context-name": "docker-for-desktop",
          "context": {
            "name": "docker-for-desktop",
            "context": {
              "cluster": "docker-for-desktop-cluster",
              "user": "docker-for-desktop"
            }
          },
          "cluster": {
            "name": "docker-for-desktop-cluster",
            "cluster": {
              "server": "https://localhost:6443",
              "insecure-skip-tls-verify": true
            }
          },
          "user": {
            "name": "docker-for-desktop",
            "user": {
              "client-certificate-data": "REDACTED",
              "client-key-data": "REDACTED"
            }
          }
        }
        

        This answer 帮我找出了一些 jq 位。

        【讨论】:

          【解决方案5】:

          kubectl config view --minify 仅显示当前上下文

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-08-11
            • 2020-10-15
            • 1970-01-01
            • 1970-01-01
            • 2010-12-10
            • 2016-07-22
            • 1970-01-01
            • 2020-04-15
            相关资源
            最近更新 更多