This repository has been archived on 2025-12-25. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
qmi-cloud/server/workers/docker/kubectl.js
Manuel Romero decd6d85db kubectl
2019-12-12 21:57:04 +01:00

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;