kubernetes/ts/kubernetes.classes.kubeclient.ts

63 lines
1.6 KiB
TypeScript
Raw Normal View History

2020-01-18 17:33:57 +00:00
import * as plugins from './kubernetes.plugins';
2020-01-19 10:57:41 +00:00
import * as paths from './kubernetes.paths';
2020-01-18 17:33:57 +00:00
export class KubeClient {
2020-01-18 18:47:46 +00:00
public client: plugins.kubectl.ApiRoot;
2020-01-18 17:33:57 +00:00
2020-01-18 18:47:46 +00:00
constructor() {};
public async init () {
const { KubeConfig } = require('kubernetes-client')
const kubeconfig = new KubeConfig()
2020-01-19 10:57:41 +00:00
kubeconfig.loadFromFile(paths.defaultKubeConfigPath);
2020-01-18 18:47:46 +00:00
const Request = require('kubernetes-client/backends/request');
const backend = new Request({ kubeconfig });
2020-01-19 10:57:41 +00:00
this.client = new plugins.kubectl.Client1_13({ backend, version: '1.13' });
2020-01-18 18:47:46 +00:00
}
2020-01-19 10:57:41 +00:00
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 () {}
2020-01-18 17:33:57 +00:00
}