import * as plugins from './kubernetes.plugins'; import * as paths from './kubernetes.paths'; export class KubeClient { public client: plugins.kubectl.ApiRoot; constructor() {}; public async init () { const { KubeConfig } = require('kubernetes-client') const kubeconfig = new KubeConfig() kubeconfig.loadFromFile(paths.defaultKubeConfigPath); const Request = require('kubernetes-client/backends/request'); const backend = new Request({ kubeconfig }); this.client = new plugins.kubectl.Client1_13({ backend, version: '1.13' }); } public async setRegistry () { } /** * sets an ssl secret * @param domainNameArg * @param sslCertificateArg */ public async setSslSecret (domainNameArg: string, sslCertificateArg: plugins.tsclass.network.ICert) { this.client.api.v1.namespace('default').secret.post({ body: { apiVersion: 'v1', kind: 'Secret', metadata: { name: `lossless-ssl-${domainNameArg}` }, type: 'Opaque', data: { 'tls.crt': plugins.smartstring.base64.encode(sslCertificateArg.publicKey), 'tls.key': plugins.smartstring.base64.encode(sslCertificateArg.privateKey) } } }) } public async getSslSecret (domainNameArg: string) { this.client.api.v1.namespace('default').secrets(domainNameArg).get(); } /** * removes an ssl secret * @param domainName */ public async removeSslSecret (domainName: string) { this.client.api.v1.namespace('default').secrets(domainName).delete(); } public async setService () {} public async deleteService () {} public async installIngress () {} }