96 lines
3.0 KiB
TypeScript
96 lines
3.0 KiB
TypeScript
import type { IConstruct } from 'constructs';
|
|
import { Construct } from 'constructs';
|
|
import type { ICluster } from './cluster';
|
|
import * as iam from '../../aws-iam';
|
|
import type { RemovalPolicy } from '../../core';
|
|
import { NestedStack } from '../../core';
|
|
/**
|
|
* Properties for a KubectlProvider
|
|
*/
|
|
export interface KubectlProviderProps {
|
|
/**
|
|
* The cluster to control.
|
|
*/
|
|
readonly cluster: ICluster;
|
|
/**
|
|
* The removal policy applied to the custom resource that provides kubectl.
|
|
*
|
|
* The removal policy controls what happens to the resource if it stops being managed by CloudFormation.
|
|
* This can happen in one of three situations:
|
|
*
|
|
* - The resource is removed from the template, so CloudFormation stops managing it
|
|
* - A change to the resource is made that requires it to be replaced, so CloudFormation stops managing it
|
|
* - The stack is deleted, so CloudFormation stops managing all resources in it
|
|
*
|
|
* @default RemovalPolicy.DESTROY
|
|
*/
|
|
readonly removalPolicy?: RemovalPolicy;
|
|
}
|
|
/**
|
|
* Kubectl Provider Attributes
|
|
*/
|
|
export interface KubectlProviderAttributes {
|
|
/**
|
|
* The custom resource provider's service token.
|
|
*/
|
|
readonly functionArn: string;
|
|
/**
|
|
* The IAM role to assume in order to perform kubectl operations against this cluster.
|
|
*/
|
|
readonly kubectlRoleArn: string;
|
|
/**
|
|
* The IAM execution role of the handler. This role must be able to assume kubectlRoleArn
|
|
*/
|
|
readonly handlerRole: iam.IRole;
|
|
}
|
|
/**
|
|
* Imported KubectlProvider that can be used in place of the default one created by CDK
|
|
*/
|
|
export interface IKubectlProvider extends IConstruct {
|
|
/**
|
|
* The custom resource provider's service token.
|
|
*/
|
|
readonly serviceToken: string;
|
|
/**
|
|
* The IAM role to assume in order to perform kubectl operations against this cluster.
|
|
*/
|
|
readonly roleArn: string;
|
|
/**
|
|
* The IAM execution role of the handler.
|
|
*/
|
|
readonly handlerRole: iam.IRole;
|
|
}
|
|
/**
|
|
* Implementation of Kubectl Lambda
|
|
*/
|
|
export declare class KubectlProvider extends NestedStack implements IKubectlProvider {
|
|
/**
|
|
* Take existing provider or create new based on cluster
|
|
*
|
|
* @param scope Construct
|
|
* @param cluster k8s cluster
|
|
*/
|
|
static getOrCreate(scope: Construct, cluster: ICluster): IKubectlProvider;
|
|
/**
|
|
* Import an existing provider
|
|
*
|
|
* @param scope Construct
|
|
* @param id an id of resource
|
|
* @param attrs attributes for the provider
|
|
*/
|
|
static fromKubectlProviderAttributes(scope: Construct, id: string, attrs: KubectlProviderAttributes): IKubectlProvider;
|
|
/**
|
|
* The custom resource provider's service token.
|
|
*/
|
|
readonly serviceToken: string;
|
|
/**
|
|
* The IAM role to assume in order to perform kubectl operations against this cluster.
|
|
*/
|
|
readonly roleArn: string;
|
|
/**
|
|
* The IAM execution role of the handler.
|
|
*/
|
|
readonly handlerRole: iam.IRole;
|
|
constructor(scope: Construct, id: string, props: KubectlProviderProps);
|
|
}
|