合并 kubeconfig JSON 和 YAML

4 kubernetes kubectl kubeconfig

我有两个 kubeconfigs 文件,第一个文件用于与集群通信,第二个文件用于 Aquasec,采用 JSON 格式。我怎样才能合并这两个?

apiVersion: v1
    clusters:
    - cluster:
        certificate-authority-data: DATA+OMITTED
        server: https://656835E69F31E2933asdAFAKE3F5904sadFDDC112dsasa7.yld432.eu-west-2.eks.amazonaws.com
      name: arn:aws:eks:eu-west-2:test651666:cluster/Magento
    - cluster:
        certificate-authority-data: DATA+OMITTED
        server: https://kubernetes.docker.internal:6443
      name: docker-desktop
    - cluster:
        certificate-authority-data: DATA+OMITTED
        server: https://192.142.242.111:6443
      name: kubernetes
    contexts:
    - context:
        cluster: arn:aws:eks:eu-west-2:test651666:cluster/testing
        user: arn:aws:eks:eu-west-2:test651666:cluster/testing
      name: arn:aws:eks:eu-west-2:test651666:cluster/testing
    - context:
        cluster: docker-desktop
        user: docker-desktop
      name: docker-desktop
    - context:
        cluster: docker-desktop
        user: docker-desktop
      name: docker-for-desktop
    - context:
        cluster: kubernetes
        user: kubernetes-admin
      name: kubernetes-admin@kubernetes
    current-context: arn:aws:eks:eu-west-2:test651666:cluster/testing
    kind: Config
    preferences: {}
    users:
    - name: arn:aws:eks:eu-west-2:test651666:cluster/testing
Run Code Online (Sandbox Code Playgroud)

Bri*_*ley 9

您可以将KUBECONFIG环境变量设置为由 分隔的多个配置文件:,kubectl 会在幕后自动合并它们。

例如:

export KUBECONFIG=config:my-config.json
Run Code Online (Sandbox Code Playgroud)

在上面的导出中,config是包含在其中的默认配置文件~/.kube,并且my-config.json将是您的第二个配置文件,您所说的文件是 JSON 格式。

您可以使用此命令查看合并的配置,该命令显示 kubectl 当前使用的配置的统一视图:

kubectl config view
Run Code Online (Sandbox Code Playgroud)

由于 kubectl 会自动合并多个配置,因此您不需要将合并的配置保存到文件中。但如果你真的想这样做,你可以重定向输出,如下所示:

kubectl config view --flatten > merged-config.yaml
Run Code Online (Sandbox Code Playgroud)

查看掌握 KUBECONFIG 文件使用 kubeconfig 文件组织集群访问以获取更多说明并查看其他一些示例。