kubricate
Version:
A TypeScript framework for building reusable, type-safe Kubernetes infrastructure — without the YAML mess.
45 lines (43 loc) • 1.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.KubectlExecutor = void 0;
var _nodeCrypto = /*#__PURE__*/_interopRequireDefault(/*#__PURE__*/require("node:crypto"));
var _promises = /*#__PURE__*/require("node:fs/promises");
var _nodeOs = /*#__PURE__*/require("node:os");
var _nodePath = /*#__PURE__*/_interopRequireDefault(/*#__PURE__*/require("node:path"));
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
};
}
// kubectl-executor.ts
class KubectlExecutor {
kubectlPath;
logger;
execa;
constructor(kubectlPath, logger, execa) {
this.kubectlPath = kubectlPath;
this.logger = logger;
this.execa = execa;
}
async apply(resource) {
const tempPath = this.createTempFilePath();
await (0, _promises.writeFile)(tempPath, JSON.stringify(resource), 'utf8');
this.logger.info(`Applying secret resource with kubectl: ${tempPath}`);
try {
await this.execa.run(this.kubectlPath, ['apply', '-f', tempPath]);
this.logger.log('✅ Applied secret via kubectl');
} catch (err) {
this.logger.error(`❌ kubectl apply failed: ${err.message}`);
throw err;
}
}
createTempFilePath() {
const id = _nodeCrypto.default.randomUUID();
return _nodePath.default.join((0, _nodeOs.tmpdir)(), `kubricate-secret-${id}.json`);
}
}
exports.KubectlExecutor = KubectlExecutor;
//# sourceMappingURL=kubectl-executor.js.map