@highstate/k8s 0.9.31 → 0.9.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-4YC2SLCU.js → chunk-2F2IID7N.js} +8 -3
- package/dist/chunk-2F2IID7N.js.map +1 -0
- package/dist/{chunk-64LNVTHJ.js → chunk-2ZAEILVT.js} +5 -5
- package/dist/{chunk-64LNVTHJ.js.map → chunk-2ZAEILVT.js.map} +1 -1
- package/dist/{chunk-2FKGGWPJ.js → chunk-3DFFUGSJ.js} +6 -3
- package/dist/chunk-3DFFUGSJ.js.map +1 -0
- package/dist/{chunk-HOARC4LU.js → chunk-IDKGFFZ7.js} +43 -25
- package/dist/chunk-IDKGFFZ7.js.map +1 -0
- package/dist/{chunk-XYJNM2EN.js → chunk-OEOMZP2C.js} +114 -12
- package/dist/chunk-OEOMZP2C.js.map +1 -0
- package/dist/{chunk-ARG3I734.js → chunk-XU6ZPTWO.js} +6 -3
- package/dist/chunk-XU6ZPTWO.js.map +1 -0
- package/dist/deployment-D3ZXIZRN.js +8 -0
- package/dist/{deployment-PKZ4IQMG.js.map → deployment-D3ZXIZRN.js.map} +1 -1
- package/dist/highstate.manifest.json +2 -2
- package/dist/impl/gateway-route.js +295 -73
- package/dist/impl/gateway-route.js.map +1 -1
- package/dist/impl/tls-certificate.js +2 -2
- package/dist/impl/tls-certificate.js.map +1 -1
- package/dist/index.js +13 -6
- package/dist/index.js.map +1 -1
- package/dist/stateful-set-AXF4QRFI.js +8 -0
- package/dist/{stateful-set-OMPM2F7W.js.map → stateful-set-AXF4QRFI.js.map} +1 -1
- package/dist/units/cert-manager/index.js +4 -4
- package/dist/units/gateway-api/index.js +1 -1
- package/dist/units/gateway-api/index.js.map +1 -1
- package/dist/units/reduced-access-cluster/index.js +3 -3
- package/package.json +10 -10
- package/src/container.ts +8 -0
- package/src/cron-job.ts +4 -0
- package/src/deployment.ts +4 -0
- package/src/gateway/gateway.ts +22 -5
- package/src/gateway/http-route.ts +6 -1
- package/src/gateway/index.ts +2 -0
- package/src/gateway/tcp-route.ts +87 -0
- package/src/gateway/udp-route.ts +87 -0
- package/src/impl/gateway-route.ts +418 -85
- package/src/impl/tls-certificate.ts +1 -1
- package/src/index.ts +1 -0
- package/src/job.ts +4 -0
- package/src/stateful-set.ts +4 -0
- package/src/tls.ts +9 -1
- package/src/units/gateway-api/index.ts +1 -1
- package/src/workload.ts +61 -23
- package/dist/chunk-2FKGGWPJ.js.map +0 -1
- package/dist/chunk-4YC2SLCU.js.map +0 -1
- package/dist/chunk-ARG3I734.js.map +0 -1
- package/dist/chunk-HOARC4LU.js.map +0 -1
- package/dist/chunk-XYJNM2EN.js.map +0 -1
- package/dist/deployment-PKZ4IQMG.js +0 -8
- package/dist/stateful-set-OMPM2F7W.js +0 -8
@@ -14,6 +14,7 @@ var Certificate = class _Certificate extends ComponentResource {
|
|
14
14
|
this.spec = spec;
|
15
15
|
this.status = status;
|
16
16
|
}
|
17
|
+
_secret;
|
17
18
|
/**
|
18
19
|
* The cluster where the certificate is located.
|
19
20
|
*/
|
@@ -35,7 +36,10 @@ var Certificate = class _Certificate extends ComponentResource {
|
|
35
36
|
* The secret containing the certificate data.
|
36
37
|
*/
|
37
38
|
get secret() {
|
38
|
-
|
39
|
+
if (this._secret) {
|
40
|
+
return this._secret;
|
41
|
+
}
|
42
|
+
this._secret = output({
|
39
43
|
secretName: this.spec.apply((spec) => spec.secretName),
|
40
44
|
namespace: this.namespace
|
41
45
|
}).apply(({ secretName, namespace }) => {
|
@@ -44,6 +48,7 @@ var Certificate = class _Certificate extends ComponentResource {
|
|
44
48
|
namespace
|
45
49
|
});
|
46
50
|
});
|
51
|
+
return this._secret;
|
47
52
|
}
|
48
53
|
/**
|
49
54
|
* Creates a new certificate.
|
@@ -232,5 +237,5 @@ var ExternalCertificate = class extends Certificate {
|
|
232
237
|
};
|
233
238
|
|
234
239
|
export { Certificate };
|
235
|
-
//# sourceMappingURL=chunk-
|
236
|
-
//# sourceMappingURL=chunk-
|
240
|
+
//# sourceMappingURL=chunk-2F2IID7N.js.map
|
241
|
+
//# sourceMappingURL=chunk-2F2IID7N.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/tls.ts"],"names":[],"mappings":"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","file":"chunk-2F2IID7N.js","sourcesContent":["import type { k8s } from \"@highstate/library\"\nimport type { types } from \"@pulumi/kubernetes\"\nimport { cert_manager, type types as cmTypes } from \"@highstate/cert-manager\"\nimport { getOrCreate } from \"@highstate/contract\"\nimport {\n ComponentResource,\n type ComponentResourceOptions,\n type Input,\n type Inputs,\n interpolate,\n type Output,\n output,\n toPromise,\n} from \"@highstate/pulumi\"\nimport { omit } from \"remeda\"\nimport { Namespace } from \"./namespace\"\nimport { Secret } from \"./secret\"\nimport { commonExtraArgs, getProvider, mapMetadata, type ScopedResourceArgs } from \"./shared\"\n\nexport type CertificateArgs = ScopedResourceArgs & cmTypes.input.cert_manager.v1.CertificateSpec\n\nexport type CreateOrGetCertificateArgs = CertificateArgs & {\n /**\n * The certificate entity to patch/retrieve.\n */\n existing: Input<k8s.Certificate> | undefined\n}\n\n/**\n * Represents a cert-manager Certificate resource with metadata and secret.\n */\nexport abstract class Certificate extends ComponentResource {\n private _secret?: Output<Secret>\n\n protected constructor(\n type: string,\n private readonly name: string,\n args: Inputs,\n opts: ComponentResourceOptions | undefined,\n\n /**\n * The namespace where the certificate is located.\n */\n readonly namespace: Output<Namespace>,\n\n /**\n * The metadata of the underlying cert-manager certificate.\n */\n readonly metadata: Output<types.output.meta.v1.ObjectMeta>,\n\n /**\n * The spec of the underlying cert-manager certificate.\n */\n readonly spec: Output<cmTypes.output.cert_manager.v1.CertificateSpec>,\n\n /**\n * The status of the underlying cert-manager certificate.\n */\n readonly status: Output<cmTypes.output.cert_manager.v1.CertificateStatus>,\n ) {\n super(type, name, args, opts)\n }\n\n /**\n * The cluster where the certificate is located.\n */\n get cluster(): Output<k8s.Cluster> {\n return this.namespace.cluster\n }\n\n /**\n * The Highstate certificate entity.\n */\n get entity(): Output<k8s.ScopedResource> {\n return output({\n type: \"certificate\",\n clusterId: this.cluster.id,\n clusterName: this.cluster.name,\n metadata: this.metadata,\n })\n }\n\n /**\n * The secret containing the certificate data.\n */\n get secret(): Output<Secret> {\n if (this._secret) {\n return this._secret\n }\n\n this._secret = output({\n secretName: this.spec.apply(spec => spec.secretName),\n namespace: this.namespace,\n }).apply(({ secretName, namespace }) => {\n return Secret.get(`${this.name}.secret`, {\n name: secretName,\n namespace,\n })\n })\n\n return this._secret\n }\n\n /**\n * Creates a new certificate.\n */\n static create(name: string, args: CertificateArgs, opts?: ComponentResourceOptions): Certificate {\n return new CreatedCertificate(name, args, opts)\n }\n\n /**\n * Creates a new certificate or patches an existing one.\n *\n * @param name The name of the resource. May not be the same as the certificate name.\n * @param args The arguments to create or patch the certificate with.\n * @param opts Optional resource options.\n */\n static createOrPatch(\n name: string,\n args: CreateOrGetCertificateArgs,\n opts?: ComponentResourceOptions,\n ): Certificate {\n if (args.existing) {\n return new CertificatePatch(name, {\n ...args,\n name: output(args.existing).metadata.name,\n namespace: Namespace.forResourceAsync(args.existing, output(args.namespace).cluster),\n })\n }\n\n return new CreatedCertificate(name, args, opts)\n }\n\n /**\n * Creates a new certificate or gets an existing one.\n *\n * @param name The name of the resource. May not be the same as the certificate name. Will not be used when existing certificate is retrieved.\n * @param args The arguments to create or get the certificate with.\n * @param opts Optional resource options.\n */\n static async createOrGet(\n name: string,\n args: CreateOrGetCertificateArgs,\n opts?: ComponentResourceOptions,\n ): Promise<Certificate> {\n if (args.existing) {\n return await Certificate.forAsync(args.existing, output(args.namespace).cluster)\n }\n\n return new CreatedCertificate(name, args, opts)\n }\n\n /**\n * Patches an existing certificate.\n *\n * Will throw an error if the certificate does not exist.\n *\n * @param name The name of the resource. May not be the same as the certificate name.\n * @param args The arguments to patch the certificate with.\n * @param opts Optional resource options.\n */\n static patch(name: string, args: CertificateArgs, opts?: ComponentResourceOptions): Certificate {\n return new CertificatePatch(name, args, opts)\n }\n\n /**\n * Wraps an existing cert-manager certificate.\n */\n static wrap(\n name: string,\n args: WrappedCertificateArgs,\n opts?: ComponentResourceOptions,\n ): Certificate {\n return new WrappedCertificate(name, args, opts)\n }\n\n /**\n * Gets an existing certificate.\n *\n * Will throw an error if the certificate does not exist.\n */\n static get(\n name: string,\n args: ExternalCertificateArgs,\n opts?: ComponentResourceOptions,\n ): Certificate {\n return new ExternalCertificate(name, args, opts)\n }\n\n private static readonly certificateCache = new Map<string, Certificate>()\n\n /**\n * Gets an existing certificate for a given entity.\n * Prefer this method over `get` when possible.\n *\n * It automatically names the resource with the following format: `{clusterName}.{namespace}.{name}.{clusterId}`.\n *\n * This method is idempotent and will return the same instance for the same entity.\n *\n * @param entity The entity to get the certificate for.\n * @param cluster The cluster where the certificate is located.\n */\n static for(entity: k8s.Certificate, cluster: Input<k8s.Cluster>): Certificate {\n return getOrCreate(\n Certificate.certificateCache,\n `${entity.clusterName}.${entity.metadata.namespace}.${entity.metadata.name}.${entity.clusterId}`,\n name => {\n return Certificate.get(name, {\n name: entity.metadata.name,\n namespace: Namespace.forResourceAsync(entity, cluster),\n })\n },\n )\n }\n\n /**\n * Gets an existing certificate for a given entity.\n * Prefer this method over `get` when possible.\n *\n * It automatically names the resource with the following format: `{clusterName}.{namespace}.{name}.{clusterId}`.\n *\n * This method is idempotent and will return the same instance for the same entity.\n *\n * @param entity The entity to get the certificate for.\n * @param cluster The cluster where the certificate is located.\n */\n static async forAsync(\n entity: Input<k8s.Certificate>,\n cluster: Input<k8s.Cluster>,\n ): Promise<Certificate> {\n const resolvedEntity = await toPromise(entity)\n return Certificate.for(resolvedEntity, output(cluster))\n }\n}\n\nclass CreatedCertificate extends Certificate {\n constructor(name: string, args: CertificateArgs, opts?: ComponentResourceOptions) {\n const certificate = output(args.namespace).cluster.apply(cluster => {\n return new cert_manager.v1.Certificate(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: omit(args, commonExtraArgs),\n },\n { ...opts, parent: this, provider: getProvider(cluster) },\n )\n })\n\n super(\n \"highstate:k8s:Certificate\",\n name,\n args,\n opts,\n\n output(args.namespace),\n certificate.metadata as Output<types.output.meta.v1.ObjectMeta>,\n certificate.spec,\n certificate.status,\n )\n }\n}\n\nclass CertificatePatch extends Certificate {\n constructor(name: string, args: CertificateArgs, opts?: ComponentResourceOptions) {\n const certificate = output(args.namespace).cluster.apply(cluster => {\n return new cert_manager.v1.CertificatePatch(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: omit(args, commonExtraArgs),\n },\n { ...opts, parent: this, provider: getProvider(cluster) },\n )\n })\n\n super(\n \"highstate:k8s:CertificatePatch\",\n name,\n args,\n opts,\n\n output(args.namespace),\n certificate.metadata as Output<types.output.meta.v1.ObjectMeta>,\n certificate.spec,\n certificate.status,\n )\n }\n}\n\nexport type WrappedCertificateArgs = {\n /**\n * The underlying cert-manager certificate to wrap.\n */\n certificate: Input<cert_manager.v1.Certificate>\n\n /**\n * The namespace where the certificate is located.\n */\n namespace: Input<Namespace>\n}\n\nclass WrappedCertificate extends Certificate {\n constructor(name: string, args: WrappedCertificateArgs, opts?: ComponentResourceOptions) {\n super(\n \"highstate:k8s:WrappedCertificate\",\n name,\n args,\n opts,\n\n output(args.namespace),\n output(args.certificate).metadata as Output<types.output.meta.v1.ObjectMeta>,\n output(args.certificate).spec,\n output(args.certificate).status,\n )\n }\n}\n\nexport type ExternalCertificateArgs = {\n /**\n * The name of the certificate to get.\n */\n name: Input<string>\n\n /**\n * The namespace of the certificate to get.\n */\n namespace: Input<Namespace>\n}\n\nclass ExternalCertificate extends Certificate {\n constructor(name: string, args: ExternalCertificateArgs, opts?: ComponentResourceOptions) {\n const certificate = output(args.namespace).cluster.apply(cluster => {\n return cert_manager.v1.Certificate.get(\n name,\n interpolate`${output(args.namespace).metadata.name}/${args.name}`,\n { ...opts, parent: this, provider: getProvider(cluster) },\n )\n })\n\n super(\n \"highstate:k8s:ExternalCertificate\",\n name,\n args,\n opts,\n\n output(args.namespace),\n certificate.metadata as Output<types.output.meta.v1.ObjectMeta>,\n certificate.spec,\n certificate.status,\n )\n }\n}\n"]}
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import { Deployment } from './chunk-
|
2
|
-
import { StatefulSet } from './chunk-
|
3
|
-
import { NetworkPolicy } from './chunk-
|
1
|
+
import { Deployment } from './chunk-3DFFUGSJ.js';
|
2
|
+
import { StatefulSet } from './chunk-XU6ZPTWO.js';
|
3
|
+
import { NetworkPolicy } from './chunk-IDKGFFZ7.js';
|
4
4
|
import { getServiceType, Service } from './chunk-SI7X6N46.js';
|
5
5
|
import { getNamespaceName, getProvider } from './chunk-WGMJCZSK.js';
|
6
6
|
import { mkdir, unlink, readFile } from 'node:fs/promises';
|
@@ -260,5 +260,5 @@ function getChartService(chart, name) {
|
|
260
260
|
}
|
261
261
|
|
262
262
|
export { Chart, RenderedChart, getChartService, getChartServiceOutput, resolveHelmChart };
|
263
|
-
//# sourceMappingURL=chunk-
|
264
|
-
//# sourceMappingURL=chunk-
|
263
|
+
//# sourceMappingURL=chunk-2ZAEILVT.js.map
|
264
|
+
//# sourceMappingURL=chunk-2ZAEILVT.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/helm.ts"],"names":["namespace","args","name","services"],"mappings":"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","file":"chunk-64LNVTHJ.js","sourcesContent":["import type { UnitTerminal } from \"@highstate/contract\"\nimport type { Namespace } from \"./namespace\"\nimport type { Workload, WorkloadTerminalArgs } from \"./workload\"\nimport { mkdir, readFile, unlink } from \"node:fs/promises\"\nimport { resolve } from \"node:path\"\nimport { AccessPointRoute, type AccessPointRouteArgs } from \"@highstate/common\"\nimport {\n type InputArray,\n type InputRecord,\n normalize,\n normalizeInputs,\n toPromise,\n} from \"@highstate/pulumi\"\nimport { local } from \"@pulumi/command\"\nimport { apps, core, helm, type types } from \"@pulumi/kubernetes\"\nimport {\n ComponentResource,\n type ComponentResourceOptions,\n type Input,\n type Output,\n output,\n} from \"@pulumi/pulumi\"\nimport { sha256 } from \"crypto-hash\"\nimport { glob } from \"glob\"\nimport spawn from \"nano-spawn\"\nimport { isNonNullish, omit } from \"remeda\"\nimport { Deployment } from \"./deployment\"\nimport { NetworkPolicy, type NetworkPolicyArgs } from \"./network-policy\"\nimport { getServiceType, Service, type ServiceArgs } from \"./service\"\nimport { getNamespaceName, getProvider, type NamespaceLike } from \"./shared\"\nimport { StatefulSet } from \"./stateful-set\"\n\nexport type ChartArgs = Omit<\n helm.v4.ChartArgs,\n \"chart\" | \"version\" | \"repositoryOpts\" | \"namespace\"\n> & {\n /**\n * The namespace to deploy the chart into.\n */\n namespace: Input<Namespace>\n\n /**\n * The custom name of the primary service exposed by the chart.\n *\n * By default, it is the same as the chart name.\n */\n serviceName?: string\n\n /**\n * The extra args to pass to the main service of the chart.\n *\n * Will be patched via transformations.\n */\n service?: Partial<ServiceArgs>\n\n /**\n * The manifest of the chart to resolve.\n */\n chart: ChartManifest\n\n /**\n * The args for the terminal to use.\n *\n * Will be applied to all workloads created by the chart.\n */\n terminal?: Input<WorkloadTerminalArgs>\n\n /**\n * The configuration for the access point route to create.\n */\n route?: Input<Omit<AccessPointRouteArgs, \"endpoints\" | \"customData\">>\n\n /**\n * The configuration for the access point routes to create.\n */\n routes?: InputArray<Omit<AccessPointRouteArgs, \"endpoints\" | \"customData\">>\n\n /**\n * The network policy to apply to the chart.\n */\n networkPolicy?: Input<Omit<NetworkPolicyArgs, \"selector\" | \"cluster\" | \"namespace\">>\n\n /**\n * The network policies to apply to the chart.\n */\n networkPolicies?: Input<NetworkPolicyArgs[]>\n}\n\nexport class Chart extends ComponentResource {\n /**\n * The underlying Helm chart.\n */\n public readonly chart: Output<helm.v4.Chart>\n\n /**\n * The access point routes created for the chart.\n */\n public readonly routes: Output<AccessPointRoute[]>\n\n /**\n * The network policies applied to the chart.\n */\n public readonly networkPolicies: Output<NetworkPolicy[]>\n\n /**\n * All workloads created by the chart.\n */\n public readonly workloads: Output<Workload[]>\n\n constructor(\n private readonly name: string,\n private readonly args: ChartArgs,\n private readonly opts?: ComponentResourceOptions,\n ) {\n super(\"highstate:k8s:Chart\", name, args, opts)\n\n const namespace = output(args.namespace).apply(namespace =>\n output(namespace ? getNamespaceName(namespace) : \"default\"),\n )\n\n this.chart = output(args.namespace).cluster.apply(cluster => {\n return new helm.v4.Chart(\n name,\n omit(\n {\n ...args,\n chart: resolveHelmChart(args.chart),\n namespace,\n },\n [\"route\", \"routes\"],\n ),\n {\n ...opts,\n parent: this,\n provider: getProvider(cluster),\n\n transforms: [\n ...(opts?.transforms ?? []),\n\n async resourceArgs => {\n const namespace = await toPromise(output(args.namespace).metadata.name)\n\n const serviceName = args.serviceName ?? name\n const expectedName = `${name}:${namespace}/${serviceName}`\n\n if (\n resourceArgs.type === \"kubernetes:core/v1:Service\" &&\n resourceArgs.name === expectedName\n ) {\n const spec = resourceArgs.props.spec as types.input.core.v1.ServiceSpec\n\n return {\n props: {\n ...resourceArgs.props,\n spec: {\n ...spec,\n ...(args.service ?? {}),\n\n type: getServiceType(args.service, cluster),\n\n externalIPs:\n args.service?.externalIPs ?? cluster.externalIps ?? spec.externalIPs,\n },\n },\n opts: resourceArgs.opts,\n }\n }\n\n return undefined\n },\n ],\n },\n )\n })\n\n this.routes = output(normalizeInputs(args.route, args.routes)).apply(async routes => {\n if (routes.length === 0) {\n return []\n }\n\n return await Promise.all(\n routes.map(async route => {\n return new AccessPointRoute(\n name,\n {\n ...route,\n\n endpoints: this.service.endpoints,\n\n // pass the native data to the route to allow implementation to use it\n gatewayNativeData: await toPromise(this.service),\n tlsCertificateNativeData: await toPromise(args.namespace),\n },\n { ...opts, parent: this },\n )\n }),\n )\n })\n\n this.networkPolicies = output(args).apply(args => {\n const policies = normalize(args.networkPolicy, args.networkPolicies)\n\n return output(\n policies.map(policy => {\n return new NetworkPolicy(\n name,\n {\n ...policy,\n namespace: args.namespace,\n description: `Network policy for Helm chart \"${name}\"`,\n },\n { ...opts, parent: this },\n )\n }),\n )\n })\n\n this.workloads = output(this.chart).apply(chart => {\n return output(\n chart.resources.apply(resources => {\n return resources\n .map(resource => {\n if (apps.v1.Deployment.isInstance(resource)) {\n return resource.metadata.name.apply(name => {\n return Deployment.wrap(\n name,\n { namespace: args.namespace, deployment: resource, terminal: args.terminal },\n this.opts,\n )\n })\n }\n\n if (apps.v1.StatefulSet.isInstance(resource)) {\n return resource.metadata.name.apply(name => {\n return StatefulSet.wrap(\n name,\n {\n namespace: args.namespace,\n statefulSet: resource,\n service: this.getServiceOutput(name),\n terminal: args.terminal,\n },\n this.opts,\n )\n })\n }\n\n return undefined\n })\n .filter(isNonNullish)\n }),\n )\n })\n }\n\n get service(): Output<Service> {\n return this.getServiceOutput(undefined)\n }\n\n get terminals(): Output<UnitTerminal[]> {\n return this.workloads.apply(workloads => output(workloads.map(workload => workload.terminal)))\n }\n\n private readonly services = new Map<string, Service>()\n\n getServiceOutput(name: string | undefined): Output<Service> {\n return output({ args: this.args, chart: this.chart }).apply(({ args, chart }) => {\n const resolvedName = name ?? args.serviceName ?? this.name\n const existingService = this.services.get(resolvedName)\n\n if (existingService) {\n return existingService\n }\n\n const service = getChartServiceOutput(chart, resolvedName)\n\n const wrappedService = Service.wrap(\n resolvedName,\n { namespace: args.namespace, service },\n { ...this.opts, parent: this },\n )\n\n this.services.set(resolvedName, wrappedService)\n return wrappedService\n })\n }\n\n getService(name?: string): Promise<Service> {\n return toPromise(this.getServiceOutput(name))\n }\n}\n\nexport type RenderedChartArgs = {\n /**\n * The namespace to deploy the chart into.\n */\n namespace?: Input<NamespaceLike>\n\n /**\n * The manifest of the chart to resolve.\n */\n chart: ChartManifest\n\n /**\n * The values to pass to the chart.\n */\n values?: InputRecord<string>\n}\n\nexport class RenderedChart extends ComponentResource {\n /**\n * The rendered manifest of the Helm chart.\n */\n public readonly manifest: Output<string>\n\n /**\n * The underlying command used to render the chart.\n */\n public readonly command: Output<local.Command>\n\n constructor(name: string, args: RenderedChartArgs, opts?: ComponentResourceOptions) {\n super(\"highstate:k8s:RenderedChart\", name, args, opts)\n\n this.command = output(args).apply(args => {\n const values = args.values\n ? Object.entries(args.values).flatMap(([key, value]) => [\"--set\", `${key}=\"${value}\"`])\n : []\n\n return new local.Command(\n name,\n {\n create: output([\n \"helm\",\n \"template\",\n resolveHelmChart(args.chart),\n\n ...(args.namespace ? [\"--namespace\", getNamespaceName(args.namespace)] : []),\n\n ...values,\n ]).apply(command => command.join(\" \")),\n\n logging: \"stderr\",\n },\n { parent: this, ...opts },\n )\n })\n\n this.manifest = this.command.stdout\n\n this.registerOutputs({ manifest: this.manifest, command: this.command })\n }\n}\n\nexport type ChartManifest = {\n repo: string\n name: string\n version: string\n sha256: string\n}\n\n/**\n * Downloads or reuses the Helm chart according to the charts.json file.\n * Returns the full path to the chart's .tgz file.\n *\n * @param manifest The manifest of the Helm chart.\n */\nexport async function resolveHelmChart(manifest: ChartManifest): Promise<string> {\n if (!process.env.HIGHSTATE_CACHE_DIR) {\n throw new Error(\"Environment variable HIGHSTATE_CACHE_DIR is not set\")\n }\n\n const chartsDir = resolve(process.env.HIGHSTATE_CACHE_DIR, \"charts\")\n await mkdir(chartsDir, { recursive: true })\n\n const globPattern = `${manifest.name}-*.tgz`\n const targetFileName = `${manifest.name}-${manifest.version}.tgz`\n\n // find all matching files\n const files = await glob(globPattern, { cwd: chartsDir })\n\n if (files.includes(targetFileName)) {\n return resolve(chartsDir, targetFileName)\n }\n\n // delete old versions\n for (const file of files) {\n await unlink(resolve(chartsDir, file))\n }\n\n // download the chart\n await spawn(\"helm\", [\n \"pull\",\n manifest.name,\n \"--version\",\n manifest.version,\n \"--repo\",\n manifest.repo,\n \"--destination\",\n chartsDir,\n ])\n\n // check the SHA256\n const content = await readFile(resolve(chartsDir, targetFileName))\n const actualSha256 = await sha256(content)\n\n if (actualSha256 !== manifest.sha256) {\n throw new Error(`SHA256 mismatch for chart '${manifest.name}'`)\n }\n\n return resolve(chartsDir, targetFileName)\n}\n\n/**\n * Extracts the service with the given name from the chart resources.\n * Throws an error if the service is not found.\n *\n * @param chart The Helm chart.\n * @param name The name of the service.\n */\nexport function getChartServiceOutput(chart: helm.v4.Chart, name: string): Output<core.v1.Service> {\n const services = chart.resources.apply(resources => {\n return resources\n .filter(r => core.v1.Service.isInstance(r))\n .map(service => ({ name: service.metadata.name, service }))\n })\n\n return output(services).apply(services => {\n const service = services.find(s => s.name === name)?.service\n\n if (!service) {\n throw new Error(`Service with name '${name}' not found in the chart resources`)\n }\n\n return service\n })\n}\n\n/**\n * Extracts the service with the given name from the chart resources.\n * Throws an error if the service is not found.\n *\n * @param chart The Helm chart.\n * @param name The name of the service.\n */\nexport function getChartService(chart: helm.v4.Chart, name: string): Promise<core.v1.Service> {\n return toPromise(getChartServiceOutput(chart, name))\n}\n"]}
|
1
|
+
{"version":3,"sources":["../src/helm.ts"],"names":["namespace","args","name","services"],"mappings":"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","file":"chunk-2ZAEILVT.js","sourcesContent":["import type { UnitTerminal } from \"@highstate/contract\"\nimport type { Namespace } from \"./namespace\"\nimport type { Workload, WorkloadTerminalArgs } from \"./workload\"\nimport { mkdir, readFile, unlink } from \"node:fs/promises\"\nimport { resolve } from \"node:path\"\nimport { AccessPointRoute, type AccessPointRouteArgs } from \"@highstate/common\"\nimport {\n type InputArray,\n type InputRecord,\n normalize,\n normalizeInputs,\n toPromise,\n} from \"@highstate/pulumi\"\nimport { local } from \"@pulumi/command\"\nimport { apps, core, helm, type types } from \"@pulumi/kubernetes\"\nimport {\n ComponentResource,\n type ComponentResourceOptions,\n type Input,\n type Output,\n output,\n} from \"@pulumi/pulumi\"\nimport { sha256 } from \"crypto-hash\"\nimport { glob } from \"glob\"\nimport spawn from \"nano-spawn\"\nimport { isNonNullish, omit } from \"remeda\"\nimport { Deployment } from \"./deployment\"\nimport { NetworkPolicy, type NetworkPolicyArgs } from \"./network-policy\"\nimport { getServiceType, Service, type ServiceArgs } from \"./service\"\nimport { getNamespaceName, getProvider, type NamespaceLike } from \"./shared\"\nimport { StatefulSet } from \"./stateful-set\"\n\nexport type ChartArgs = Omit<\n helm.v4.ChartArgs,\n \"chart\" | \"version\" | \"repositoryOpts\" | \"namespace\"\n> & {\n /**\n * The namespace to deploy the chart into.\n */\n namespace: Input<Namespace>\n\n /**\n * The custom name of the primary service exposed by the chart.\n *\n * By default, it is the same as the chart name.\n */\n serviceName?: string\n\n /**\n * The extra args to pass to the main service of the chart.\n *\n * Will be patched via transformations.\n */\n service?: Partial<ServiceArgs>\n\n /**\n * The manifest of the chart to resolve.\n */\n chart: ChartManifest\n\n /**\n * The args for the terminal to use.\n *\n * Will be applied to all workloads created by the chart.\n */\n terminal?: Input<WorkloadTerminalArgs>\n\n /**\n * The configuration for the access point route to create.\n */\n route?: Input<Omit<AccessPointRouteArgs, \"endpoints\" | \"customData\">>\n\n /**\n * The configuration for the access point routes to create.\n */\n routes?: InputArray<Omit<AccessPointRouteArgs, \"endpoints\" | \"customData\">>\n\n /**\n * The network policy to apply to the chart.\n */\n networkPolicy?: Input<Omit<NetworkPolicyArgs, \"selector\" | \"cluster\" | \"namespace\">>\n\n /**\n * The network policies to apply to the chart.\n */\n networkPolicies?: Input<NetworkPolicyArgs[]>\n}\n\nexport class Chart extends ComponentResource {\n /**\n * The underlying Helm chart.\n */\n public readonly chart: Output<helm.v4.Chart>\n\n /**\n * The access point routes created for the chart.\n */\n public readonly routes: Output<AccessPointRoute[]>\n\n /**\n * The network policies applied to the chart.\n */\n public readonly networkPolicies: Output<NetworkPolicy[]>\n\n /**\n * All workloads created by the chart.\n */\n public readonly workloads: Output<Workload[]>\n\n constructor(\n private readonly name: string,\n private readonly args: ChartArgs,\n private readonly opts?: ComponentResourceOptions,\n ) {\n super(\"highstate:k8s:Chart\", name, args, opts)\n\n const namespace = output(args.namespace).apply(namespace =>\n output(namespace ? getNamespaceName(namespace) : \"default\"),\n )\n\n this.chart = output(args.namespace).cluster.apply(cluster => {\n return new helm.v4.Chart(\n name,\n omit(\n {\n ...args,\n chart: resolveHelmChart(args.chart),\n namespace,\n },\n [\"route\", \"routes\"],\n ),\n {\n ...opts,\n parent: this,\n provider: getProvider(cluster),\n\n transforms: [\n ...(opts?.transforms ?? []),\n\n async resourceArgs => {\n const namespace = await toPromise(output(args.namespace).metadata.name)\n\n const serviceName = args.serviceName ?? name\n const expectedName = `${name}:${namespace}/${serviceName}`\n\n if (\n resourceArgs.type === \"kubernetes:core/v1:Service\" &&\n resourceArgs.name === expectedName\n ) {\n const spec = resourceArgs.props.spec as types.input.core.v1.ServiceSpec\n\n return {\n props: {\n ...resourceArgs.props,\n spec: {\n ...spec,\n ...(args.service ?? {}),\n\n type: getServiceType(args.service, cluster),\n\n externalIPs:\n args.service?.externalIPs ?? cluster.externalIps ?? spec.externalIPs,\n },\n },\n opts: resourceArgs.opts,\n }\n }\n\n return undefined\n },\n ],\n },\n )\n })\n\n this.routes = output(normalizeInputs(args.route, args.routes)).apply(async routes => {\n if (routes.length === 0) {\n return []\n }\n\n return await Promise.all(\n routes.map(async route => {\n return new AccessPointRoute(\n name,\n {\n ...route,\n\n endpoints: this.service.endpoints,\n\n // pass the native data to the route to allow implementation to use it\n gatewayNativeData: await toPromise(this.service),\n tlsCertificateNativeData: await toPromise(args.namespace),\n },\n { ...opts, parent: this },\n )\n }),\n )\n })\n\n this.networkPolicies = output(args).apply(args => {\n const policies = normalize(args.networkPolicy, args.networkPolicies)\n\n return output(\n policies.map(policy => {\n return new NetworkPolicy(\n name,\n {\n ...policy,\n namespace: args.namespace,\n description: `Network policy for Helm chart \"${name}\"`,\n },\n { ...opts, parent: this },\n )\n }),\n )\n })\n\n this.workloads = output(this.chart).apply(chart => {\n return output(\n chart.resources.apply(resources => {\n return resources\n .map(resource => {\n if (apps.v1.Deployment.isInstance(resource)) {\n return resource.metadata.name.apply(name => {\n return Deployment.wrap(\n name,\n { namespace: args.namespace, deployment: resource, terminal: args.terminal },\n this.opts,\n )\n })\n }\n\n if (apps.v1.StatefulSet.isInstance(resource)) {\n return resource.metadata.name.apply(name => {\n return StatefulSet.wrap(\n name,\n {\n namespace: args.namespace,\n statefulSet: resource,\n service: this.getServiceOutput(name),\n terminal: args.terminal,\n },\n this.opts,\n )\n })\n }\n\n return undefined\n })\n .filter(isNonNullish)\n }),\n )\n })\n }\n\n get service(): Output<Service> {\n return this.getServiceOutput(undefined)\n }\n\n get terminals(): Output<UnitTerminal[]> {\n return this.workloads.apply(workloads => output(workloads.map(workload => workload.terminal)))\n }\n\n private readonly services = new Map<string, Service>()\n\n getServiceOutput(name: string | undefined): Output<Service> {\n return output({ args: this.args, chart: this.chart }).apply(({ args, chart }) => {\n const resolvedName = name ?? args.serviceName ?? this.name\n const existingService = this.services.get(resolvedName)\n\n if (existingService) {\n return existingService\n }\n\n const service = getChartServiceOutput(chart, resolvedName)\n\n const wrappedService = Service.wrap(\n resolvedName,\n { namespace: args.namespace, service },\n { ...this.opts, parent: this },\n )\n\n this.services.set(resolvedName, wrappedService)\n return wrappedService\n })\n }\n\n getService(name?: string): Promise<Service> {\n return toPromise(this.getServiceOutput(name))\n }\n}\n\nexport type RenderedChartArgs = {\n /**\n * The namespace to deploy the chart into.\n */\n namespace?: Input<NamespaceLike>\n\n /**\n * The manifest of the chart to resolve.\n */\n chart: ChartManifest\n\n /**\n * The values to pass to the chart.\n */\n values?: InputRecord<string>\n}\n\nexport class RenderedChart extends ComponentResource {\n /**\n * The rendered manifest of the Helm chart.\n */\n public readonly manifest: Output<string>\n\n /**\n * The underlying command used to render the chart.\n */\n public readonly command: Output<local.Command>\n\n constructor(name: string, args: RenderedChartArgs, opts?: ComponentResourceOptions) {\n super(\"highstate:k8s:RenderedChart\", name, args, opts)\n\n this.command = output(args).apply(args => {\n const values = args.values\n ? Object.entries(args.values).flatMap(([key, value]) => [\"--set\", `${key}=\"${value}\"`])\n : []\n\n return new local.Command(\n name,\n {\n create: output([\n \"helm\",\n \"template\",\n resolveHelmChart(args.chart),\n\n ...(args.namespace ? [\"--namespace\", getNamespaceName(args.namespace)] : []),\n\n ...values,\n ]).apply(command => command.join(\" \")),\n\n logging: \"stderr\",\n },\n { parent: this, ...opts },\n )\n })\n\n this.manifest = this.command.stdout\n\n this.registerOutputs({ manifest: this.manifest, command: this.command })\n }\n}\n\nexport type ChartManifest = {\n repo: string\n name: string\n version: string\n sha256: string\n}\n\n/**\n * Downloads or reuses the Helm chart according to the charts.json file.\n * Returns the full path to the chart's .tgz file.\n *\n * @param manifest The manifest of the Helm chart.\n */\nexport async function resolveHelmChart(manifest: ChartManifest): Promise<string> {\n if (!process.env.HIGHSTATE_CACHE_DIR) {\n throw new Error(\"Environment variable HIGHSTATE_CACHE_DIR is not set\")\n }\n\n const chartsDir = resolve(process.env.HIGHSTATE_CACHE_DIR, \"charts\")\n await mkdir(chartsDir, { recursive: true })\n\n const globPattern = `${manifest.name}-*.tgz`\n const targetFileName = `${manifest.name}-${manifest.version}.tgz`\n\n // find all matching files\n const files = await glob(globPattern, { cwd: chartsDir })\n\n if (files.includes(targetFileName)) {\n return resolve(chartsDir, targetFileName)\n }\n\n // delete old versions\n for (const file of files) {\n await unlink(resolve(chartsDir, file))\n }\n\n // download the chart\n await spawn(\"helm\", [\n \"pull\",\n manifest.name,\n \"--version\",\n manifest.version,\n \"--repo\",\n manifest.repo,\n \"--destination\",\n chartsDir,\n ])\n\n // check the SHA256\n const content = await readFile(resolve(chartsDir, targetFileName))\n const actualSha256 = await sha256(content)\n\n if (actualSha256 !== manifest.sha256) {\n throw new Error(`SHA256 mismatch for chart '${manifest.name}'`)\n }\n\n return resolve(chartsDir, targetFileName)\n}\n\n/**\n * Extracts the service with the given name from the chart resources.\n * Throws an error if the service is not found.\n *\n * @param chart The Helm chart.\n * @param name The name of the service.\n */\nexport function getChartServiceOutput(chart: helm.v4.Chart, name: string): Output<core.v1.Service> {\n const services = chart.resources.apply(resources => {\n return resources\n .filter(r => core.v1.Service.isInstance(r))\n .map(service => ({ name: service.metadata.name, service }))\n })\n\n return output(services).apply(services => {\n const service = services.find(s => s.name === name)?.service\n\n if (!service) {\n throw new Error(`Service with name '${name}' not found in the chart resources`)\n }\n\n return service\n })\n}\n\n/**\n * Extracts the service with the given name from the chart resources.\n * Throws an error if the service is not found.\n *\n * @param chart The Helm chart.\n * @param name The name of the service.\n */\nexport function getChartService(chart: helm.v4.Chart, name: string): Promise<core.v1.Service> {\n return toPromise(getChartServiceOutput(chart, name))\n}\n"]}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { ExposableWorkload, getExposableWorkloadComponents, exposableWorkloadExtraArgs } from './chunk-
|
1
|
+
import { ExposableWorkload, getExposableWorkloadComponents, exposableWorkloadExtraArgs } from './chunk-IDKGFFZ7.js';
|
2
2
|
import { Namespace, mapMetadata, getProvider } from './chunk-WGMJCZSK.js';
|
3
3
|
import { getOrCreate } from '@highstate/contract';
|
4
4
|
import { output, interpolate, toPromise } from '@highstate/pulumi';
|
@@ -26,6 +26,9 @@ var Deployment = class _Deployment extends ExposableWorkload {
|
|
26
26
|
this.spec = spec;
|
27
27
|
this.status = status;
|
28
28
|
}
|
29
|
+
get templateMetadata() {
|
30
|
+
return this.spec.template.metadata;
|
31
|
+
}
|
29
32
|
getTerminalMeta() {
|
30
33
|
return output({
|
31
34
|
title: "Deployment",
|
@@ -283,5 +286,5 @@ var ExternalDeployment = class extends Deployment {
|
|
283
286
|
};
|
284
287
|
|
285
288
|
export { Deployment };
|
286
|
-
//# sourceMappingURL=chunk-
|
287
|
-
//# sourceMappingURL=chunk-
|
289
|
+
//# sourceMappingURL=chunk-3DFFUGSJ.js.map
|
290
|
+
//# sourceMappingURL=chunk-3DFFUGSJ.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/deployment.ts"],"names":["args","podTemplate","labels"],"mappings":"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","file":"chunk-3DFFUGSJ.js","sourcesContent":["import type { AccessPointRoute } from \"@highstate/common\"\nimport type { k8s } from \"@highstate/library\"\nimport type { Container } from \"./container\"\nimport type { NetworkPolicy } from \"./network-policy\"\nimport type { Service } from \"./service\"\nimport { getOrCreate, type UnitTerminal } from \"@highstate/contract\"\nimport {\n type ComponentResourceOptions,\n type Input,\n type Inputs,\n interpolate,\n type Output,\n output,\n toPromise,\n type Unwrap,\n} from \"@highstate/pulumi\"\nimport { apps, type types } from \"@pulumi/kubernetes\"\nimport { deepmerge } from \"deepmerge-ts\"\nimport { omit } from \"remeda\"\nimport { Namespace } from \"./namespace\"\nimport { getProvider, mapMetadata } from \"./shared\"\nimport {\n ExposableWorkload,\n type ExposableWorkloadArgs,\n exposableWorkloadExtraArgs,\n getExposableWorkloadComponents,\n type WorkloadTerminalArgs,\n} from \"./workload\"\n\nexport type DeploymentArgs = Omit<ExposableWorkloadArgs, \"existing\"> &\n Omit<Partial<types.input.apps.v1.DeploymentSpec>, \"template\"> & {\n template?: {\n metadata?: types.input.meta.v1.ObjectMeta\n spec?: Partial<types.input.core.v1.PodSpec>\n }\n }\n\nexport type CreateOrGetDeploymentArgs = DeploymentArgs & {\n /**\n * The entity to use to determine the deployment to patch.\n */\n existing: Input<k8s.Deployment> | undefined\n}\n\nexport abstract class Deployment extends ExposableWorkload {\n protected constructor(\n type: string,\n name: string,\n args: Inputs,\n opts: ComponentResourceOptions | undefined,\n\n apiVersion: Output<string>,\n kind: Output<string>,\n terminalArgs: Output<Unwrap<WorkloadTerminalArgs>>,\n containers: Output<Container[]>,\n namespace: Output<Namespace>,\n metadata: Output<types.output.meta.v1.ObjectMeta>,\n networkPolicy: Output<NetworkPolicy | undefined>,\n\n service: Output<Service | undefined>,\n routes: Output<AccessPointRoute[]>,\n\n /**\n * The spec of the underlying Kubernetes deployment.\n */\n readonly spec: Output<types.output.apps.v1.DeploymentSpec>,\n\n /**\n * The status of the underlying Kubernetes deployment.\n */\n readonly status: Output<types.output.apps.v1.DeploymentStatus>,\n ) {\n super(\n type,\n name,\n args,\n opts,\n apiVersion,\n kind,\n terminalArgs,\n containers,\n namespace,\n metadata,\n networkPolicy,\n service,\n routes,\n )\n }\n\n protected override get templateMetadata(): Output<types.output.meta.v1.ObjectMeta> {\n return this.spec.template.metadata\n }\n\n protected override getTerminalMeta(): Output<UnitTerminal[\"meta\"]> {\n return output({\n title: \"Deployment\",\n globalTitle: interpolate`Deployment | ${this.metadata.name}`,\n description: \"The shell inside the deployment.\",\n icon: \"devicon:kubernetes\",\n })\n }\n\n /**\n * The Highstate deployment entity.\n */\n get entity(): Output<k8s.Deployment> {\n return output({\n type: \"deployment\",\n clusterId: this.cluster.id,\n clusterName: this.cluster.name,\n metadata: this.metadata,\n service: this._service.apply(service => service?.entity),\n })\n }\n\n /**\n * Creates a new deployment.\n */\n static create(name: string, args: DeploymentArgs, opts?: ComponentResourceOptions): Deployment {\n return new CreatedDeployment(name, args, opts)\n }\n\n /**\n * Creates a new deployment or patches an existing one.\n *\n * @param name The name of the resource. May not be the same as the deployment name.\n * @param args The arguments to create or patch the deployment with.\n * @param opts Optional resource options.\n */\n static createOrPatch(\n name: string,\n args: CreateOrGetDeploymentArgs,\n opts?: ComponentResourceOptions,\n ): Deployment {\n if (args.existing) {\n return new DeploymentPatch(name, {\n ...args,\n name: output(args.existing).metadata.name,\n namespace: Namespace.forResourceAsync(args.existing, output(args.namespace).cluster),\n })\n }\n\n return new CreatedDeployment(name, args, opts)\n }\n\n /**\n * Creates a new deployment or gets an existing one.\n *\n * @param name The name of the resource. May not be the same as the deployment name. Will not be used when existing deployment is retrieved.\n * @param args The arguments to create or get the deployment with.\n * @param opts Optional resource options.\n */\n static async createOrGet(\n name: string,\n args: CreateOrGetDeploymentArgs,\n opts?: ComponentResourceOptions,\n ): Promise<Deployment> {\n if (args.existing) {\n return await Deployment.forAsync(args.existing, output(args.namespace).cluster)\n }\n\n return new CreatedDeployment(name, args, opts)\n }\n\n /**\n * Patches an existing deployment.\n *\n * Will throw an error if the deployment does not exist.\n *\n * @param name The name of the resource. May not be the same as the deployment name.\n * @param args The arguments to patch the deployment with.\n * @param opts Optional resource options.\n */\n static patch(name: string, args: DeploymentArgs, opts?: ComponentResourceOptions): Deployment {\n return new DeploymentPatch(name, args, opts)\n }\n\n /**\n * Wraps an existing Kubernetes deployment.\n */\n static wrap(\n name: string,\n args: WrappedDeploymentArgs,\n opts?: ComponentResourceOptions,\n ): Deployment {\n return new WrappedDeployment(name, args, opts)\n }\n\n /**\n * Gets an existing deployment.\n *\n * Will throw an error if the deployment does not exist.\n */\n static get(\n name: string,\n args: ExternalDeploymentArgs,\n opts?: ComponentResourceOptions,\n ): Deployment {\n return new ExternalDeployment(name, args, opts)\n }\n\n private static readonly deploymentCache = new Map<string, Deployment>()\n\n /**\n * Gets an existing deployment for a given entity.\n * Prefer this method over `get` when possible.\n *\n * It automatically names the resource with the following format: `{clusterName}.{namespace}.{name}.{clusterId}`.\n *\n * This method is idempotent and will return the same instance for the same entity.\n *\n * @param entity The entity to get the deployment for.\n * @param cluster The cluster where the deployment is located.\n */\n static for(entity: k8s.Deployment, cluster: Input<k8s.Cluster>): Deployment {\n return getOrCreate(\n Deployment.deploymentCache,\n `${entity.clusterName}.${entity.metadata.namespace}.${entity.metadata.name}.${entity.clusterId}`,\n name => {\n return Deployment.get(name, {\n name: entity.metadata.name,\n namespace: Namespace.forResource(entity, cluster),\n })\n },\n )\n }\n\n /**\n * Gets an existing deployment for a given entity.\n * Prefer this method over `get` when possible.\n *\n * It automatically names the resource with the following format: `{clusterName}.{namespace}.{name}.{clusterId}`.\n *\n * This method is idempotent and will return the same instance for the same entity.\n *\n * @param entity The entity to get the deployment for.\n * @param cluster The cluster where the deployment is located.\n */\n static async forAsync(\n entity: Input<k8s.Deployment>,\n cluster: Input<k8s.Cluster>,\n ): Promise<Deployment> {\n const resolvedEntity = await toPromise(entity)\n return Deployment.for(resolvedEntity, cluster)\n }\n}\n\nclass CreatedDeployment extends Deployment {\n constructor(name: string, args: DeploymentArgs, opts?: ComponentResourceOptions) {\n const { labels, podTemplate, networkPolicy, containers, service, routes } =\n getExposableWorkloadComponents(name, args, () => this, opts)\n\n const deployment = output(args.namespace).cluster.apply(cluster => {\n return new apps.v1.Deployment(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: output({ args, podTemplate, labels }).apply(({ args, podTemplate, labels }) => {\n return deepmerge(\n {\n template: podTemplate,\n selector: { matchLabels: labels },\n },\n omit(args, exposableWorkloadExtraArgs),\n ) as types.input.apps.v1.DeploymentSpec\n }),\n },\n { ...opts, parent: this, provider: getProvider(cluster) },\n )\n })\n\n super(\n \"highstate:k8s:Deployment\",\n name,\n args,\n opts,\n\n deployment.apiVersion,\n deployment.kind,\n output(args.terminal ?? {}),\n containers,\n output(args.namespace),\n deployment.metadata,\n networkPolicy,\n\n service,\n routes,\n\n deployment.spec,\n deployment.status,\n )\n }\n}\n\nclass DeploymentPatch extends Deployment {\n constructor(name: string, args: DeploymentArgs, opts?: ComponentResourceOptions) {\n const { labels, podTemplate, networkPolicy, containers, service, routes } =\n getExposableWorkloadComponents(name, args, () => this, opts)\n\n const deployment = output(args.namespace).cluster.apply(cluster => {\n return new apps.v1.DeploymentPatch(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: output({ args, podTemplate, labels }).apply(({ args, podTemplate, labels }) => {\n return deepmerge(\n {\n template: podTemplate,\n selector: { matchLabels: labels },\n },\n omit(args, exposableWorkloadExtraArgs),\n ) as types.input.apps.v1.DeploymentSpec\n }),\n },\n {\n ...opts,\n parent: this,\n provider: getProvider(cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:DeploymentPatch\",\n name,\n args,\n opts,\n\n deployment.apiVersion,\n deployment.kind,\n output(args.terminal ?? {}),\n containers,\n output(args.namespace),\n deployment.metadata,\n networkPolicy,\n\n service,\n routes,\n\n deployment.spec,\n deployment.status,\n )\n }\n}\n\nexport type WrappedDeploymentArgs = {\n /**\n * The underlying Kubernetes deployment to wrap.\n */\n deployment: Input<apps.v1.Deployment>\n\n /**\n * The namespace where the deployment is located.\n */\n namespace: Input<Namespace>\n\n /**\n * The args for the terminal to use.\n */\n terminal?: Input<WorkloadTerminalArgs>\n}\n\nclass WrappedDeployment extends Deployment {\n constructor(name: string, args: WrappedDeploymentArgs, opts?: ComponentResourceOptions) {\n super(\n \"highstate:k8s:WrappedDeployment\",\n name,\n args,\n opts,\n\n output(args.deployment).apiVersion,\n output(args.deployment).kind,\n output(args.terminal ?? {}),\n output([]),\n output(args.namespace),\n output(args.deployment).metadata,\n\n output(undefined),\n output(undefined),\n output([]),\n\n output(args.deployment).spec,\n output(args.deployment).status,\n )\n }\n}\n\nexport type ExternalDeploymentArgs = {\n /**\n * The name of the deployment to get.\n */\n name: Input<string>\n\n /**\n * The namespace where the deployment is located.\n */\n namespace: Input<Namespace>\n}\n\nclass ExternalDeployment extends Deployment {\n constructor(name: string, args: ExternalDeploymentArgs, opts?: ComponentResourceOptions) {\n const deployment = output(args.namespace).cluster.apply(cluster => {\n return apps.v1.Deployment.get(\n name,\n interpolate`${output(args.namespace).metadata.name}/${args.name}`,\n { ...opts, parent: this, provider: getProvider(cluster) },\n )\n })\n\n super(\n \"highstate:k8s:ExternalDeployment\",\n name,\n args,\n opts,\n\n deployment.apiVersion,\n deployment.kind,\n output({}),\n output([]),\n output(args.namespace),\n deployment.metadata,\n\n output(undefined),\n output(undefined),\n output([]),\n\n deployment.spec,\n deployment.status,\n )\n }\n}\n"]}
|
@@ -478,6 +478,12 @@ var containerExtraArgs = [
|
|
478
478
|
"environmentSource",
|
479
479
|
"environmentSources"
|
480
480
|
];
|
481
|
+
function getFallbackContainerName(name, index) {
|
482
|
+
if (index === 0) {
|
483
|
+
return name;
|
484
|
+
}
|
485
|
+
return `${name}-${index}`;
|
486
|
+
}
|
481
487
|
function mapContainerToRaw(container, cluster, fallbackName) {
|
482
488
|
const containerName = container.name ?? fallbackName;
|
483
489
|
const spec = {
|
@@ -1178,28 +1184,39 @@ function getWorkloadComponents(name, args, parent, opts) {
|
|
1178
1184
|
"app.kubernetes.io/name": name
|
1179
1185
|
};
|
1180
1186
|
const containers = output(args).apply((args2) => normalize(args2.container, args2.containers));
|
1181
|
-
const
|
1182
|
-
|
1183
|
-
|
1184
|
-
|
1185
|
-
|
1186
|
-
|
1187
|
-
|
1188
|
-
|
1189
|
-
|
1190
|
-
|
1191
|
-
|
1187
|
+
const initContainers = output(args).apply(
|
1188
|
+
(args2) => normalize(args2.initContainer, args2.initContainers)
|
1189
|
+
);
|
1190
|
+
const rawVolumes = output({ containers, initContainers }).apply(
|
1191
|
+
({ containers: containers2, initContainers: initContainers2 }) => {
|
1192
|
+
const containerVolumes = [...containers2, ...initContainers2].flatMap(
|
1193
|
+
(container) => normalize(container.volume, container.volumes)
|
1194
|
+
);
|
1195
|
+
const containerVolumeMounts = containers2.flatMap((container) => {
|
1196
|
+
return normalize(container.volumeMount, container.volumeMounts).map((volumeMount) => {
|
1197
|
+
return "volume" in volumeMount ? volumeMount.volume : void 0;
|
1198
|
+
}).filter(Boolean);
|
1199
|
+
});
|
1200
|
+
return output([...containerVolumes, ...containerVolumeMounts]);
|
1201
|
+
}
|
1202
|
+
);
|
1192
1203
|
const volumes = rawVolumes.apply((rawVolumes2) => {
|
1193
1204
|
return output(rawVolumes2.map(mapWorkloadVolume)).apply(uniqueBy((volume) => volume.name));
|
1194
1205
|
});
|
1195
1206
|
const podSpec = output({
|
1196
1207
|
cluster: output(args.namespace).cluster,
|
1197
1208
|
containers,
|
1209
|
+
initContainers,
|
1198
1210
|
volumes
|
1199
|
-
}).apply(({ cluster, containers: containers2, volumes: volumes2 }) => {
|
1211
|
+
}).apply(({ cluster, containers: containers2, initContainers: initContainers2, volumes: volumes2 }) => {
|
1200
1212
|
const spec = {
|
1201
1213
|
volumes: volumes2,
|
1202
|
-
containers: containers2.map(
|
1214
|
+
containers: containers2.map(
|
1215
|
+
(container, index) => mapContainerToRaw(container, cluster, getFallbackContainerName(name, index))
|
1216
|
+
),
|
1217
|
+
initContainers: initContainers2.map(
|
1218
|
+
(container, index) => mapContainerToRaw(container, cluster, getFallbackContainerName(`init-${name}`, index))
|
1219
|
+
),
|
1203
1220
|
...podSpecDefaults
|
1204
1221
|
};
|
1205
1222
|
if (containers2.some((container) => container.enableTun) && cluster.quirks?.tunDevicePolicy?.type !== "plugin") {
|
@@ -1261,7 +1278,7 @@ function getExposableWorkloadComponents(name, args, parent, opts) {
|
|
1261
1278
|
serviceArgs: args.service,
|
1262
1279
|
containers
|
1263
1280
|
}).apply(({ existing, serviceArgs, containers: containers2 }) => {
|
1264
|
-
if (!args.service && !args.route) {
|
1281
|
+
if (!args.service && !args.route && !args.routes) {
|
1265
1282
|
return void 0;
|
1266
1283
|
}
|
1267
1284
|
if (existing?.service) {
|
@@ -1292,8 +1309,8 @@ function getExposableWorkloadComponents(name, args, parent, opts) {
|
|
1292
1309
|
if (args.existing) {
|
1293
1310
|
return [];
|
1294
1311
|
}
|
1295
|
-
return routesArgs.map((routeArgs) => {
|
1296
|
-
return new AccessPointRoute(name
|
1312
|
+
return routesArgs.map((routeArgs, index) => {
|
1313
|
+
return new AccessPointRoute(`${name}.${index}`, {
|
1297
1314
|
...routeArgs,
|
1298
1315
|
endpoints: service2.endpoints,
|
1299
1316
|
// pass the native data to the route to allow implementation to use it
|
@@ -1320,7 +1337,7 @@ var Workload = class extends ScopedResource {
|
|
1320
1337
|
return containers[0]?.name ?? this.name;
|
1321
1338
|
});
|
1322
1339
|
const shell = this.terminalArgs.apply((args) => args.shell ?? "bash");
|
1323
|
-
const
|
1340
|
+
const podLabelSelector = this.templateMetadata.apply((meta) => meta.labels ?? {}).apply(
|
1324
1341
|
(labels) => Object.entries(labels).map(([key, value]) => `${key}=${value}`).join(",")
|
1325
1342
|
);
|
1326
1343
|
return output({
|
@@ -1342,11 +1359,12 @@ var Workload = class extends ScopedResource {
|
|
1342
1359
|
RESOURCE_NAME="${this.metadata.name}"
|
1343
1360
|
CONTAINER_NAME="${containerName}"
|
1344
1361
|
SHELL="${shell}"
|
1362
|
+
LABEL_SELECTOR="${podLabelSelector}"
|
1345
1363
|
|
1346
1364
|
echo "Connecting to $RESOURCE_TYPE \\"$RESOURCE_NAME\\" in namespace \\"$NAMESPACE\\""
|
1347
1365
|
|
1348
1366
|
# get all pods for this workload
|
1349
|
-
PODS=$(kubectl get pods -n "$NAMESPACE" -l "$
|
1367
|
+
PODS=$(kubectl get pods -n "$NAMESPACE" -l "$LABEL_SELECTOR" -o jsonpath='{.items[*].metadata.name}' 2>/dev/null || echo "")
|
1350
1368
|
|
1351
1369
|
if [ -z "$PODS" ]; then
|
1352
1370
|
echo "No pods found"
|
@@ -1472,7 +1490,7 @@ var ExposableWorkload = class extends Workload {
|
|
1472
1490
|
static createOrPatchGeneric(name, args, opts) {
|
1473
1491
|
return output(args).apply(async (args2) => {
|
1474
1492
|
if (args2.existing?.type === "deployment") {
|
1475
|
-
const { Deployment } = await import('./deployment-
|
1493
|
+
const { Deployment } = await import('./deployment-D3ZXIZRN.js');
|
1476
1494
|
return Deployment.patch(
|
1477
1495
|
name,
|
1478
1496
|
{
|
@@ -1484,7 +1502,7 @@ var ExposableWorkload = class extends Workload {
|
|
1484
1502
|
);
|
1485
1503
|
}
|
1486
1504
|
if (args2.existing?.type === "stateful-set") {
|
1487
|
-
const { StatefulSet } = await import('./stateful-set-
|
1505
|
+
const { StatefulSet } = await import('./stateful-set-AXF4QRFI.js');
|
1488
1506
|
return StatefulSet.patch(
|
1489
1507
|
name,
|
1490
1508
|
{
|
@@ -1496,11 +1514,11 @@ var ExposableWorkload = class extends Workload {
|
|
1496
1514
|
);
|
1497
1515
|
}
|
1498
1516
|
if (args2.type === "Deployment") {
|
1499
|
-
const { Deployment } = await import('./deployment-
|
1517
|
+
const { Deployment } = await import('./deployment-D3ZXIZRN.js');
|
1500
1518
|
return Deployment.create(name, deepmerge(args2, args2.deployment), opts);
|
1501
1519
|
}
|
1502
1520
|
if (args2.type === "StatefulSet") {
|
1503
|
-
const { StatefulSet } = await import('./stateful-set-
|
1521
|
+
const { StatefulSet } = await import('./stateful-set-AXF4QRFI.js');
|
1504
1522
|
return StatefulSet.create(name, deepmerge(args2, args2.statefulSet), opts);
|
1505
1523
|
}
|
1506
1524
|
throw new Error(`Unknown workload type: ${args2.type}`);
|
@@ -1508,6 +1526,6 @@ var ExposableWorkload = class extends Workload {
|
|
1508
1526
|
}
|
1509
1527
|
};
|
1510
1528
|
|
1511
|
-
export { ConfigMap, ExposableWorkload, NativeNetworkPolicy, NetworkPolicy, PersistentVolumeClaim, Workload, exposableWorkloadExtraArgs, getAutoVolumeName, getBestEndpoint, getExposableWorkloadComponents, getWorkloadComponents, getWorkloadVolumeResourceUuid, mapContainerEnvironment, mapContainerToRaw, mapEnvironmentSource, mapVolumeMount, mapWorkloadVolume, networkPolicyMediator, podSpecDefaults, requireBestEndpoint, workloadExtraArgs };
|
1512
|
-
//# sourceMappingURL=chunk-
|
1513
|
-
//# sourceMappingURL=chunk-
|
1529
|
+
export { ConfigMap, ExposableWorkload, NativeNetworkPolicy, NetworkPolicy, PersistentVolumeClaim, Workload, exposableWorkloadExtraArgs, getAutoVolumeName, getBestEndpoint, getExposableWorkloadComponents, getFallbackContainerName, getWorkloadComponents, getWorkloadVolumeResourceUuid, mapContainerEnvironment, mapContainerToRaw, mapEnvironmentSource, mapVolumeMount, mapWorkloadVolume, networkPolicyMediator, podSpecDefaults, requireBestEndpoint, workloadExtraArgs };
|
1530
|
+
//# sourceMappingURL=chunk-IDKGFFZ7.js.map
|
1531
|
+
//# sourceMappingURL=chunk-IDKGFFZ7.js.map
|