console/deployment/utils/pod-builder.ts
Laurin Quast 316715783b
chore: wake up clickhouse before publishing app deployment (#6088)
Co-authored-by: Dotan Simha <dotansimha@gmail.com>
2024-12-09 10:24:31 +02:00

42 lines
1.1 KiB
TypeScript

import * as k8s from '@pulumi/kubernetes';
import * as kx from '@pulumi/kubernetesx';
import * as pulumi from '@pulumi/pulumi';
export function normalizeEnv(env: kx.types.Container['env']): any[] {
if (env == null) {
return [];
}
if (Array.isArray(env)) {
return env;
}
return Object.keys(env).map(name => ({
name,
value: (env as kx.types.EnvMap)[name],
}));
}
export class PodBuilder extends kx.PodBuilder {
public asExtendedDeploymentSpec(
args?: kx.types.PodBuilderDeploymentSpec,
metadata?: k8s.types.input.meta.v1.ObjectMeta,
): pulumi.Output<k8s.types.input.apps.v1.DeploymentSpec> {
const podName = this.podSpec.containers.apply((containers: any) => {
return pulumi.output(containers[0].name);
});
const appLabels = { app: podName };
const _args = args || {};
const deploymentSpec: k8s.types.input.apps.v1.DeploymentSpec = {
..._args,
selector: { matchLabels: appLabels },
replicas: _args.replicas ?? 1,
template: {
metadata: { labels: appLabels, ...metadata },
spec: this.podSpec,
},
};
return pulumi.output(deploymentSpec);
}
}