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
|
|
|
}
|