export function spotInterruptHandler()

in packages/@aws-cdk/aws-eks-legacy/lib/spot-interrupt-handler.ts [8:175]


export function spotInterruptHandler(nodeSelector: { [name: string]: string } = DEFAULT_NODE_SELECTOR) {
  return [
    {
      kind: 'ClusterRole',
      apiVersion: 'rbac.authorization.k8s.io/v1',
      metadata: {
        name: 'node-termination-handler',
        namespace: 'default',
      },
      rules: [
        {
          apiGroups: [
            'apps',
          ],
          resources: [
            'daemonsets',
          ],
          verbs: [
            'get',
            'delete',
          ],
        },
        {
          apiGroups: [
            '',
          ],
          resources: [
            '*',
          ],
          verbs: [
            '*',
          ],
        },
        {
          apiGroups: [
            'rbac.authorization.k8s.io',
          ],
          resources: [
            '*',
          ],
          verbs: [
            '*',
          ],
        },
        {
          apiGroups: [
            'apiextensions.k8s.io',
          ],
          resources: [
            'customresourcedefinitions',
          ],
          verbs: [
            'get',
            'list',
            'watch',
            'create',
            'delete',
          ],
        },
      ],
    },
    {
      apiVersion: 'v1',
      kind: 'ServiceAccount',
      metadata: {
        name: 'node-termination-handler',
      },
    },
    {
      kind: 'ClusterRoleBinding',
      apiVersion: 'rbac.authorization.k8s.io/v1',
      metadata: {
        name: 'node-termination-handler',
        namespace: 'default',
      },
      subjects: [
        {
          kind: 'ServiceAccount',
          name: 'node-termination-handler',
          namespace: 'default',
        },
      ],
      roleRef: {
        kind: 'ClusterRole',
        name: 'node-termination-handler',
        apiGroup: 'rbac.authorization.k8s.io',
      },
    },
    {
      apiVersion: 'apps/v1beta2',
      kind: 'DaemonSet',
      metadata: {
        name: 'node-termination-handler',
        namespace: 'default',
      },
      spec: {
        selector: {
          matchLabels: {
            app: 'node-termination-handler',
          },
        },
        template: {
          metadata: {
            labels: {
              app: 'node-termination-handler',
            },
          },
          spec: {
            serviceAccountName: 'node-termination-handler',
            containers: [
              {
                name: 'node-termination-handler',
                image: 'amazon/aws-node-termination-handler:v1.0.0',
                imagePullPolicy: 'Always',
                env: [
                  {
                    name: 'NODE_NAME',
                    valueFrom: {
                      fieldRef: {
                        fieldPath: 'spec.nodeName',
                      },
                    },
                  },
                  {
                    name: 'POD_NAME',
                    valueFrom: {
                      fieldRef: {
                        fieldPath: 'metadata.name',
                      },
                    },
                  },
                  {
                    name: 'NAMESPACE',
                    valueFrom: {
                      fieldRef: {
                        fieldPath: 'metadata.namespace',
                      },
                    },
                  },
                  {
                    name: 'SPOT_POD_IP',
                    valueFrom: {
                      fieldRef: {
                        fieldPath: 'status.podIP',
                      },
                    },
                  },
                ],
                resources: {
                  requests: {
                    memory: '64Mi',
                    cpu: '50m',
                  },
                  limits: {
                    memory: '128Mi',
                    cpu: '100m',
                  },
                },
              },
            ],
            nodeSelector,
          },
        },
      },
    },

  ];
}