in standalone/kube_config.py [0:0]
def create_kube_config_file_for_eks(session,region,account_id, cluster_name):
#get eks cluster details for creating kubeconfig content
eks_api = session.client('eks', region_name=region)
cluster_info = eks_api.describe_cluster(name=cluster_name)
print("*** eks cluster info::" + str(cluster_info))
certificate = cluster_info['cluster']['certificateAuthority']['data']
endpoint = cluster_info['cluster']['endpoint']
print("eks cluster endpoint= " + endpoint)
#generate kubeconfig
kube_cfg_content = dict()
kube_cfg_content['apiVersion'] = 'v1'
kube_cfg_content['clusters'] = [
{
'cluster':
{
'server': endpoint,
'certificate-authority-data': certificate
},
'name':'kubernetes'
}]
kube_cfg_content['contexts'] = [
{
'context':
{
'cluster':'kubernetes',
'user':'aws'
},
'name':'aws'
}]
kube_cfg_content['current-context'] = 'aws'
kube_cfg_content['Kind'] = 'config'
kube_cfg_content['users'] = [
{
'name':'aws',
'user':{'name': 'lambda'}
}]
# {'name': 'lambda'}
# 'user' value in 'users' content above should be key value {'name': 'lambda'} for k8s client version > 9. for version 9, just have {'user': 'lambda'}
#print("kube config content: " + str(kube_cfg_content))
#Write to kubeconfig file
try:
with open(KUBE_CFG_FILEPATH + "_" + account_id, 'w') as outfile:
yaml.dump(kube_cfg_content, outfile, default_flow_style=False)
print("completed creating kube config file.")
except OSError as err:
print("OS error: {0}".format(err))
raise err
except:
print("Unexpected error:", sys.exc_info()[0])
raise