@chimoney.io/iaas-k8s-deployment
Version:
Kubernetes Infrastructure as a Service deployment package for streamlined multi-cloud environments
243 lines • 6.74 kB
TypeScript
export type LogLevel = "debug" | "info" | "warn" | "error" | "silent";
export type DeploymentAction = "up" | "preview" | "destroy" | "outputs" | "refresh" | "rollback";
export type DeploymentStatus = "initializing" | "configuring" | "deploying" | "completed" | "failed" | "rolling-back";
export interface Logger {
debug(message: string, ...args: any[]): void;
info(message: string, ...args: any[]): void;
warn(message: string, ...args: any[]): void;
error(message: string, ...args: any[]): void;
}
export interface DeploymentProgress {
status: DeploymentStatus;
message: string;
timestamp: Date;
metadata?: Record<string, any>;
}
export interface DeploymentOptions {
action: DeploymentAction;
stackName: string;
secretsJson: string;
companyName: string;
workDir?: string;
helmChartPath?: string;
logLevel?: LogLevel;
onProgress?: (progress: DeploymentProgress) => void;
validateConfig?: boolean;
enableRollback?: boolean;
timeout?: number;
cloudProvider?: "aws" | "gcp";
cloudConfig?: AwsCloudConfig | GcpCloudConfig;
autoSetupConfig?: boolean;
namespace?: string;
deploymentType: "shared" | "dedicated";
planTier?: import("./plans.js").PlanTier;
billingAccountId?: string;
defaultDomain?: string;
authDomain?: string;
openPaymentsDomain?: string;
connectorDomain?: string;
enableRafikiAuth?: boolean;
enableRafikiBackend?: boolean;
enableNginx?: boolean;
enableRedis?: boolean;
graphqlAllowedIps?: string[];
rafikiAuthImage?: {
repository?: string;
tag?: string;
pullPolicy?: string;
};
rafikiBackendImage?: {
repository?: string;
tag?: string;
pullPolicy?: string;
};
nginxImage?: {
repository?: string;
tag?: string;
pullPolicy?: string;
};
redisImage?: {
repository?: string;
tag?: string;
pullPolicy?: string;
};
ingressClassName?: string;
dedicatedDeploymentHpaEnabledByDefault?: boolean;
sharedDeploymentNetworkPolicyEnabled?: boolean;
ingressControllerNamespace?: string;
ingressControllerPodSelectorLabels?: Record<string, string>;
allowedExternalEgressRules?: Array<{
cidr: string;
ports?: Array<{
port: number;
protocol: "TCP" | "UDP";
}>;
}>;
prometheusFqdn?: string;
clusterName?: string;
environment?: string;
managedCertificateEnabled?: boolean;
createKubernetesSecrets?: boolean;
}
export interface AwsCloudConfig {
region: string;
profile?: string;
accessKeyId?: string;
secretAccessKey?: string;
}
export interface GcpCloudConfig {
project: string;
region: string;
zone?: string;
credentials?: string;
}
export type CloudConfig = AwsCloudConfig | GcpCloudConfig;
export interface DeploymentResult {
success: boolean;
outputs?: any;
summary?: any;
error?: string;
kubeconfig?: string;
rollbackPerformed?: boolean;
duration?: number;
costMonitoring?: {
enabled: boolean;
namespace?: string;
tier?: string;
budget?: number;
currency?: string;
dashboardUrl?: string;
reason?: string;
error?: string;
};
}
export interface FieldValidationError {
field: string;
message: string;
value?: any;
}
export interface DeploymentConfig {
stackName: string;
secretsJson: string;
companyName: string;
cloudProvider?: "aws" | "gcp";
helmChartPath?: string;
cloudConfig?: CloudConfig;
namespace?: string;
deploymentType?: "shared" | "dedicated";
planTier?: import("./plans.js").PlanTier;
kubecostEnabled?: boolean;
defaultDomain?: string;
enableRafikiAuth?: boolean;
enableRafikiBackend?: boolean;
enableNginx?: boolean;
enableRedis?: boolean;
rafikiAuthImage?: {
repository?: string;
tag?: string;
pullPolicy?: string;
};
rafikiBackendImage?: {
repository?: string;
tag?: string;
pullPolicy?: string;
};
nginxImage?: {
repository?: string;
tag?: string;
pullPolicy?: string;
};
redisImage?: {
repository?: string;
tag?: string;
pullPolicy?: string;
};
ingressClassName?: string;
dedicatedDeploymentHpaEnabledByDefault?: boolean;
sharedDeploymentNetworkPolicyEnabled?: boolean;
ingressControllerNamespace?: string;
ingressControllerPodSelectorLabels?: Record<string, string>;
allowedExternalEgressRules?: Array<{
cidr: string;
ports?: Array<{
port: number;
protocol: "TCP" | "UDP";
}>;
}>;
}
export interface NamespaceConfig {
name: string;
labels?: Record<string, string>;
annotations?: Record<string, string>;
resourceQuota?: {
requests?: {
cpu?: string;
memory?: string;
storage?: string;
};
limits?: {
cpu?: string;
memory?: string;
storage?: string;
};
persistentvolumeclaims?: string;
};
}
export interface SharedClusterConfig {
clusterName: string;
kubeconfig?: string;
namespaces?: NamespaceConfig[];
staticIpName?: string;
region?: string;
zone?: string;
project?: string;
vpcId?: string;
kubecostEnabled?: boolean;
tierCapacity?: {
maxBasicTenants: number;
maxStandardTenants: number;
maxPremiumTenants: number;
maxEnterpriseTenants: number;
};
}
export interface TierDeploymentResult extends DeploymentResult {
tierInfo?: {
planTier: import("./plans.js").PlanTier;
resourceAllocation: import("./plans.js").TierResourceAllocation;
costEstimate?: {
monthly: number;
currency: string;
};
costMonitoring?: {
enabled: boolean;
dashboardUrl?: string;
budgetAllocated?: number;
budgetThresholds?: number[];
alertsEnabled?: boolean;
};
};
}
export interface ClusterLookupResult {
exists: boolean;
kubeconfig?: string;
clusterName?: string;
staticIpName?: string;
vpcId?: string;
region?: string;
zone?: string;
project?: string;
}
export interface K8sLoadBalancerIngress {
hostname?: string;
ip?: string;
}
export interface K8sLoadBalancerStatus {
ingress?: K8sLoadBalancerIngress[];
}
export interface IngressStatus {
loadBalancer?: K8sLoadBalancerStatus;
}
export interface ServiceStatus {
loadBalancer?: K8sLoadBalancerStatus;
}
//# sourceMappingURL=index.d.ts.map