@webda/shell
Version:
Deploy a Webda app or configure it
36 lines (35 loc) • 2.24 kB
TypeScript
import * as k8s from "@kubernetes/client-node";
import { KubernetesParameters } from "@webda/kubernetes";
import { ContainerResources } from "./container.js";
import { Deployer } from "./deployer.js";
export interface KubernetesObject {
kind: string;
apiVersion?: string;
metadata: {
name: string;
namespace?: string;
};
[key: string]: any;
}
export declare const K8S_DEFAULT_CRON_DEFINITION = "apiVersion: batch/v1\nkind: CronJob\nmetadata:\n name: ${cron.serviceName.toLowerCase()}-${cron.method.toLowerCase()}-${cron.cronId}\nspec:\n concurrencyPolicy: Forbid\n failedJobsHistoryLimit: 1\n jobTemplate:\n spec:\n template:\n spec:\n containers:\n - image: ${resources.tag}\n imagePullPolicy: Always\n name: scheduled-job\n resources: {}\n command: [\"/webda/node_modules/.bin/webda\"]\n args: [\n \"--noCompile\",\n \"launch\",\n \"${cron.serviceName}\",\n \"${cron.method}\",\n \"${...cron.args}\",\n ]\n restartPolicy: Never\n securityContext: {}\n terminationGracePeriodSeconds: 30\n schedule: ${cron.cron}\n successfulJobsHistoryLimit: 3\n";
export declare function KubernetesObjectToURI({ apiVersion, metadata: { name, namespace }, kind }: KubernetesObject): string;
export interface KubernetesResources extends ContainerResources, KubernetesParameters {
defaultNamespace?: string;
resources?: KubernetesObject[];
patchResources?: any;
resourcesFile?: string;
resourcesFiles?: string[];
cronTemplate?: string | boolean | KubernetesObject;
}
/**
* @WebdaDeployer WebdaDeployer/Kubernetes
*/
export declare class Kubernetes extends Deployer<KubernetesResources> {
client: k8s.KubernetesObjectApi;
loadDefaults(): Promise<void>;
addAnnotation(spec: any): void;
completeResource(resource: KubernetesObject): boolean;
deploy(): Promise<void>;
getClient<T extends k8s.ApiType>(api?: k8s.ApiConstructor<T>): T extends never ? k8s.KubernetesObjectApi : T;
upsertKubernetesObject(resource: KubernetesObject): Promise<void>;
}