# usage: python hack/azure-argocd-clustersecret_convert.py k8s.yaml import base64 import json import sys import yaml def load_kubeconfig(kubeconfig_path): with open(kubeconfig_path, 'r') as file: kubeconfig = yaml.safe_load(file) clusters = kubeconfig.get('clusters', []) cluster_info = clusters[0].get('cluster', {}) if clusters else {} server = cluster_info.get('server') ca_data = cluster_info.get('certificate-authority-data') contexts = kubeconfig.get('contexts', []) context_info = contexts[0].get('context', {}) if contexts else {} cluster = context_info.get('cluster') user = context_info.get('user') users = kubeconfig.get('users', []) user_info = users[0].get('user', {}) if users else {} cert_data = user_info.get('client-certificate-data') key_data = user_info.get('client-key-data') token = user_info.get('token') return server, ca_data, cert_data, key_data, token, cluster server, ca_data, cert_data, key_data, bearer_token, name = load_kubeconfig( sys.argv[1]) encoded_name = base64.b64encode(name.encode('utf-8')).decode('utf-8') encoded_server = base64.b64encode(server.encode('utf-8')).decode('utf-8') config = base64.b64encode(json.dumps({ "bearerToken": bearer_token, "tlsClientConfig": { "insecure": False, "certData": cert_data, "keyData": key_data, "caData": ca_data } }, indent=4).encode('utf-8')).decode('utf-8') print(f'''apiVersion: v1 kind: Secret metadata: labels: argocd.argoproj.io/secret-type: cluster name: {name} namespace: argocd type: Opaque data: config: {config} name: {encoded_name} server: {encoded_server} ''')