88 lines
2.8 KiB
JavaScript
88 lines
2.8 KiB
JavaScript
const Docker = require('dockerode');
|
|
const docker = new Docker({
|
|
'socketPath': '/home/docker.sock'
|
|
//'socketPath': '/var/run/docker.sock'
|
|
});
|
|
const PROJECT_PATH = process.env.PROJECT_PATH;
|
|
const DOCKERIMAGE = "bitnami/kubectl:latest";
|
|
const path = require("path");
|
|
const fs = require("fs");
|
|
const KUBE_PATH = path.join(PROJECT_PATH, 'logs', 'kube');
|
|
|
|
const _done = function(data){
|
|
let output = data[0];
|
|
let container = data[1];
|
|
console.log(`kubectl: (${container.id}) has finished with code: ${output.StatusCode}`);
|
|
return container.remove();
|
|
};
|
|
|
|
const kubeconfig = function( provId ) {
|
|
|
|
fs.writeFileSync(`/var/www/app/logs/kube/config_${provId}`, kubeConfigContent);
|
|
console.log(`kubectl: will spin up container`);
|
|
|
|
return docker.run(DOCKERIMAGE, ['config', 'current-context', '--kubeconfig', `/app/config_${provId}` ], processStream, {
|
|
//"name": initContName,
|
|
"WorkingDir": "/app",
|
|
"HostConfig": {
|
|
"Binds": [
|
|
`${KUBE_PATH}:/app`,
|
|
]
|
|
}
|
|
}).then(_done);
|
|
};
|
|
|
|
const apply = function( provId, kubeConfigContent ) {
|
|
|
|
fs.writeFileSync(`/logs/kube/${provId}.config`, kubeConfigContent);
|
|
console.log(`kubectl: will spin up container`);
|
|
const yaml = path.join(PROJECT_PATH, 'az-tf-templates', 'azqmi-qseok', 'scripts', 'azure-sc.yaml');
|
|
return docker.run(DOCKERIMAGE, ['apply','-f', '/yamlfile', '--kubeconfig', `/app/${provId}.config` ], process.stdout, {
|
|
//"name": initContName,
|
|
"WorkingDir": "/app",
|
|
"HostConfig": {
|
|
"Binds": [
|
|
`${KUBE_PATH}:/app`,
|
|
`${yaml}:/yamlfile`
|
|
]
|
|
}
|
|
}).then(_done);
|
|
};
|
|
|
|
const getpod = function( provId, kubeConfigContent ) {
|
|
|
|
fs.writeFileSync(`/logs/kube/${provId}.config`, kubeConfigContent);
|
|
console.log(`kubectl: will spin up container`);
|
|
|
|
return docker.run(DOCKERIMAGE, ['get', 'pod', '--kubeconfig', `/app/${provId}.config` ], process.stdout, {
|
|
//"name": initContName,
|
|
"WorkingDir": "/app",
|
|
"HostConfig": {
|
|
"Binds": [
|
|
`${KUBE_PATH}:/app`,
|
|
]
|
|
}
|
|
}).then(_done);
|
|
};
|
|
|
|
const getsvc = function( provId, kubeConfigContent ) {
|
|
|
|
fs.writeFileSync(`/logs/kube/config_${provId}`, kubeConfigContent);
|
|
console.log(`kubectl: will spin up container`);
|
|
|
|
console.log(`kubectl: will spin up container`);
|
|
return docker.run(DOCKERIMAGE, ['get', 'svc', '--kubeconfig', `/app/config_${provId}` ], process.stdout, {
|
|
//"name": initContName,
|
|
"WorkingDir": "/app",
|
|
"HostConfig": {
|
|
"Binds": [
|
|
`${KUBE_PATH}:/app`,
|
|
]
|
|
}
|
|
}).then(_done);
|
|
};
|
|
|
|
module.exports.kubeconfig = kubeconfig;
|
|
module.exports.apply = apply;
|
|
module.exports.getpod = getpod;
|
|
module.exports.getsvc = getsvc; |