Skip to content

Latest commit

 

History

History
196 lines (135 loc) · 7.23 KB

configuration.rst

File metadata and controls

196 lines (135 loc) · 7.23 KB

Configuration

The configuration for the CrateDB Kubernetes Operator follows the 12 Factor Principles and uses environment variables. All environment variables are expected to use upper case letters and must be prefixed with CRATEDB_OPERATOR_.

.. envvar:: BOOTSTRAP_TIMEOUT

   When deploying a cluster, the operator will perform some bootstrap tasks as
   documented in :ref:`the Concepts section <concept-bootstrapping>`. The
   operator will wait at most this many seconds until it considers the
   bootstrapping to have failed. Set to ``0`` to disable timeouts.

   The default value is ``1800`` seconds.

.. envvar:: CLOUD_PROVIDER

   Some cloud providers require a specific setup for CrateDB nodes, due to the
   availability guarantees of the underlying infrastructure. For example, in
   AWS, a block storage used by CrateDB as a data partition is only available
   in one availability zone (AZ) of that corresponding AWS region. If all
   copies of some shard were located in the same AZ, an outage of that AZ would
   imply some data being unavailable in CrateDB.
   This variable is optional. If it is set, make sure that the underlying
   Kubernetes Nodes are configured with availability zones.
   The operator will then use this information to ensure that CrateDB nodes are
   spread across different availability zones. This is done by setting the
   ``node.attr.zone`` attribute on CrateDB nodes.
   The operator also sets annotations on the Kubernetes Loadbalancers, based on
   ``CLOUD_PROVIDER``.

   To ensure CrateDB properly replicates shards to other nodes in different
   availability zones, one can make use of CrateDB's :ref:`routing allocation
   awareness <cratedb:conf-routing-allocation-awareness>`. For example,
   deploying a cluster in AWS' ``eu-central-1`` region:

   .. code-block:: yaml

      kind: CrateDB
      spec:
        cluster:
          settings:
            cluster.routing.allocation.awareness.attributes: "zone"
            cluster.routing.allocation.awareness.force.zone.values: "eu-central-1a,eu-central-1b,eu-central-1c"

   Allowed values:

   - ``aws``
   - ``azure``

   Under the hood, the operator will pass a ``zone`` attribute to all CrateDB
   nodes. This attribute can also be defined explicitly or override the one set
   by the operator. To do this on a cluster level, set ``.spec.cluster.settings``:

   .. code-block:: yaml

      kind: CrateDB
      spec:
        cluster:
          settings:
            node.attr.zone: "some-value"

   To set or override the attribute on a node type level, set it in
   ``.spec.nodes.master.settings`` or ``.spec.nodes.data.*.settings``.

.. envvar:: CLUSTER_BACKUP_IMAGE

   When enabling backups for a cluster, the operator deploys a Prometheus_
   exporter to be scraped for backup metrics, and a Kubernetes CronJob that
   creates backups every defined interval. If :envvar:`WEBHOOK_URL` and
   related credentials are specified, the backup CronJob will post backup
   creation events back to the webhook URL. This variable needs to point to a
   Docker image *and* tag to use it for the exporter and CronJob.

.. envvar:: DEBUG_VOLUME_SIZE

   The volume size for the ``PersistentVolume`` that is used as a storage
   location for Java heap dumps.

   The default value is ``256 GiB``.

.. envvar:: DEBUG_VOLUME_STORAGE_CLASS

   The Kubernetes storage class name for the ``PersistentVolume`` that is
   used as a storage location for Java heap dumps.

   The default value is ``crate-local``.

.. envvar:: IMAGE_PULL_SECRETS

   A comma-separated list of Kubernetes image pull secrets. Each Kubernetes
   resource created by the operator will have all these secrets attached.

   The default value is an empty list.

.. envvar:: JMX_EXPORTER_VERSION

   (**Required**)

   CrateDB exports metrics via the JMX protocol. This is the version of the
   exporter to be used.

.. envvar:: KUBECONFIG

   If defined, it needs to point to a valid Kubernetes configuration file. Due
   to the underlying libraries, multiple paths, such as
   ``/path/to/kube.conf:/another/path.conf``, are not allowed. For
   compatibility and ease of use, if ``CRATEDB_OPERATOR_KUBECONFIG`` is not
   defined, the operator will also look for the ``KUBECONFIG`` environment
   variable. Default is ``None`` and leads to "in-cluster" configuration.

.. envvar:: LOG_LEVEL

   The log level used for log messages emitted by the CrateDB Kubernetes
   Operator. Valid values are ``CRITICAL``, ``ERROR``, ``WARNING``, ``INFO``,
   or ``DEBUG``.

   The default value is ``INFO``.

.. envvar:: ROLLING_RESTART_TIMEOUT

   A rolling cluster restart takes some time, depending on the cluster size,
   number of nodes, amount of data, etc. After some change operations, such as
   cluster upgrades, the operator will trigger a rolling cluster restart. The
   operator will wait at most this many seconds until it considers the rolling
   restart to have failed. Set to ``0`` to disable timeouts.

   The default value is ``3600`` seconds.

.. envvar:: SCALING_TIMEOUT

   When scaling a cluster, the operator will sometimes need to deallocate some
   CrateDB nodes before turning them off. To ensure the operator keeps
   functioning on the resource, scaling operations will be aborted after this
   many seconds and will be considered to have failed. Set to ``0`` to disable
   timeouts.

   The default value is ``3600`` seconds.

.. envvar:: TESTING

   During development or testing, some constraints enforced by the operator may
   be obstructive. One such example is the Kubernetes pod anti-affinity on all
   CrateDB pods, which guarantees that a single Kubernetes node failure doesn't
   take down several CrateDB nodes. This makes deploying a CrateDB cluster that
   has explicit master nodes impossible on a 3-node Kubernetes cluster, because
   there would be 3 master + *n* data nodes.

   Setting this to ``True`` will remove the constraint.

   .. danger::

      Do **not** set this variable when running the operator in production! It
      *will* impact the reliability of your CrateDB clusters!

   The default value is ``False``.

.. envvar:: WEBHOOK_PASSWORD

   Any webhook request submitted by the operator will include :rfc:`HTTP Basic
   Auth <7617>` credentials. This is the password.

   The default value is ``None``.

.. envvar:: WEBHOOK_URL

   The operator can optionally be configured to submit HTTP POST requests to an
   API upon certain events (see :ref:`concept-webhooks`). For that to work, the
   :envvar:`WEBHOOK_PASSWORD`, :envvar:`WEBHOOK_URL`, and
   :envvar:`WEBHOOK_USERNAME` need to be set.

   The default value is ``None``.

.. envvar:: WEBHOOK_USERNAME

   Any webhook request submitted by the operator will include :rfc:`HTTP Basic
   Auth <7617>` credentials. This is the username.

   The default value is ``None``.

.. envvar:: NO_DOWNTIME_STORAGE_EXPANSION

   Whether to perform volume expansion operations without suspending the cluster.
   For this to work, it must be supported by the underlying infrastructure. At the time
   of writing, this works on Azure AKS and AWS EKS if using the CSI drivers.

   By default, the operator will suspend the cluster while performing volume expansion,
   and resume it once the PVCs expand.

   The default value is ``False``.