console/deployment/utils/pod-builder.ts

37 lines
1.1 KiB
TypeScript
Raw Normal View History

2022-05-18 07:26:57 +00:00
import * as kx from '@pulumi/kubernetesx';
import * as k8s from '@pulumi/kubernetes';
import * as pulumi from '@pulumi/pulumi';
export function normalizeEnv(env: kx.types.Container['env']): any[] {
return Array.isArray(env)
? env
: Object.keys(env as kx.types.EnvMap).map(name => ({
2022-05-18 07:26:57 +00:00
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,
2022-05-18 07:26:57 +00:00
): 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);
}
}