Microsoft.IoTOperations instances/brokers 2024-07-01-preview

Bicep resource definition

The instances/brokers resource type can be deployed with operations that target:

For a list of changed properties in each API version, see change log.

Resource format

To create a Microsoft.IoTOperations/instances/brokers resource, add the following Bicep to your template.

resource symbolicname 'Microsoft.IoTOperations/instances/brokers@2024-07-01-preview' = {
  parent: resourceSymbolicName
  extendedLocation: {
    name: 'string'
    type: 'string'
  }
  name: 'string'
  properties: {
    advanced: {
      clients: {
        maxKeepAliveSeconds: int
        maxMessageExpirySeconds: int
        maxPacketSizeBytes: int
        maxReceiveMaximum: int
        maxSessionExpirySeconds: int
        subscriberQueueLimit: {
          length: int
          strategy: 'string'
        }
      }
      encryptInternalTraffic: 'string'
      internalCerts: {
        duration: 'string'
        privateKey: {
          algorithm: 'string'
          rotationPolicy: 'string'
        }
        renewBefore: 'string'
      }
    }
    cardinality: {
      backendChain: {
        partitions: int
        redundancyFactor: int
        workers: int
      }
      frontend: {
        replicas: int
        workers: int
      }
    }
    diagnostics: {
      logs: {
        level: 'string'
        opentelemetryExportConfig: {
          intervalSeconds: int
          level: 'string'
          otlpGrpcEndpoint: 'string'
        }
      }
      metrics: {
        opentelemetryExportConfig: {
          intervalSeconds: int
          otlpGrpcEndpoint: 'string'
        }
        prometheusPort: int
      }
      selfCheck: {
        intervalSeconds: int
        mode: 'string'
        timeoutSeconds: int
      }
      traces: {
        cacheSizeMegabytes: int
        mode: 'string'
        opentelemetryExportConfig: {
          intervalSeconds: int
          otlpGrpcEndpoint: 'string'
        }
        selfTracing: {
          intervalSeconds: int
          mode: 'string'
        }
        spanChannelCapacity: int
      }
    }
    diskBackedMessageBuffer: {
      ephemeralVolumeClaimSpec: {
        accessModes: [
          'string'
        ]
        dataSource: {
          apiGroup: 'string'
          kind: 'string'
          name: 'string'
        }
        dataSourceRef: {
          apiGroup: 'string'
          kind: 'string'
          name: 'string'
          namespace: 'string'
        }
        resources: {
          limits: {
            {customized property}: 'string'
          }
          requests: {
            {customized property}: 'string'
          }
        }
        selector: {
          matchExpressions: [
            {
              key: 'string'
              operator: 'string'
              values: [
                'string'
              ]
            }
          ]
          matchLabels: {
            {customized property}: 'string'
          }
        }
        storageClassName: 'string'
        volumeMode: 'string'
        volumeName: 'string'
      }
      maxSize: 'string'
      persistentVolumeClaimSpec: {
        accessModes: [
          'string'
        ]
        dataSource: {
          apiGroup: 'string'
          kind: 'string'
          name: 'string'
        }
        dataSourceRef: {
          apiGroup: 'string'
          kind: 'string'
          name: 'string'
          namespace: 'string'
        }
        resources: {
          limits: {
            {customized property}: 'string'
          }
          requests: {
            {customized property}: 'string'
          }
        }
        selector: {
          matchExpressions: [
            {
              key: 'string'
              operator: 'string'
              values: [
                'string'
              ]
            }
          ]
          matchLabels: {
            {customized property}: 'string'
          }
        }
        storageClassName: 'string'
        volumeMode: 'string'
        volumeName: 'string'
      }
    }
    generateResourceLimits: {
      cpu: 'string'
    }
    memoryProfile: 'string'
  }
}

Property values

AdvancedSettings

Name Description Value
clients Configurations related to All Clients. ClientConfig
encryptInternalTraffic The setting to enable or disable encryption of internal Traffic. 'Disabled'
'Enabled'
internalCerts Certificate rotation and private key configuration. CertManagerCertOptions

BackendChain

Name Description Value
partitions The desired number of physical backend partitions. int

Constraints:
Min value = 1
Max value = 16 (required)
redundancyFactor The desired numbers of backend replicas (pods) in a physical partition. int

Constraints:
Min value = 1
Max value = 5 (required)
workers Number of logical backend workers per replica (pod). int

Constraints:
Min value = 1
Max value = 16

BrokerDiagnostics

Name Description Value
logs Diagnostic log settings for the resource. DiagnosticsLogs
metrics The metrics settings for the resource. Metrics
selfCheck The self check properties. SelfCheck
traces The trace properties. Traces

BrokerProperties

Name Description Value
advanced Advanced settings of Broker. AdvancedSettings
cardinality The cardinality details of the broker. Cardinality
diagnostics Spec defines the desired identities of Broker diagnostics settings. BrokerDiagnostics
diskBackedMessageBuffer Settings of Disk Backed Message Buffer. DiskBackedMessageBuffer
generateResourceLimits This setting controls whether Kubernetes CPU resource limits are requested. Increasing the number of replicas or workers proportionally increases the amount of CPU resources requested. If this setting is enabled and there are insufficient CPU resources, an error will be emitted. GenerateResourceLimits
memoryProfile Memory profile of Broker. 'High'
'Low'
'Medium'
'Tiny'

Cardinality

Name Description Value
backendChain The backend broker desired properties BackendChain (required)
frontend The frontend desired properties Frontend (required)

CertManagerCertOptions

Name Description Value
duration Lifetime of certificate. Must be specified using a Go time.Duration format (h m s). E.g. 240h for 240 hours and 45m for 45 minutes. string (required)
privateKey Configuration of certificate private key. CertManagerPrivateKey (required)
renewBefore When to begin renewing certificate. Must be specified using a Go time.Duration format (h m s). E.g. 240h for 240 hours and 45m for 45 minutes. string (required)

CertManagerPrivateKey

Name Description Value
algorithm algorithm for private key. 'Ec256'
'Ec384'
'Ec521'
'Ed25519'
'Rsa2048'
'Rsa4096'
'Rsa8192' (required)
rotationPolicy cert-manager private key rotationPolicy. 'Always'
'Never' (required)

ClientConfig

Name Description Value
maxKeepAliveSeconds Upper bound of a client's Keep Alive, in seconds. int

Constraints:
Min value = 0
Max value = 65535
maxMessageExpirySeconds Upper bound of Message Expiry Interval, in seconds. int

Constraints:
Min value = 1
Max value = 4294967295
maxPacketSizeBytes Max message size for a packet in Bytes. int

Constraints:
Min value = 1
Max value = 268435456
maxReceiveMaximum Upper bound of Receive Maximum that a client can request in the CONNECT packet. int

Constraints:
Min value = 1
Max value = 65535
maxSessionExpirySeconds Upper bound of Session Expiry Interval, in seconds. int

Constraints:
Min value = 1
Max value = 4294967295
subscriberQueueLimit The limit on the number of queued messages for a subscriber. SubscriberQueueLimit

DiagnosticsLogs

Name Description Value
level The log level. Examples - 'debug', 'info', 'warn', 'error', 'trace'. string
opentelemetryExportConfig The open telemetry export configuration. OpenTelemetryLogExportConfig

DiskBackedMessageBuffer

Name Description Value
ephemeralVolumeClaimSpec Use the specified persistent volume claim template to mount a "generic ephemeral volume" for the message buffer. See <https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes> for details. VolumeClaimSpec
maxSize The max size of the message buffer on disk. If a PVC template is specified using one of ephemeralVolumeClaimSpec or persistentVolumeClaimSpec, then this size is used as the request and limit sizes of that template. If neither ephemeralVolumeClaimSpec nor persistentVolumeClaimSpec are specified, then an emptyDir volume is mounted with this size as its limit. See <https://kubernetes.io/docs/concepts/storage/volumes/#emptydir> for details. string

Constraints:
Pattern = ^[0-9]+[KMGTPE]$ (required)
persistentVolumeClaimSpec Use the specified persistent volume claim template to mount a persistent volume for the message buffer. VolumeClaimSpec

ExtendedLocation

Name Description Value
name The name of the extended location. string (required)
type Type of ExtendedLocation. 'CustomLocation' (required)

Frontend

Name Description Value
replicas The desired number of frontend instances (pods). int

Constraints:
Min value = 1
Max value = 16 (required)
workers Number of logical frontend workers per instance (pod). int

Constraints:
Min value = 1
Max value = 16

GenerateResourceLimits

Name Description Value
cpu The toggle to enable/disable cpu resource limits. 'Disabled'
'Enabled'

KubernetesReference

Name Description Value
apiGroup APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. string
kind Kind is the type of resource being referenced string (required)
name Name is the name of resource being referenced string (required)
namespace Namespace is the namespace of the resource being referenced. This field is required when the resource has a namespace. string

LocalKubernetesReference

Name Description Value
apiGroup APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. string
kind Kind is the type of resource being referenced string (required)
name Name is the name of resource being referenced string (required)

Metrics

Name Description Value
opentelemetryExportConfig The open telemetry export configuration. OpenTelemetryExportConfig
prometheusPort The prometheus port to expose the metrics. int

Constraints:
Min value = 0
Max value = 65535

Microsoft.IoTOperations/instances/brokers

Name Description Value
extendedLocation Edge location of the resource. ExtendedLocation (required)
name The resource name string

Constraints:
Min length = 3
Max length = 63
Pattern = ^[a-z0-9][a-z0-9-]*[a-z0-9]$ (required)
parent In Bicep, you can specify the parent resource for a child resource. You only need to add this property when the child resource is declared outside of the parent resource.

For more information, see Child resource outside parent resource.
Symbolic name for resource of type: instances
properties The resource-specific properties for this resource. BrokerProperties

OpenTelemetryExportConfig

Name Description Value
intervalSeconds How often to export the metrics to the open telemetry collector. int

Constraints:
Min value = 1
Max value = 300
otlpGrpcEndpoint The open telemetry collector endpoint to export to. string (required)

OpenTelemetryLogExportConfig

Name Description Value
intervalSeconds How often to export the metrics to the open telemetry collector. int

Constraints:
Min value = 1
Max value = 300
level The log level. Examples - 'debug', 'info', 'warn', 'error', 'trace'. string
otlpGrpcEndpoint The open telemetry collector endpoint to export to. string (required)

SelfCheck

Name Description Value
intervalSeconds The self check interval. int

Constraints:
Min value = 30
Max value = 300
mode The toggle to enable/disable self check. 'Disabled'
'Enabled'
timeoutSeconds The timeout for self check. int

Constraints:
Min value = 5
Max value = 120

SelfTracing

Name Description Value
intervalSeconds The self tracing interval. int

Constraints:
Min value = 1
Max value = 300
mode The toggle to enable/disable self tracing. 'Disabled'
'Enabled'

SubscriberQueueLimit

Name Description Value
length The maximum length of the queue before messages start getting dropped. int

Constraints:
Min value = 1
strategy The strategy to use for dropping messages from the queue. 'DropOldest'
'None'

Traces

Name Description Value
cacheSizeMegabytes The cache size in megabytes. int

Constraints:
Min value = 1
Max value = 128
mode The toggle to enable/disable traces. 'Disabled'
'Enabled'
opentelemetryExportConfig The open telemetry export configuration. OpenTelemetryExportConfig
selfTracing The self tracing properties. SelfTracing
spanChannelCapacity The span channel capacity. int

Constraints:
Min value = 1000
Max value = 100000

VolumeClaimResourceRequirements

Name Description Value
limits Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ VolumeClaimResourceRequirementsLimits
requests Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ VolumeClaimResourceRequirementsRequests

VolumeClaimResourceRequirementsLimits

Name Description Value

VolumeClaimResourceRequirementsRequests

Name Description Value

VolumeClaimSpec

Name Description Value
accessModes AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 string[]
dataSource This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field. LocalKubernetesReference
dataSourceRef Specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. KubernetesReference
resources Resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources VolumeClaimResourceRequirements
selector A label query over volumes to consider for binding. VolumeClaimSpecSelector
storageClassName Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 string
volumeMode volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. This is a beta feature. string
volumeName VolumeName is the binding reference to the PersistentVolume backing this claim. string

VolumeClaimSpecSelector

Name Description Value
matchExpressions MatchExpressions is a list of label selector requirements. The requirements are ANDed. VolumeClaimSpecSelectorMatchExpressions[]
matchLabels MatchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. VolumeClaimSpecSelectorMatchLabels

VolumeClaimSpecSelectorMatchExpressions

Name Description Value
key key is the label key that the selector applies to. string (required)
operator operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. 'DoesNotExist'
'Exists'
'In'
'NotIn' (required)
values values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. string[]

VolumeClaimSpecSelectorMatchLabels

Name Description Value

ARM template resource definition

The instances/brokers resource type can be deployed with operations that target:

For a list of changed properties in each API version, see change log.

Resource format

To create a Microsoft.IoTOperations/instances/brokers resource, add the following JSON to your template.

{
  "type": "Microsoft.IoTOperations/instances/brokers",
  "apiVersion": "2024-07-01-preview",
  "name": "string",
  "extendedLocation": {
    "name": "string",
    "type": "string"
  },
  "properties": {
    "advanced": {
      "clients": {
        "maxKeepAliveSeconds": "int",
        "maxMessageExpirySeconds": "int",
        "maxPacketSizeBytes": "int",
        "maxReceiveMaximum": "int",
        "maxSessionExpirySeconds": "int",
        "subscriberQueueLimit": {
          "length": "int",
          "strategy": "string"
        }
      },
      "encryptInternalTraffic": "string",
      "internalCerts": {
        "duration": "string",
        "privateKey": {
          "algorithm": "string",
          "rotationPolicy": "string"
        },
        "renewBefore": "string"
      }
    },
    "cardinality": {
      "backendChain": {
        "partitions": "int",
        "redundancyFactor": "int",
        "workers": "int"
      },
      "frontend": {
        "replicas": "int",
        "workers": "int"
      }
    },
    "diagnostics": {
      "logs": {
        "level": "string",
        "opentelemetryExportConfig": {
          "intervalSeconds": "int",
          "level": "string",
          "otlpGrpcEndpoint": "string"
        }
      },
      "metrics": {
        "opentelemetryExportConfig": {
          "intervalSeconds": "int",
          "otlpGrpcEndpoint": "string"
        },
        "prometheusPort": "int"
      },
      "selfCheck": {
        "intervalSeconds": "int",
        "mode": "string",
        "timeoutSeconds": "int"
      },
      "traces": {
        "cacheSizeMegabytes": "int",
        "mode": "string",
        "opentelemetryExportConfig": {
          "intervalSeconds": "int",
          "otlpGrpcEndpoint": "string"
        },
        "selfTracing": {
          "intervalSeconds": "int",
          "mode": "string"
        },
        "spanChannelCapacity": "int"
      }
    },
    "diskBackedMessageBuffer": {
      "ephemeralVolumeClaimSpec": {
        "accessModes": [ "string" ],
        "dataSource": {
          "apiGroup": "string",
          "kind": "string",
          "name": "string"
        },
        "dataSourceRef": {
          "apiGroup": "string",
          "kind": "string",
          "name": "string",
          "namespace": "string"
        },
        "resources": {
          "limits": {
            "{customized property}": "string"
          },
          "requests": {
            "{customized property}": "string"
          }
        },
        "selector": {
          "matchExpressions": [
            {
              "key": "string",
              "operator": "string",
              "values": [ "string" ]
            }
          ],
          "matchLabels": {
            "{customized property}": "string"
          }
        },
        "storageClassName": "string",
        "volumeMode": "string",
        "volumeName": "string"
      },
      "maxSize": "string",
      "persistentVolumeClaimSpec": {
        "accessModes": [ "string" ],
        "dataSource": {
          "apiGroup": "string",
          "kind": "string",
          "name": "string"
        },
        "dataSourceRef": {
          "apiGroup": "string",
          "kind": "string",
          "name": "string",
          "namespace": "string"
        },
        "resources": {
          "limits": {
            "{customized property}": "string"
          },
          "requests": {
            "{customized property}": "string"
          }
        },
        "selector": {
          "matchExpressions": [
            {
              "key": "string",
              "operator": "string",
              "values": [ "string" ]
            }
          ],
          "matchLabels": {
            "{customized property}": "string"
          }
        },
        "storageClassName": "string",
        "volumeMode": "string",
        "volumeName": "string"
      }
    },
    "generateResourceLimits": {
      "cpu": "string"
    },
    "memoryProfile": "string"
  }
}

Property values

AdvancedSettings

Name Description Value
clients Configurations related to All Clients. ClientConfig
encryptInternalTraffic The setting to enable or disable encryption of internal Traffic. 'Disabled'
'Enabled'
internalCerts Certificate rotation and private key configuration. CertManagerCertOptions

BackendChain

Name Description Value
partitions The desired number of physical backend partitions. int

Constraints:
Min value = 1
Max value = 16 (required)
redundancyFactor The desired numbers of backend replicas (pods) in a physical partition. int

Constraints:
Min value = 1
Max value = 5 (required)
workers Number of logical backend workers per replica (pod). int

Constraints:
Min value = 1
Max value = 16

BrokerDiagnostics

Name Description Value
logs Diagnostic log settings for the resource. DiagnosticsLogs
metrics The metrics settings for the resource. Metrics
selfCheck The self check properties. SelfCheck
traces The trace properties. Traces

BrokerProperties

Name Description Value
advanced Advanced settings of Broker. AdvancedSettings
cardinality The cardinality details of the broker. Cardinality
diagnostics Spec defines the desired identities of Broker diagnostics settings. BrokerDiagnostics
diskBackedMessageBuffer Settings of Disk Backed Message Buffer. DiskBackedMessageBuffer
generateResourceLimits This setting controls whether Kubernetes CPU resource limits are requested. Increasing the number of replicas or workers proportionally increases the amount of CPU resources requested. If this setting is enabled and there are insufficient CPU resources, an error will be emitted. GenerateResourceLimits
memoryProfile Memory profile of Broker. 'High'
'Low'
'Medium'
'Tiny'

Cardinality

Name Description Value
backendChain The backend broker desired properties BackendChain (required)
frontend The frontend desired properties Frontend (required)

CertManagerCertOptions

Name Description Value
duration Lifetime of certificate. Must be specified using a Go time.Duration format (h m s). E.g. 240h for 240 hours and 45m for 45 minutes. string (required)
privateKey Configuration of certificate private key. CertManagerPrivateKey (required)
renewBefore When to begin renewing certificate. Must be specified using a Go time.Duration format (h m s). E.g. 240h for 240 hours and 45m for 45 minutes. string (required)

CertManagerPrivateKey

Name Description Value
algorithm algorithm for private key. 'Ec256'
'Ec384'
'Ec521'
'Ed25519'
'Rsa2048'
'Rsa4096'
'Rsa8192' (required)
rotationPolicy cert-manager private key rotationPolicy. 'Always'
'Never' (required)

ClientConfig

Name Description Value
maxKeepAliveSeconds Upper bound of a client's Keep Alive, in seconds. int

Constraints:
Min value = 0
Max value = 65535
maxMessageExpirySeconds Upper bound of Message Expiry Interval, in seconds. int

Constraints:
Min value = 1
Max value = 4294967295
maxPacketSizeBytes Max message size for a packet in Bytes. int

Constraints:
Min value = 1
Max value = 268435456
maxReceiveMaximum Upper bound of Receive Maximum that a client can request in the CONNECT packet. int

Constraints:
Min value = 1
Max value = 65535
maxSessionExpirySeconds Upper bound of Session Expiry Interval, in seconds. int

Constraints:
Min value = 1
Max value = 4294967295
subscriberQueueLimit The limit on the number of queued messages for a subscriber. SubscriberQueueLimit

DiagnosticsLogs

Name Description Value
level The log level. Examples - 'debug', 'info', 'warn', 'error', 'trace'. string
opentelemetryExportConfig The open telemetry export configuration. OpenTelemetryLogExportConfig

DiskBackedMessageBuffer

Name Description Value
ephemeralVolumeClaimSpec Use the specified persistent volume claim template to mount a "generic ephemeral volume" for the message buffer. See <https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes> for details. VolumeClaimSpec
maxSize The max size of the message buffer on disk. If a PVC template is specified using one of ephemeralVolumeClaimSpec or persistentVolumeClaimSpec, then this size is used as the request and limit sizes of that template. If neither ephemeralVolumeClaimSpec nor persistentVolumeClaimSpec are specified, then an emptyDir volume is mounted with this size as its limit. See <https://kubernetes.io/docs/concepts/storage/volumes/#emptydir> for details. string

Constraints:
Pattern = ^[0-9]+[KMGTPE]$ (required)
persistentVolumeClaimSpec Use the specified persistent volume claim template to mount a persistent volume for the message buffer. VolumeClaimSpec

ExtendedLocation

Name Description Value
name The name of the extended location. string (required)
type Type of ExtendedLocation. 'CustomLocation' (required)

Frontend

Name Description Value
replicas The desired number of frontend instances (pods). int

Constraints:
Min value = 1
Max value = 16 (required)
workers Number of logical frontend workers per instance (pod). int

Constraints:
Min value = 1
Max value = 16

GenerateResourceLimits

Name Description Value
cpu The toggle to enable/disable cpu resource limits. 'Disabled'
'Enabled'

KubernetesReference

Name Description Value
apiGroup APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. string
kind Kind is the type of resource being referenced string (required)
name Name is the name of resource being referenced string (required)
namespace Namespace is the namespace of the resource being referenced. This field is required when the resource has a namespace. string

LocalKubernetesReference

Name Description Value
apiGroup APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. string
kind Kind is the type of resource being referenced string (required)
name Name is the name of resource being referenced string (required)

Metrics

Name Description Value
opentelemetryExportConfig The open telemetry export configuration. OpenTelemetryExportConfig
prometheusPort The prometheus port to expose the metrics. int

Constraints:
Min value = 0
Max value = 65535

Microsoft.IoTOperations/instances/brokers

Name Description Value
apiVersion The api version '2024-07-01-preview'
extendedLocation Edge location of the resource. ExtendedLocation (required)
name The resource name string

Constraints:
Min length = 3
Max length = 63
Pattern = ^[a-z0-9][a-z0-9-]*[a-z0-9]$ (required)
properties The resource-specific properties for this resource. BrokerProperties
type The resource type 'Microsoft.IoTOperations/instances/brokers'

OpenTelemetryExportConfig

Name Description Value
intervalSeconds How often to export the metrics to the open telemetry collector. int

Constraints:
Min value = 1
Max value = 300
otlpGrpcEndpoint The open telemetry collector endpoint to export to. string (required)

OpenTelemetryLogExportConfig

Name Description Value
intervalSeconds How often to export the metrics to the open telemetry collector. int

Constraints:
Min value = 1
Max value = 300
level The log level. Examples - 'debug', 'info', 'warn', 'error', 'trace'. string
otlpGrpcEndpoint The open telemetry collector endpoint to export to. string (required)

SelfCheck

Name Description Value
intervalSeconds The self check interval. int

Constraints:
Min value = 30
Max value = 300
mode The toggle to enable/disable self check. 'Disabled'
'Enabled'
timeoutSeconds The timeout for self check. int

Constraints:
Min value = 5
Max value = 120

SelfTracing

Name Description Value
intervalSeconds The self tracing interval. int

Constraints:
Min value = 1
Max value = 300
mode The toggle to enable/disable self tracing. 'Disabled'
'Enabled'

SubscriberQueueLimit

Name Description Value
length The maximum length of the queue before messages start getting dropped. int

Constraints:
Min value = 1
strategy The strategy to use for dropping messages from the queue. 'DropOldest'
'None'

Traces

Name Description Value
cacheSizeMegabytes The cache size in megabytes. int

Constraints:
Min value = 1
Max value = 128
mode The toggle to enable/disable traces. 'Disabled'
'Enabled'
opentelemetryExportConfig The open telemetry export configuration. OpenTelemetryExportConfig
selfTracing The self tracing properties. SelfTracing
spanChannelCapacity The span channel capacity. int

Constraints:
Min value = 1000
Max value = 100000

VolumeClaimResourceRequirements

Name Description Value
limits Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ VolumeClaimResourceRequirementsLimits
requests Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ VolumeClaimResourceRequirementsRequests

VolumeClaimResourceRequirementsLimits

Name Description Value

VolumeClaimResourceRequirementsRequests

Name Description Value

VolumeClaimSpec

Name Description Value
accessModes AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 string[]
dataSource This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field. LocalKubernetesReference
dataSourceRef Specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. KubernetesReference
resources Resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources VolumeClaimResourceRequirements
selector A label query over volumes to consider for binding. VolumeClaimSpecSelector
storageClassName Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 string
volumeMode volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. This is a beta feature. string
volumeName VolumeName is the binding reference to the PersistentVolume backing this claim. string

VolumeClaimSpecSelector

Name Description Value
matchExpressions MatchExpressions is a list of label selector requirements. The requirements are ANDed. VolumeClaimSpecSelectorMatchExpressions[]
matchLabels MatchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. VolumeClaimSpecSelectorMatchLabels

VolumeClaimSpecSelectorMatchExpressions

Name Description Value
key key is the label key that the selector applies to. string (required)
operator operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. 'DoesNotExist'
'Exists'
'In'
'NotIn' (required)
values values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. string[]

VolumeClaimSpecSelectorMatchLabels

Name Description Value

Terraform (AzAPI provider) resource definition

The instances/brokers resource type can be deployed with operations that target:

  • Resource groups

For a list of changed properties in each API version, see change log.

Resource format

To create a Microsoft.IoTOperations/instances/brokers resource, add the following Terraform to your template.

resource "azapi_resource" "symbolicname" {
  type = "Microsoft.IoTOperations/instances/brokers@2024-07-01-preview"
  name = "string"
  body = jsonencode({
    extendedLocation = {
      name = "string"
      type = "string"
    }
    properties = {
      advanced = {
        clients = {
          maxKeepAliveSeconds = int
          maxMessageExpirySeconds = int
          maxPacketSizeBytes = int
          maxReceiveMaximum = int
          maxSessionExpirySeconds = int
          subscriberQueueLimit = {
            length = int
            strategy = "string"
          }
        }
        encryptInternalTraffic = "string"
        internalCerts = {
          duration = "string"
          privateKey = {
            algorithm = "string"
            rotationPolicy = "string"
          }
          renewBefore = "string"
        }
      }
      cardinality = {
        backendChain = {
          partitions = int
          redundancyFactor = int
          workers = int
        }
        frontend = {
          replicas = int
          workers = int
        }
      }
      diagnostics = {
        logs = {
          level = "string"
          opentelemetryExportConfig = {
            intervalSeconds = int
            level = "string"
            otlpGrpcEndpoint = "string"
          }
        }
        metrics = {
          opentelemetryExportConfig = {
            intervalSeconds = int
            otlpGrpcEndpoint = "string"
          }
          prometheusPort = int
        }
        selfCheck = {
          intervalSeconds = int
          mode = "string"
          timeoutSeconds = int
        }
        traces = {
          cacheSizeMegabytes = int
          mode = "string"
          opentelemetryExportConfig = {
            intervalSeconds = int
            otlpGrpcEndpoint = "string"
          }
          selfTracing = {
            intervalSeconds = int
            mode = "string"
          }
          spanChannelCapacity = int
        }
      }
      diskBackedMessageBuffer = {
        ephemeralVolumeClaimSpec = {
          accessModes = [
            "string"
          ]
          dataSource = {
            apiGroup = "string"
            kind = "string"
            name = "string"
          }
          dataSourceRef = {
            apiGroup = "string"
            kind = "string"
            name = "string"
            namespace = "string"
          }
          resources = {
            limits = {
              {customized property} = "string"
            }
            requests = {
              {customized property} = "string"
            }
          }
          selector = {
            matchExpressions = [
              {
                key = "string"
                operator = "string"
                values = [
                  "string"
                ]
              }
            ]
            matchLabels = {
              {customized property} = "string"
            }
          }
          storageClassName = "string"
          volumeMode = "string"
          volumeName = "string"
        }
        maxSize = "string"
        persistentVolumeClaimSpec = {
          accessModes = [
            "string"
          ]
          dataSource = {
            apiGroup = "string"
            kind = "string"
            name = "string"
          }
          dataSourceRef = {
            apiGroup = "string"
            kind = "string"
            name = "string"
            namespace = "string"
          }
          resources = {
            limits = {
              {customized property} = "string"
            }
            requests = {
              {customized property} = "string"
            }
          }
          selector = {
            matchExpressions = [
              {
                key = "string"
                operator = "string"
                values = [
                  "string"
                ]
              }
            ]
            matchLabels = {
              {customized property} = "string"
            }
          }
          storageClassName = "string"
          volumeMode = "string"
          volumeName = "string"
        }
      }
      generateResourceLimits = {
        cpu = "string"
      }
      memoryProfile = "string"
    }
  })
}

Property values

AdvancedSettings

Name Description Value
clients Configurations related to All Clients. ClientConfig
encryptInternalTraffic The setting to enable or disable encryption of internal Traffic. 'Disabled'
'Enabled'
internalCerts Certificate rotation and private key configuration. CertManagerCertOptions

BackendChain

Name Description Value
partitions The desired number of physical backend partitions. int

Constraints:
Min value = 1
Max value = 16 (required)
redundancyFactor The desired numbers of backend replicas (pods) in a physical partition. int

Constraints:
Min value = 1
Max value = 5 (required)
workers Number of logical backend workers per replica (pod). int

Constraints:
Min value = 1
Max value = 16

BrokerDiagnostics

Name Description Value
logs Diagnostic log settings for the resource. DiagnosticsLogs
metrics The metrics settings for the resource. Metrics
selfCheck The self check properties. SelfCheck
traces The trace properties. Traces

BrokerProperties

Name Description Value
advanced Advanced settings of Broker. AdvancedSettings
cardinality The cardinality details of the broker. Cardinality
diagnostics Spec defines the desired identities of Broker diagnostics settings. BrokerDiagnostics
diskBackedMessageBuffer Settings of Disk Backed Message Buffer. DiskBackedMessageBuffer
generateResourceLimits This setting controls whether Kubernetes CPU resource limits are requested. Increasing the number of replicas or workers proportionally increases the amount of CPU resources requested. If this setting is enabled and there are insufficient CPU resources, an error will be emitted. GenerateResourceLimits
memoryProfile Memory profile of Broker. 'High'
'Low'
'Medium'
'Tiny'

Cardinality

Name Description Value
backendChain The backend broker desired properties BackendChain (required)
frontend The frontend desired properties Frontend (required)

CertManagerCertOptions

Name Description Value
duration Lifetime of certificate. Must be specified using a Go time.Duration format (h m s). E.g. 240h for 240 hours and 45m for 45 minutes. string (required)
privateKey Configuration of certificate private key. CertManagerPrivateKey (required)
renewBefore When to begin renewing certificate. Must be specified using a Go time.Duration format (h m s). E.g. 240h for 240 hours and 45m for 45 minutes. string (required)

CertManagerPrivateKey

Name Description Value
algorithm algorithm for private key. 'Ec256'
'Ec384'
'Ec521'
'Ed25519'
'Rsa2048'
'Rsa4096'
'Rsa8192' (required)
rotationPolicy cert-manager private key rotationPolicy. 'Always'
'Never' (required)

ClientConfig

Name Description Value
maxKeepAliveSeconds Upper bound of a client's Keep Alive, in seconds. int

Constraints:
Min value = 0
Max value = 65535
maxMessageExpirySeconds Upper bound of Message Expiry Interval, in seconds. int

Constraints:
Min value = 1
Max value = 4294967295
maxPacketSizeBytes Max message size for a packet in Bytes. int

Constraints:
Min value = 1
Max value = 268435456
maxReceiveMaximum Upper bound of Receive Maximum that a client can request in the CONNECT packet. int

Constraints:
Min value = 1
Max value = 65535
maxSessionExpirySeconds Upper bound of Session Expiry Interval, in seconds. int

Constraints:
Min value = 1
Max value = 4294967295
subscriberQueueLimit The limit on the number of queued messages for a subscriber. SubscriberQueueLimit

DiagnosticsLogs

Name Description Value
level The log level. Examples - 'debug', 'info', 'warn', 'error', 'trace'. string
opentelemetryExportConfig The open telemetry export configuration. OpenTelemetryLogExportConfig

DiskBackedMessageBuffer

Name Description Value
ephemeralVolumeClaimSpec Use the specified persistent volume claim template to mount a "generic ephemeral volume" for the message buffer. See <https://kubernetes.io/docs/concepts/storage/ephemeral-volumes/#generic-ephemeral-volumes> for details. VolumeClaimSpec
maxSize The max size of the message buffer on disk. If a PVC template is specified using one of ephemeralVolumeClaimSpec or persistentVolumeClaimSpec, then this size is used as the request and limit sizes of that template. If neither ephemeralVolumeClaimSpec nor persistentVolumeClaimSpec are specified, then an emptyDir volume is mounted with this size as its limit. See <https://kubernetes.io/docs/concepts/storage/volumes/#emptydir> for details. string

Constraints:
Pattern = ^[0-9]+[KMGTPE]$ (required)
persistentVolumeClaimSpec Use the specified persistent volume claim template to mount a persistent volume for the message buffer. VolumeClaimSpec

ExtendedLocation

Name Description Value
name The name of the extended location. string (required)
type Type of ExtendedLocation. 'CustomLocation' (required)

Frontend

Name Description Value
replicas The desired number of frontend instances (pods). int

Constraints:
Min value = 1
Max value = 16 (required)
workers Number of logical frontend workers per instance (pod). int

Constraints:
Min value = 1
Max value = 16

GenerateResourceLimits

Name Description Value
cpu The toggle to enable/disable cpu resource limits. 'Disabled'
'Enabled'

KubernetesReference

Name Description Value
apiGroup APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. string
kind Kind is the type of resource being referenced string (required)
name Name is the name of resource being referenced string (required)
namespace Namespace is the namespace of the resource being referenced. This field is required when the resource has a namespace. string

LocalKubernetesReference

Name Description Value
apiGroup APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. string
kind Kind is the type of resource being referenced string (required)
name Name is the name of resource being referenced string (required)

Metrics

Name Description Value
opentelemetryExportConfig The open telemetry export configuration. OpenTelemetryExportConfig
prometheusPort The prometheus port to expose the metrics. int

Constraints:
Min value = 0
Max value = 65535

Microsoft.IoTOperations/instances/brokers

Name Description Value
extendedLocation Edge location of the resource. ExtendedLocation (required)
name The resource name string

Constraints:
Min length = 3
Max length = 63
Pattern = ^[a-z0-9][a-z0-9-]*[a-z0-9]$ (required)
parent_id The ID of the resource that is the parent for this resource. ID for resource of type: instances
properties The resource-specific properties for this resource. BrokerProperties
type The resource type "Microsoft.IoTOperations/instances/brokers@2024-07-01-preview"

OpenTelemetryExportConfig

Name Description Value
intervalSeconds How often to export the metrics to the open telemetry collector. int

Constraints:
Min value = 1
Max value = 300
otlpGrpcEndpoint The open telemetry collector endpoint to export to. string (required)

OpenTelemetryLogExportConfig

Name Description Value
intervalSeconds How often to export the metrics to the open telemetry collector. int

Constraints:
Min value = 1
Max value = 300
level The log level. Examples - 'debug', 'info', 'warn', 'error', 'trace'. string
otlpGrpcEndpoint The open telemetry collector endpoint to export to. string (required)

SelfCheck

Name Description Value
intervalSeconds The self check interval. int

Constraints:
Min value = 30
Max value = 300
mode The toggle to enable/disable self check. 'Disabled'
'Enabled'
timeoutSeconds The timeout for self check. int

Constraints:
Min value = 5
Max value = 120

SelfTracing

Name Description Value
intervalSeconds The self tracing interval. int

Constraints:
Min value = 1
Max value = 300
mode The toggle to enable/disable self tracing. 'Disabled'
'Enabled'

SubscriberQueueLimit

Name Description Value
length The maximum length of the queue before messages start getting dropped. int

Constraints:
Min value = 1
strategy The strategy to use for dropping messages from the queue. 'DropOldest'
'None'

Traces

Name Description Value
cacheSizeMegabytes The cache size in megabytes. int

Constraints:
Min value = 1
Max value = 128
mode The toggle to enable/disable traces. 'Disabled'
'Enabled'
opentelemetryExportConfig The open telemetry export configuration. OpenTelemetryExportConfig
selfTracing The self tracing properties. SelfTracing
spanChannelCapacity The span channel capacity. int

Constraints:
Min value = 1000
Max value = 100000

VolumeClaimResourceRequirements

Name Description Value
limits Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ VolumeClaimResourceRequirementsLimits
requests Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ VolumeClaimResourceRequirementsRequests

VolumeClaimResourceRequirementsLimits

Name Description Value

VolumeClaimResourceRequirementsRequests

Name Description Value

VolumeClaimSpec

Name Description Value
accessModes AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 string[]
dataSource This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field. LocalKubernetesReference
dataSourceRef Specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. KubernetesReference
resources Resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources VolumeClaimResourceRequirements
selector A label query over volumes to consider for binding. VolumeClaimSpecSelector
storageClassName Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 string
volumeMode volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. This is a beta feature. string
volumeName VolumeName is the binding reference to the PersistentVolume backing this claim. string

VolumeClaimSpecSelector

Name Description Value
matchExpressions MatchExpressions is a list of label selector requirements. The requirements are ANDed. VolumeClaimSpecSelectorMatchExpressions[]
matchLabels MatchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. VolumeClaimSpecSelectorMatchLabels

VolumeClaimSpecSelectorMatchExpressions

Name Description Value
key key is the label key that the selector applies to. string (required)
operator operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. 'DoesNotExist'
'Exists'
'In'
'NotIn' (required)
values values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. string[]

VolumeClaimSpecSelectorMatchLabels

Name Description Value