如何在kubectl中查看当前上下文的配置详细信息?

问题描述 投票:0回答:7

我想查看“配置”详细信息,如以下命令所示:

kubectl config view

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

kubernetes kubectl
7个回答
38
投票

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


13
投票

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

kubectl config view --minify --flatten

5
投票

执行此操作的云原生方法是使用命令的 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"
    }
  }
}

这个答案帮助我弄清楚了一些 jq 位。


2
投票

带有一点 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

1
投票

您可以使用命令

kubectl config view --minify
仅获取当前上下文。

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

kubectl config view --help

0
投票

如果您只想要当前上下文的名称...

Powershell

kubectl config view | find --% "current"

重击

kubectl config view | grep "current"

Windows 命令提示符

kubectl config view | find "current"

0
投票

我使用了上面@andrewdotn的答案并对其进行了一些调整以使用

yq
直接针对
$KUBECONFIG

运行
yq '. as $o
| ."current-context" as $current_context_name
| $o.contexts[] | select(.name == $current_context_name) as $context
| ($current_context_name + ":" + $context.context.namespace)' $KUBECONFIG

经过一些后期处理,这是我的 PS1 的一个不错的小上下文字符串

© www.soinside.com 2019 - 2024. All rights reserved.