UNPKG

@atomist/sdm

Version:

Atomist Software Delivery Machine SDK

148 lines 6.26 kB
import * as k8s from "@kubernetes/client-node"; import { DeepPartial } from "ts-essentials"; import { KubernetesClients } from "./clients"; /** * Information used to construct resources when creating or updating * an application in a Kubernetes cluster. This structure is designed * for a typical microservice-type deployment of one container * optionally providing a service on a single port. If you need * anything more complicated than that, you can use the various * partial specs in this structure to manage more elaborate * applications and the `applicationData` callback on the * [[KubernetesDeploymentRegistration]]. */ export interface KubernetesApplication { /** Atomist workspace ID */ workspaceId: string; /** * Name of resources to create. It can be overriden for * individual resources in the partial specs. */ name: string; /** Namespace to create resources in. */ ns: string; /** Full image name and tag for deployment pod template container. */ image: string; /** * Mode of operation. If not provided, the "full" mode is used, * making calls to the Kubernetes API and, if configured, * persisting changes to the sync/GitOps repo. If set to "sync", * it will only persist changes to the configured sync/GitOps * repo, making no calls to the Kubernetes API. */ mode?: "full" | "sync"; /** * Port the service listens on, if not provided, no service * resource is created. */ port?: number; /** * Ingress rule URL path, if not provided no ingress rule is * added. Typically ingress paths start with a forward slash * ("/") but do not end with one, unless the path is just "/". */ path?: string; /** * Partial deployment spec for this application that is overlaid * on top of the default deployment spec template. It can be used * to provide custom resource specifications, liveness and * readiness checks, etc. */ deploymentSpec?: DeepPartial<k8s.V1Deployment>; /** * Partial service spec for this application that is overlaid on * top of the default service spec template. */ serviceSpec?: DeepPartial<k8s.V1Service>; /** * Partial ingress spec for this application that is overlaid on * top of the default ingress spec template. */ ingressSpec?: DeepPartial<k8s.NetworkingV1beta1Ingress>; /** * Secrets to upsert prior to creating deployment. */ secrets?: k8s.V1Secret[]; /** * Partial role to create for binding to service account. If * provided, this partial spec is overlaid onto the default role * spec, which is just metadata with no rules. If this is not * defined, this deployment will not create a role and therefore * not bind a role to a service account. */ roleSpec?: DeepPartial<k8s.V1Role> | DeepPartial<k8s.V1ClusterRole>; /** * Partial service account spec to create and use in the * deployment. This partial spec is overlaid onto the default * service account spec. If the `serviceAccountSpec` is provided, * the resulting service account spec is upserted during * deployment. If a `roleSpec` is provided, the resulting service * account spec is upserted during deployment and a role binding * is created between the role and service account. If neither * the `serviceAccountSpec` nor `roleSpec` are created, no service * account is managed by the deployment. If this spec contains a * name, it is used in the role binding and deployment specs. */ serviceAccountSpec?: DeepPartial<k8s.V1ServiceAccount>; /** * Partial role binding spec for the role to service account. * This partial spec is overlaid onto the default role binding * spec, which contains metadata and the role and service account * names. The role binding is only created if the `roleSpec` is * also provided. */ roleBindingSpec?: DeepPartial<k8s.V1RoleBinding> | DeepPartial<k8s.V1ClusterRoleBinding>; /** * Strategy to use when patching resources for this application. * Supported values are "application/merge-patch+json" and * "application/strategic-merge-patch+json". The default is * "application/strategic-merge-patch+json". See * https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/ * for details. */ patchStrategy?: "application/merge-patch+json" | "application/strategic-merge-patch+json"; } /** * Information needed to delete resources related to an application in * a Kubernetes cluster. */ export declare type KubernetesDelete = Pick<KubernetesApplication, "name" | "ns" | "workspaceId" | "mode">; /** * Intermediate interface for use in combination with other * interfaces. */ export interface KubernetesClientsContainer { /** Kubernetes API group clients. */ clients: KubernetesClients; } export interface KubernetesSdm { /** Name of SDM fulfilling the goal. */ sdmFulfiller: string; } /** * Internal application structure used to create or update resources * in a Kubernetes cluster. */ export declare type KubernetesResourceRequest = KubernetesApplication & KubernetesClientsContainer & KubernetesSdm; /** * Internal application structure used to delete resources from a * Kubernetes cluster. */ export declare type KubernetesDeleteResourceRequest = KubernetesDelete & KubernetesClientsContainer; /** Qualified name of Kubernetes application */ export declare function appName(k: Pick<KubernetesApplication, "name" | "ns">): string; /** * Test if the object is a valid [[KubernetesApplication]] by checking * if it has all required properties. * * @param o Putative Kubernetes application data * @return `true` if all required properties are present, `false` otherwise. */ export declare function isKubernetesApplication(o: { [key: string]: any; }): o is KubernetesApplication; /** Stringify filter for a Kubernetes request object. */ export declare function reqFilter<T>(k: string, v: T): T | undefined; /** Stringify a Kubernetes request object. */ export declare function reqString(req: any): string; //# sourceMappingURL=request.d.ts.map