Materialize Operator Configuration

Configure the Materialize operator

To configure the Materialize operator, you can:

  • Use a configuration YAML file (e.g., values.yaml) that specifies the configuration values and then install the chart with the -f flag:

    # Assumes you have added the Materialize operator Helm chart repository
    helm install my-materialize-operator materialize/materialize-operator \
       -f /path/to/your/config/values.yaml
    
  • Specify each parameter using the --set key=value[,key=value] argument to helm install. For example:

    # Assumes you have added the Materialize operator Helm chart repository
    helm install my-materialize-operator materialize/materialize-operator  \
      --set observability.podMetrics.enabled=true
    
Parameter Default
balancerd.affinity nil
balancerd.defaultResources {"limits":{"memory":"256Mi"},"requests":{"cpu":"500m","memory":"256Mi"}}
balancerd.enabled true
balancerd.nodeSelector nil
balancerd.tolerations nil
clusterd.affinity nil
clusterd.nodeSelector {}
clusterd.scratchfsNodeSelector {"materialize.cloud/scratch-fs":"true"}
clusterd.swapNodeSelector {"materialize.cloud/swap":"true"}
clusterd.tolerations nil
console.affinity nil
console.defaultResources {"limits":{"memory":"256Mi"},"requests":{"cpu":"500m","memory":"256Mi"}}
console.enabled true
console.imageTagMapOverride {}
console.nodeSelector nil
console.tolerations nil
environmentd.affinity nil
environmentd.defaultResources {"limits":{"memory":"4Gi"},"requests":{"cpu":"1","memory":"4095Mi"}}
environmentd.nodeSelector {}
environmentd.tolerations nil
networkPolicies.egress {"cidrs":["0.0.0.0/0"],"enabled":false}
networkPolicies.enabled false
networkPolicies.ingress {"cidrs":["0.0.0.0/0"],"enabled":false}
networkPolicies.internal {"enabled":false}
observability.enabled true
observability.podMetrics.enabled false
observability.prometheus.scrapeAnnotations.enabled true
operator.additionalMaterializeCRDColumns nil
operator.affinity nil
operator.args.enableInternalStatementLogging true
operator.args.enableLicenseKeyChecks false
operator.args.startupLogFilter "INFO,mz_orchestratord=TRACE"
operator.cloudProvider.providers.aws.accountID ""
operator.cloudProvider.providers.aws.enabled false
operator.cloudProvider.providers.aws.iam.roles.connection ""
operator.cloudProvider.providers.aws.iam.roles.environment ""
operator.cloudProvider.providers.gcp {"enabled":false}
operator.cloudProvider.region "kind"
operator.cloudProvider.type "local"
operator.clusters.defaultReplicationFactor.analytics 0
operator.clusters.defaultReplicationFactor.probe 0
operator.clusters.defaultReplicationFactor.support 0
operator.clusters.defaultReplicationFactor.system 0
operator.clusters.defaultSizes.analytics "25cc"
operator.clusters.defaultSizes.catalogServer "25cc"
operator.clusters.defaultSizes.default "25cc"
operator.clusters.defaultSizes.probe "mz_probe"
operator.clusters.defaultSizes.support "25cc"
operator.clusters.defaultSizes.system "25cc"
operator.clusters.swap_enabled true
operator.image.pullPolicy "IfNotPresent"
operator.image.repository "materialize/orchestratord"
operator.image.tag "v26.0.0-dev.0--pr.gfa8ba620176a7d0f9abcc64f89f5d21db80c6d94"
operator.nodeSelector nil
operator.resources.limits {"memory":"512Mi"}
operator.resources.requests {"cpu":"100m","memory":"512Mi"}
operator.secretsController "kubernetes"
operator.tolerations nil
rbac.create true
schedulerName nil
serviceAccount.create true
serviceAccount.name "orchestratord"
storage.storageClass.allowVolumeExpansion false
storage.storageClass.create false
storage.storageClass.name ""
storage.storageClass.parameters {"fsType":"ext4","storage":"lvm","volgroup":"instance-store-vg"}
storage.storageClass.provisioner ""
storage.storageClass.reclaimPolicy "Delete"
storage.storageClass.volumeBindingMode "WaitForFirstConsumer"
telemetry.enabled true
telemetry.segmentApiKey "hMWi3sZ17KFMjn2sPWo9UJGpOQqiba4A"
telemetry.segmentClientSide true
tls.defaultCertificateSpecs {}

Parameters

balancerd parameters

balancerd.affinity

Default: nil

Affinity to use for balancerd pods spawned by the operator

balancerd.defaultResources

Default: {"limits":{"memory":"256Mi"},"requests":{"cpu":"500m","memory":"256Mi"}}

Default resources if not set in the Materialize CR

balancerd.enabled

Default: true

Flag to indicate whether to create balancerd pods for the environments

balancerd.nodeSelector

Default: nil

Node selector to use for balancerd pods spawned by the operator

balancerd.tolerations

Default: nil

Tolerations to use for balancerd pods spawned by the operator

clusterd parameters

clusterd.affinity

Default: nil

Affinity to use for clusterd pods spawned by the operator

clusterd.nodeSelector

Default: {}

Node selector to use for all clusterd pods spawned by the operator

clusterd.scratchfsNodeSelector

Default: {"materialize.cloud/scratch-fs":"true"}

Additional node selector to use for clusterd pods when using an LVM scratch disk. This will be merged with the values in nodeSelector.

clusterd.swapNodeSelector

Default: {"materialize.cloud/swap":"true"}

Additional node selector to use for clusterd pods when using swap. This will be merged with the values in nodeSelector.

clusterd.tolerations

Default: nil

Tolerations to use for clusterd pods spawned by the operator

console parameters

console.affinity

Default: nil

Affinity to use for console pods spawned by the operator

console.defaultResources

Default: {"limits":{"memory":"256Mi"},"requests":{"cpu":"500m","memory":"256Mi"}}

Default resources if not set in the Materialize CR

console.enabled

Default: true

Flag to indicate whether to create console pods for the environments

console.imageTagMapOverride

Default: {}

Override the mapping of environmentd versions to console versions

console.nodeSelector

Default: nil

Node selector to use for console pods spawned by the operator

console.tolerations

Default: nil

Tolerations to use for console pods spawned by the operator

environmentd parameters

environmentd.affinity

Default: nil

Affinity to use for environmentd pods spawned by the operator

environmentd.defaultResources

Default: {"limits":{"memory":"4Gi"},"requests":{"cpu":"1","memory":"4095Mi"}}

Default resources if not set in the Materialize CR

environmentd.nodeSelector

Default: {}

Node selector to use for environmentd pods spawned by the operator

environmentd.tolerations

Default: nil

Tolerations to use for environmentd pods spawned by the operator

networkPolicies parameters

networkPolicies.egress

Default: {"cidrs":["0.0.0.0/0"],"enabled":false}

egress from Materialize pods to sources and sinks

networkPolicies.enabled

Default: false

Whether to enable network policies for securing communication between pods

networkPolicies.ingress

Default: {"cidrs":["0.0.0.0/0"],"enabled":false}

Whether to enable ingress to the SQL and HTTP interfaces on environmentd or balancerd

networkPolicies.internal

Default: {"enabled":false}

Whether to enable internal communication between Materialize pods

observability parameters

observability.enabled

Default: true

Whether to enable observability features

observability.podMetrics.enabled

Default: false

Whether to enable the pod metrics scraper which populates the Environment Overview Monitoring tab in the web console (requires metrics-server to be installed)

observability.prometheus.scrapeAnnotations.enabled

Default: true

Whether to annotate pods with common keys used for prometheus scraping.

operator parameters

operator.additionalMaterializeCRDColumns

Default: nil

Additional columns to display when printing the Materialize CRD in table format.

operator.affinity

Default: nil

Affinity to use for the operator pod

operator.args.enableInternalStatementLogging

Default: true

operator.args.enableLicenseKeyChecks

Default: false

operator.args.startupLogFilter

Default: "INFO,mz_orchestratord=TRACE"

Log filtering settings for startup logs

operator.cloudProvider.providers.aws.accountID

Default: ""

When using AWS, accountID is required

operator.cloudProvider.providers.aws.enabled

Default: false

operator.cloudProvider.providers.aws.iam.roles.connection

Default: ""

ARN for CREATE CONNECTION feature

operator.cloudProvider.providers.aws.iam.roles.environment

Default: ""

ARN of the IAM role for environmentd

operator.cloudProvider.providers.gcp

Default: {"enabled":false}

GCP Configuration (placeholder for future use)

operator.cloudProvider.region

Default: "kind"

Common cloud provider settings

operator.cloudProvider.type

Default: "local"

Specifies cloud provider. Valid values are ‘aws’, ‘gcp’, ‘azure’ , ‘generic’, or ’local’

operator.clusters.defaultReplicationFactor.analytics

Default: 0

operator.clusters.defaultReplicationFactor.probe

Default: 0

operator.clusters.defaultReplicationFactor.support

Default: 0

operator.clusters.defaultReplicationFactor.system

Default: 0

operator.clusters.defaultSizes.analytics

Default: "25cc"

operator.clusters.defaultSizes.catalogServer

Default: "25cc"

operator.clusters.defaultSizes.default

Default: "25cc"

operator.clusters.defaultSizes.probe

Default: "mz_probe"

operator.clusters.defaultSizes.support

Default: "25cc"

operator.clusters.defaultSizes.system

Default: "25cc"

operator.clusters.swap_enabled

Default: true

Configure sizes such that the pod QoS class is not Guaranteed, as is required for swap to be enabled. Disk doesn’t make much sense with swap, as swap performs better than lgalloc, so it also gets disabled.

operator.image.pullPolicy

Default: "IfNotPresent"

Policy for pulling the image: “IfNotPresent” avoids unnecessary re-pulling of images

operator.image.repository

Default: "materialize/orchestratord"

The Docker repository for the operator image

operator.image.tag

Default: "v26.0.0-dev.0–pr.gfa8ba620176a7d0f9abcc64f89f5d21db80c6d94"

The tag/version of the operator image to be used

operator.nodeSelector

Default: nil

Node selector to use for the operator pod

operator.resources.limits

Default: {"memory":"512Mi"}

Resource limits for the operator’s CPU and memory

operator.resources.requests

Default: {"cpu":"100m","memory":"512Mi"}

Resources requested by the operator for CPU and memory

operator.secretsController

Default: "kubernetes"

Which secrets controller to use for storing secrets. Valid values are ‘kubernetes’ and ‘aws-secrets-manager’. Setting ‘aws-secrets-manager’ requires a configured AWS cloud provider and IAM role for the environment with Secrets Manager permissions.

operator.tolerations

Default: nil

Tolerations to use for the operator pod

rbac parameters

rbac.create

Default: true

Whether to create necessary RBAC roles and bindings

schedulerName parameters

schedulerName

Default: nil

Optionally use a non-default kubernetes scheduler.

serviceAccount parameters

serviceAccount.create

Default: true

Whether to create a new service account for the operator

serviceAccount.name

Default: "orchestratord"

The name of the service account to be created

storage parameters

storage.storageClass.allowVolumeExpansion

Default: false

storage.storageClass.create

Default: false

Set to false to use an existing StorageClass instead. Refer to the Kubernetes StorageClass documentation

storage.storageClass.name

Default: ""

Name of the StorageClass to create/use: eg “openebs-lvm-instance-store-ext4”

storage.storageClass.parameters

Default: {"fsType":"ext4","storage":"lvm","volgroup":"instance-store-vg"}

Parameters for the CSI driver

storage.storageClass.provisioner

Default: ""

CSI driver to use, eg “local.csi.openebs.io”

storage.storageClass.reclaimPolicy

Default: "Delete"

storage.storageClass.volumeBindingMode

Default: "WaitForFirstConsumer"

telemetry parameters

telemetry.enabled

Default: true

telemetry.segmentApiKey

Default: "hMWi3sZ17KFMjn2sPWo9UJGpOQqiba4A"

telemetry.segmentClientSide

Default: true

tls parameters

tls.defaultCertificateSpecs

Default: {}

See also

Back to top ↑