63 lines
1.6 KiB
TypeScript
63 lines
1.6 KiB
TypeScript
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 () {}
|
|
}
|