Skip to content

Instantly share code, notes, and snippets.

@shuckc
Last active February 1, 2021 12:18
Show Gist options
  • Save shuckc/6c25a94290e384084a9d9fb139082ded to your computer and use it in GitHub Desktop.
Save shuckc/6c25a94290e384084a9d9fb139082ded to your computer and use it in GitHub Desktop.
Merge multiple kube config files to a single file (manage multiple clusters)
import argparse
import yaml
parser = argparse.ArgumentParser()
parser.add_argument('files', metavar='YAMLFILES', type=argparse.FileType('r'), nargs='*')
args = parser.parse_args()
y = {'apiVersion': 'v1', 'kind': 'Config', 'clusters': [],'contexts': [],
'current-context': 'dev-eu-west-1-aws-bitmex', 'preferences': {}, 'users': []}
for a in args.files:
f = yaml.load(a, Loader=yaml.Loader)
y['clusters'].append(f['clusters'][0])
y['contexts'].append(f['contexts'][0])
y['users'].append(f['users'][0])
y['current-context'] = f['contexts'][0]['name']
print(yaml.dump(y, Dumper=yaml.Dumper))
@shuckc
Copy link
Author

shuckc commented Feb 1, 2021

Usage:

% pip3 install pyyaml
% python3 kubemerge.py ~/.kube/dev.config ~/.kube/prod.config ~/.kube/global.config > ~/.kube/config
% kubectx                                                                                                   
dev-eu-west-1
global
prod-eu-west-1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment