This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Automation

Incident response automation

1 - Introduction

Automation introdution

The operations to improve the platform resiliency can be automated with the automation framework provided by the Resiliency Operator.

Use cases

Recovery from a disaster

After a disaster occurs in one of your platform assets, the automation framework help in the recovery of the platform.

Key concepts

Tasks

A Task represents a configurable, reusable unit of work. It defines a plugin with a specific configuration to be executed later.

TaskRuns

A TaskRun represents a single execution of a Task. When a TaskRun is created, it triggers the execution of the plugin defined in the Task.

2 - Plugins

Automation plugins

2.1 - Custom image

Run custom container image in Kubernetes cluster.

2.1.1 - Introduction

Custom image plugin introduction

The custom-image plugins enables the deployment of a custom image to be executed as Task. This is extremely useful to run custom logic and software in the resiliency patterns.

The Pod is deployed in the Kubernetes namespace where the Task has been created.

2.1.2 - Configuration

Plugin parameters and accepted values

Task

Configuration

NameDescriptionTypeRequired
imageContainer image to be deployedstringyes
commandThe command to be executed when the container starts[]stringyes

2.1.3 - Samples

Kubernetes to Kubernetes plugin Architecture

This is a list of samples of what can be perfomed as Task with the custom-image plugin.

Bash command

Run a bash command:

apiVersion: automation.astronetes.io/v1alpha1
kind: Task
metadata:
  name: hello-world
spec:
  plugin: custom-image
  config:
    image: busybox
    command:
      - echo
      - "hello world"

Kubectl command

Execute a kubectl command:

apiVersion: automation.astronetes.io/v1alpha1
kind: Task
metadata:
  name: kubectl
spec:
  plugin: custom-image
  config:
    image: bitnami/kubectl:1.27
    command:
      - kubectl
      - cluster-info
    clusterRole: cluster-admin

2.2 - Kubernetes object transformation

Transform objects in a Kubernetes cluster.

2.2.1 - Introduction

Plugin introduction

The custom-image plugins enables the deployment of a custom image to be executed as Task. This is extremely useful to run custom logic and software in the resiliency patterns.

2.2.2 - Configuration

Plugin parameters and accepted values

Task

Configuration

NameDescriptionTypeRequired
imageContainer image to be deployedstringyes
commandThe command to be executed when the container starts[]stringyes

2.3 - Run synchronization

Run a synchronizatino from a template

2.3.1 - Introduction

Introduction for run synchronization plugin

This plugins allows the creation of new Synchronization objects on demands, using a custom template.

Use cases

Disaster Recovery

Create a Synchronization process to restore data after a disaster occurs

Computing offloading

Explaind the platform offloading the applications in another cloud provider.

2.3.2 - Configuration

Configuration for run synchronization plugin

Introduction

The Task can be configured with some specific parameters using the .spec.config attribute.

Required

Plugin

The .spec.plugin reference to the plugin to be used by the Task. This value must be set to run-synchronization.

Example:

apiVersion: automation.astronetes.io/v1alpha1
kind: Task
metadata:
  name: example
spec:
  plugin: run-synchronization
  ...

Synchronization spec

Configure the synchronization spec according to the plugin to be used by the synchronization.

Example:

apiVersion: automation.astronetes.io/v1alpha1
kind: Task
metadata:
  name: set-replica-to-1
spec:
  plugin: run-synchronization
  config:
    template:
      spec:
        plugin: kubernetes-to-kubernetes
        config:
          sourceName: ...
          destinationName: ...
          ...

Optional

Synchronization annotations

The annotations for the Synchronization object can be configured using the .spec.config.template.metadata.annotations field.

Example:

apiVersion: automation.astronetes.io/v1alpha1
kind: Task
metadata:
  name: set-replica-to-1
spec:
  plugin: run-synchronization
  config:
    template:
      metadata:
        annotations:
          env: dev
      spec:
        plugin: kuberentes-to-kubernetes
        config:
          sourceName: ...
          destinationName: ...
          ...

Synchronization labels

The labels for the Synchronization object can be configured using the .spec.config.template.metadata.labels field.

Example:

apiVersion: automation.astronetes.io/v1alpha1
kind: Task
metadata:
  name: set-replica-to-1
spec:
  plugin: run-synchronization
  config:
    template:
      metadata:
        labels:
          env: dev
      spec:
        plugin: kuberentes-to-kubernetes
        config:
          sourceName: ...
          destinationName: ...
          ...

2.3.3 - API Reference

Configuration details

Config

FieldDescriptionTypeRequired
templateTemplatetrue

Template

FieldDescriptionTypeRequired
specSynchronizationSpectrue

SynchronizationSpec

SynchronizationSpec defines the desired state of Synchronization

FieldDescriptionTypeRequired
restartPolicyRestart policyRestartPolicyfalse
pluginSynchronization pluginSynchronizationPlugintrue
configSynchronization configJSONtrue

SynchronizationPlugin

FieldDescriptionTypeRequired