New to KubeDB? Please start here.

IgniteOpsRequest

What is IgniteOpsRequest

IgniteOpsRequest is a Kubernetes Custom Resource Definitions (CRD). It provides a declarative configuration for Ignite administrative operations like database version updating, horizontal scaling, vertical scaling etc. in a Kubernetes native way.

IgniteOpsRequest CRD Specifications

Like any official Kubernetes resource, a IgniteOpsRequest has TypeMeta, ObjectMeta, Spec and Status sections.

Here, some sample IgniteOpsRequest CRs for different administrative operations is given below:

Sample IgniteOpsRequest for Horizontal Scaling of Database Cluster:

apiVersion: ops.kubedb.com/v1alpha1
kind: IgniteOpsRequest
metadata:
  name: ignite-horizontal-scale-up
  namespace: demo
spec:
  type: HorizontalScaling
  databaseRef:
    name: ignite
  horizontalScaling:
    node: 3

Sample IgniteOpsRequest for Vertical Scaling of Database:

apiVersion: ops.kubedb.com/v1alpha1
kind: IgniteOpsRequest
metadata:
  name: igops-vscale
  namespace: demo
spec:
  type: VerticalScaling
  databaseRef:
    name: ig
  verticalScaling:
    node:
      resources:
        requests:
          memory: "2Gi"
          cpu: "1"
        limits:
          memory: "2Gi"
          cpu: "1"
  timeout: 5m
  apply: IfReady

Sample IgniteOpsRequest Objects for Reconfiguring Ignite database with config:

apiVersion: ops.kubedb.com/v1alpha1
kind: IgniteOpsRequest
metadata:
  name: reconfigure-ig-cluster
  namespace: demo
spec:
  type: Reconfigure
  databaseRef:
    name: ig-cluster
  configuration:
    configSecret:
      name: new-custom-config
  timeout: 5m
  apply: IfReady

Sample IgniteOpsRequest Objects for Volume Expansion of Ignite:

apiVersion: ops.kubedb.com/v1alpha1
kind: IgniteOpsRequest
metadata:
  name: igops-volume-exp-standalone
  namespace: demo
spec:
  type: VolumeExpansion
  databaseRef:
    name: ig-standalone
  volumeExpansion:
    node: 2Gi
    mode: Online

Sample IgniteOpsRequest Objects for Reconfiguring TLS of the database:

apiVersion: ops.kubedb.com/v1alpha1
kind: IgniteOpsRequest
metadata:
  name: igops-add-tls
  namespace: demo
spec:
  type: ReconfigureTLS
  databaseRef:
    name: ig
  tls:
    issuerRef:
      name: ig-issuer
      kind: Issuer
      apiGroup: "cert-manager.io"
    certificates:
      - alias: client
        subject:
          organizations:
            - ignite
          organizationalUnits:
            - client
  timeout: 5m
  apply: IfReady
apiVersion: ops.kubedb.com/v1alpha1
kind: IgniteOpsRequest
metadata:
  name: igops-rotate
  namespace: demo
spec:
  type: ReconfigureTLS
  databaseRef:
    name: ig
  tls:
    rotateCertificates: true
apiVersion: ops.kubedb.com/v1alpha1
kind: IgniteOpsRequest
metadata:
  name: ig-change-issuer
  namespace: demo
spec:
  type: ReconfigureTLS
  databaseRef:
    name: ig
  tls:
    issuerRef:
      name: ig-new-issuer
      kind: Issuer
      apiGroup: "cert-manager.io"
apiVersion: ops.kubedb.com/v1alpha1
kind: IgniteOpsRequest
metadata:
  name: ig-ops-remove
  namespace: demo
spec:
  type: ReconfigureTLS
  databaseRef:
    name: ig
  tls:
    remove: true

Here, we are going to describe the various sections of a IgniteOpsRequest crd.

A IgniteOpsRequest object has the following fields in the spec section.

spec.databaseRef

spec.databaseRef is a required field that point to the Ignite object for which the administrative operations will be performed. This field consists of the following sub-field:

  • spec.databaseRef.name : specifies the name of the Ignite object.

spec.type

spec.type specifies the kind of operation that will be applied to the database. Currently, the following types of operations are allowed in IgniteOpsRequest.

  • UpdateVersion
  • HorizontalScaling
  • VerticalScaling
  • VolumeExpansion
  • Reconfigure
  • ReconfigureTLS
  • Restart