UNPKG

cdk8s-redis

Version:

Basic implementation of a Redis construct for cdk8s.

68 lines 9.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ServiceDeployment = exports.ServiceType = void 0; const constructs_1 = require("constructs"); const k8s = require("./imports/k8s"); var ServiceType; (function (ServiceType) { ServiceType["EXTERNAL_NAME"] = "ExternalName"; ServiceType["CLUSTER_IP"] = "ClusterIP"; ServiceType["NODE_PORT"] = "NodePort"; ServiceType["LOAD_BALANCER"] = "LoadBalancer"; })(ServiceType || (exports.ServiceType = ServiceType = {})); class ServiceDeployment extends constructs_1.Construct { constructor(scope, id, options) { super(scope, id); const replicas = options.replicas ?? 1; const resources = options.resources ?? { requests: { cpu: '100m', memory: '100Mi' } }; const externalPort = options.externalPort ?? 80; const containerPort = options.containerPort ?? 8080; const containerName = options.containerName ?? 'app'; const serviceType = options.serviceType ?? ServiceType.CLUSTER_IP; const label = { ...options.labels, app: this.node.addr, }; const service = new k8s.Service(this, 'service', { metadata: { labels: label }, spec: { type: serviceType, ports: [{ port: externalPort, targetPort: containerPort }], selector: label, }, }); new k8s.Deployment(this, 'deployment', { spec: { selector: { matchLabels: label }, replicas: replicas, template: { metadata: { labels: label }, spec: { containers: [ { name: containerName, image: options.image, ports: [{ containerPort }], resources: resources, env: renderEnv(options.env), }, ], }, }, }, }); this.host = service.name; } } exports.ServiceDeployment = ServiceDeployment; function renderEnv(env = {}) { const result = new Array(); for (const [key, value] of Object.entries(env)) { result.push({ name: key, value: value, }); } return result; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1kZXBsb3ltZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZpY2UtZGVwbG95bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMscUNBQXFDO0FBcURyQyxJQUFZLFdBS1g7QUFMRCxXQUFZLFdBQVc7SUFDckIsNkNBQThCLENBQUE7SUFDOUIsdUNBQXdCLENBQUE7SUFDeEIscUNBQXNCLENBQUE7SUFDdEIsNkNBQThCLENBQUE7QUFDaEMsQ0FBQyxFQUxXLFdBQVcsMkJBQVgsV0FBVyxRQUt0QjtBQUVELE1BQWEsaUJBQWtCLFNBQVEsc0JBQVM7SUFJOUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxPQUFpQztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ3RGLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO1FBQ2hELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDO1FBQ3BELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDO1FBQ3JELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQztRQUVsRSxNQUFNLEtBQUssR0FBRztZQUNaLEdBQUcsT0FBTyxDQUFDLE1BQU07WUFDakIsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtTQUNwQixDQUFDO1FBRUYsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDL0MsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUMzQixJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLENBQUM7Z0JBQzFELFFBQVEsRUFBRSxLQUFLO2FBQ2hCO1NBQ0YsQ0FBQyxDQUFDO1FBR0gsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7WUFDckMsSUFBSSxFQUFFO2dCQUNKLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7Z0JBQ2hDLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixRQUFRLEVBQUU7b0JBQ1IsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtvQkFDM0IsSUFBSSxFQUFFO3dCQUNKLFVBQVUsRUFBRTs0QkFDVjtnQ0FDRSxJQUFJLEVBQUUsYUFBYTtnQ0FDbkIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO2dDQUNwQixLQUFLLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDO2dDQUMxQixTQUFTLEVBQUUsU0FBUztnQ0FDcEIsR0FBRyxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDOzZCQUM1Qjt5QkFDRjtxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQXBERCw4Q0FvREM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxNQUFpQyxFQUFHO0lBQ3JELE1BQU0sTUFBTSxHQUFHLElBQUksS0FBSyxFQUFjLENBQUM7SUFDdkMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ1YsSUFBSSxFQUFFLEdBQUc7WUFDVCxLQUFLLEVBQUUsS0FBSztTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBrOHMgZnJvbSAnLi9pbXBvcnRzL2s4cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZURlcGxveW1lbnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHJlYWRvbmx5IHJlcGxpY2FzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDb250YWluZXIgaW1hZ2UuXG4gICAqL1xuICByZWFkb25seSBpbWFnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGxhYmVscyB0byBhcHBseSB0byByZXNvdXJjZXMuXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbGFiZWxzPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFBvZCByZXNvdXJjZSByZXF1aXJlbWVudHNcbiAgICogQGRlZmF1bHQgLSBjcHU6ICcxMDBtJywgbWVtb3J5OiAnMTAwTWknXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZXM/OiBrOHMuUmVzb3VyY2VSZXF1aXJlbWVudHM7XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0IDgwXG4gICAqL1xuICByZWFkb25seSBleHRlcm5hbFBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0IDgwODBcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lclBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHZhcmlhYmxlcyB0byBwYXNzIHRvIHRoZSBwb2RcbiAgICovXG4gIHJlYWRvbmx5IGVudj86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY29udGFpbmVyXG4gICAqIEBkZWZhdWx0ICdhcHAnXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBzZXJ2aWNlIHJlc291cmNlLlxuICAgKiBAZGVmYXVsdCBTZXJ2aWNlVHlwZS5DTFVTVEVSX0lQXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlVHlwZT86IFNlcnZpY2VUeXBlO1xufVxuXG5leHBvcnQgZW51bSBTZXJ2aWNlVHlwZSB7XG4gIEVYVEVSTkFMX05BTUUgPSAnRXh0ZXJuYWxOYW1lJyxcbiAgQ0xVU1RFUl9JUCA9ICdDbHVzdGVySVAnLFxuICBOT0RFX1BPUlQgPSAnTm9kZVBvcnQnLFxuICBMT0FEX0JBTEFOQ0VSID0gJ0xvYWRCYWxhbmNlcidcbn1cblxuZXhwb3J0IGNsYXNzIFNlcnZpY2VEZXBsb3ltZW50IGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICBwdWJsaWMgcmVhZG9ubHkgaG9zdDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IFNlcnZpY2VEZXBsb3ltZW50T3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCByZXBsaWNhcyA9IG9wdGlvbnMucmVwbGljYXMgPz8gMTtcbiAgICBjb25zdCByZXNvdXJjZXMgPSBvcHRpb25zLnJlc291cmNlcyA/PyB7IHJlcXVlc3RzOiB7IGNwdTogJzEwMG0nLCBtZW1vcnk6ICcxMDBNaScgfSB9O1xuICAgIGNvbnN0IGV4dGVybmFsUG9ydCA9IG9wdGlvbnMuZXh0ZXJuYWxQb3J0ID8/IDgwO1xuICAgIGNvbnN0IGNvbnRhaW5lclBvcnQgPSBvcHRpb25zLmNvbnRhaW5lclBvcnQgPz8gODA4MDtcbiAgICBjb25zdCBjb250YWluZXJOYW1lID0gb3B0aW9ucy5jb250YWluZXJOYW1lID8/ICdhcHAnO1xuICAgIGNvbnN0IHNlcnZpY2VUeXBlID0gb3B0aW9ucy5zZXJ2aWNlVHlwZSA/PyBTZXJ2aWNlVHlwZS5DTFVTVEVSX0lQO1xuXG4gICAgY29uc3QgbGFiZWwgPSB7XG4gICAgICAuLi5vcHRpb25zLmxhYmVscyxcbiAgICAgIGFwcDogdGhpcy5ub2RlLmFkZHIsXG4gICAgfTtcblxuICAgIGNvbnN0IHNlcnZpY2UgPSBuZXcgazhzLlNlcnZpY2UodGhpcywgJ3NlcnZpY2UnLCB7XG4gICAgICBtZXRhZGF0YTogeyBsYWJlbHM6IGxhYmVsIH0sXG4gICAgICBzcGVjOiB7XG4gICAgICAgIHR5cGU6IHNlcnZpY2VUeXBlLFxuICAgICAgICBwb3J0czogW3sgcG9ydDogZXh0ZXJuYWxQb3J0LCB0YXJnZXRQb3J0OiBjb250YWluZXJQb3J0IH1dLFxuICAgICAgICBzZWxlY3RvcjogbGFiZWwsXG4gICAgICB9LFxuICAgIH0pO1xuXG5cbiAgICBuZXcgazhzLkRlcGxveW1lbnQodGhpcywgJ2RlcGxveW1lbnQnLCB7XG4gICAgICBzcGVjOiB7XG4gICAgICAgIHNlbGVjdG9yOiB7IG1hdGNoTGFiZWxzOiBsYWJlbCB9LFxuICAgICAgICByZXBsaWNhczogcmVwbGljYXMsXG4gICAgICAgIHRlbXBsYXRlOiB7XG4gICAgICAgICAgbWV0YWRhdGE6IHsgbGFiZWxzOiBsYWJlbCB9LFxuICAgICAgICAgIHNwZWM6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IGNvbnRhaW5lck5hbWUsXG4gICAgICAgICAgICAgICAgaW1hZ2U6IG9wdGlvbnMuaW1hZ2UsXG4gICAgICAgICAgICAgICAgcG9ydHM6IFt7IGNvbnRhaW5lclBvcnQgfV0sXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzOiByZXNvdXJjZXMsXG4gICAgICAgICAgICAgICAgZW52OiByZW5kZXJFbnYob3B0aW9ucy5lbnYpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuaG9zdCA9IHNlcnZpY2UubmFtZTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW5kZXJFbnYoZW52OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0geyB9KTogazhzLkVudlZhcltdIHtcbiAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5PGs4cy5FbnZWYXI+KCk7XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGVudikpIHtcbiAgICByZXN1bHQucHVzaCh7XG4gICAgICBuYW1lOiBrZXksXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn0iXX0=