UNPKG

@mittwald/kubernetes

Version:

Kubernetes client library

90 lines 3.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const fs = require("fs"); const yaml = require("yamljs"); class GenericClientConfig { constructor(kubeconfig) { this.kubeconfig = kubeconfig; const context = this.kubeconfig.contexts.find(c => c.name === this.kubeconfig["current-context"]); const cluster = this.kubeconfig.clusters.find(c => c.name === context.context.cluster); const user = this.kubeconfig.users.find(c => c.name === context.context.user); this.apiServerURL = cluster.cluster.server.replace(/\/$/, ""); this.namespace = context.context.namespace || "default"; } mapRequestOptions(opts) { const context = this.kubeconfig.contexts.find(c => c.name === this.kubeconfig["current-context"]); const cluster = this.kubeconfig.clusters.find(c => c.name === context.context.cluster); const user = this.kubeconfig.users.find(c => c.name === context.context.user); const ca = cluster.cluster["certificate-authority-data"]; if (ca) { opts.ca = Buffer.from(ca, "base64"); } const caFile = cluster.cluster["certificate-authority"]; if (caFile) { opts.ca = fs.readFileSync(caFile); } if (!opts.headers) { opts.headers = {}; } if (user.user.token) { opts.headers.Authorization = "Bearer " + user.user.token; } const clientCert = user.user["client-certificate-data"]; if (clientCert) { opts.cert = Buffer.from(clientCert, "base64"); } const clientCertFile = user.user["client-certificate"]; if (clientCertFile) { opts.cert = fs.readFileSync(clientCertFile); } const clientKey = user.user["client-key-data"]; if (clientKey) { opts.key = Buffer.from(clientKey, "base64"); } const clientKeyFile = user.user["client-key"]; if (clientKeyFile) { opts.key = fs.readFileSync(clientKeyFile); } if (user.user.username && user.user.password) { opts.auth = { username: user.user.username, password: user.user.password }; } return opts; } } exports.GenericClientConfig = GenericClientConfig; class FileBasedConfig extends GenericClientConfig { constructor(kubeconfigFile) { // const contents = fs.readFileSync(kubeconfigFile, "utf-8"); const kubeconfig = yaml.load(kubeconfigFile); super(kubeconfig); } } exports.FileBasedConfig = FileBasedConfig; class InClusterConfig extends GenericClientConfig { constructor(namespace) { const kubeconfig = { "apiVersion": "v1", "clusters": [{ name: "local", cluster: { "certificate-authority": "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt", "server": "https://kubernetes.default", }, }], "users": [{ name: "serviceaccount", user: { token: fs.readFileSync("/var/run/secrets/kubernetes.io/serviceaccount/token", "utf-8"), }, }], "contexts": [{ name: "local", context: { cluster: "local", user: "serviceaccount", namespace: namespace || "default" }, }], "current-context": "local", }; super(kubeconfig); } } exports.InClusterConfig = InClusterConfig; //# sourceMappingURL=config.js.map