--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.8.0 creationTimestamp: null name: terminators.node.k8s.aws spec: group: node.k8s.aws names: kind: Terminator listKind: TerminatorList plural: terminators singular: terminator categories: - all scope: Namespaced versions: - name: v1alpha1 schema: openAPIV3Schema: description: Terminator is the Schema for the terminators API properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: description: TerminatorSpec defines the desired state of Terminator type: object properties: matchLabels: description: Action will only be taken if the target node has all the matching labels and values. type: object additionalProperties: type: string sqs: description: AWS SQS queue configuration. type: object required: - queueURL properties: queueURL: description: | The URL of the Amazon SQS queue from which messages are received. * Queue URLs and names are case-sensitive. * QueueURL is a required field type: string drain: description: Configuration for the cordon and drain actions. type: object properties: force: description: Enable termination of pods without a controller. type: boolean default: true gracePeriodSeconds: description: Wait time for pods to terminate. If negative then the pod's configured gracetime will be used. type: integer default: -1 ignoreAllDaemonSets: description: Enable ignoring pods managed by a DaemonSet. type: boolean default: true deleteEmptyDirData: description: Enable termination of pods with local data that will be deleted. type: boolean default: true timeoutSeconds: description: Wait time before failing the action. If zero, then wait forever. type: integer default: 120 events: description: Specify what action should be taken when a particular message type is received. type: object properties: autoScalingTermination: type: string enum: - CordonAndDrain - Cordon - NoAction default: CordonAndDrain rebalanceRecommendation: type: string enum: - CordonAndDrain - Cordon - NoAction default: CordonAndDrain scheduledChange: type: string enum: - CordonAndDrain - Cordon - NoAction default: CordonAndDrain spotInterruption: type: string enum: - CordonAndDrain - Cordon - NoAction default: CordonAndDrain stateChange: type: string enum: - CordonAndDrain - Cordon - NoAction default: CordonAndDrain webhook: description: Send notification of handled events. type: object properties: url: description: URL to send notifications. type: string proxyURL: description: Proxy URL to use to send notifications. type: string headers: description: HTTP headers to include when sending notifications. type: array items: type: object properties: name: description: Header name. type: string value: description: Header value. type: string required: - name - value default: - name: "Content-Type" value: "application/json" template: description: | Used to generate the request payload. Template used to generate webhook request body. The template may reference fields EventID, Kind, InstanceID, NodeName, and StartTime. See https://pkg.go.dev/text/template documentation for template format examples and explanation. type: string default: '{"text":"[NTH][Instance Interruption] EventID: {{ .EventID }} - Kind: {{ .Kind }} - Instance: {{ .InstanceID }} - Node: {{ .NodeName }} - Start Time: {{ .StartTime }}"}' status: description: TerminatorStatus defines the observed state of Terminator type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: []