kubernetes/ts/kubernetes.classes.kubeclient.ts

70 lines
1.7 KiB
TypeScript
Raw Permalink 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-25 18:52:46 +00:00
constructor() {}
2020-01-18 18:47:46 +00:00
2020-01-25 18:52:46 +00:00
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');
2020-01-25 18:52:46 +00:00
2020-01-18 18:47:46 +00:00
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
2020-01-25 18:52:46 +00:00
public async setRegistry() {}
2020-01-19 10:57:41 +00:00
/**
* sets an ssl secret
2020-01-25 18:52:46 +00:00
* @param domainNameArg
* @param sslCertificateArg
2020-01-19 10:57:41 +00:00
*/
2020-01-25 18:52:46 +00:00
public async setSslSecret(
domainNameArg: string,
sslCertificateArg: plugins.tsclass.network.ICert
) {
2020-01-19 10:57:41 +00:00
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)
}
}
2020-01-25 18:52:46 +00:00
});
2020-01-19 10:57:41 +00:00
}
2020-01-25 18:52:46 +00:00
public async getSslSecret(domainNameArg: string) {
this.client.api.v1
.namespace('default')
.secrets(domainNameArg)
.get();
2020-01-19 10:57:41 +00:00
}
/**
* removes an ssl secret
* @param domainName
*/
2020-01-25 18:52:46 +00:00
public async removeSslSecret(domainName: string) {
this.client.api.v1
.namespace('default')
.secrets(domainName)
.delete();
2020-01-19 10:57:41 +00:00
}
2020-01-25 18:52:46 +00:00
public async setService() {}
2020-01-19 10:57:41 +00:00
2020-01-25 18:52:46 +00:00
public async deleteService() {}
2020-01-19 10:57:41 +00:00
2020-01-25 18:52:46 +00:00
public async installIngress() {}
2020-01-18 17:33:57 +00:00
}