View Source Astarte CR Changes from v1alpha3 to v2alpha1

scylla

Scylla

The most significant change is that the Astarte operator no longer manages the Cassandra cluster deployment. Cassandra is now treated as a fully external service, and the CRD only contains the necessary connection details.

This results in the following key changes:

  • Removal of Deployment Fields: All fields related to deploying a Cassandra cluster (e.g., deploy, replicas, image, storage) have been removed from the cassandra spec. You are now responsible for deploying and managing your Cassandra or ScyllaDB cluster separately.
  • Restructured nodes: The nodes field, which was a single comma-separated string, is now a structured list of host and port objects.
  • Relocated astarteSystemKeyspace: The astarteSystemKeyspace configuration has been moved from the top level of the spec into spec.cassandra. It also includes new fields for more advanced replication strategies.
  • Standardized Connection Spec: The connection spec has been changed, renaming secret to credentialsSecret and removing deprecated or unused fields.

top-level-cassandra-fields-spec-cassandra

Top-Level Cassandra Fields (spec.cassandra)

v1alpha3 Pathv2alpha1 PathAction Required
deployRemovedRemoved.
replicasRemovedRemoved.
imageRemovedRemoved.
versionRemovedRemoved.
storageRemovedRemoved.
maxHeapSizeRemovedRemoved.
heapNewSizeRemovedRemoved.
resourcesRemovedRemoved.
nodesconnection.nodesRestructured. Convert the comma-separated string into a list of objects. For example, "host1:9042,host2:9042" becomes [{"host": "host1", "port": 9042}, {"host": "host2", "port": 9042}].
connectionconnectionKept. Sub-fields have changed. See the section below.
(none)astarteSystemKeyspaceMoved. The astarteSystemKeyspace object is now nested under cassandra.

connection-fields-spec-cassandra-connection

Connection Fields (spec.cassandra.connection)

v1alpha3 Pathv2alpha1 PathAction Required
connection.autodiscoveryRemovedRemoved. This field is no longer used.
connection.usernameRemovedRemoved. Credentials must now be provided via a secret.
connection.passwordRemovedRemoved. Credentials must now be provided via a secret.
connection.secretconnection.credentialsSecretRenamed. The field secret is now credentialsSecret.
(none)connection.enableKeepaliveNew field. This is a new optional boolean field that defaults to true.

keyspace-fields

Keyspace Fields

The entire astarteSystemKeyspace object has been moved and enhanced. spec.cassandra.astarteSystemKeyspace is now a required field, along with new options for replication strategy and data center replication factors depending on the chosen strategy. No default values are provided, once the fields are set, they cannot be later updated without deleting the Astarte instance.

v1alpha3 Pathv2alpha1 PathAction Required
spec.astarteSystemKeyspacespec.cassandra.astarteSystemKeyspaceMoved & Enhanced. Move the object under spec.cassandra.
(none)astarteSystemKeyspace.replicationStrategyNew field. You can now specify the replication strategy ("SimpleStrategy" or "NetworkTopologyStrategy").
(none)astarteSystemKeyspace.dataCenterReplicationNew field. Use this to specify per-datacenter replication factors when using "NetworkTopologyStrategy". For example: "dc1:3,dc2:3".

rabbitmq

RabbitMQ

RabbitMQ is now treated as an external dependency. All fields for deploying a cluster (deploy, replicas, image, storage, etc.) have been removed. The connection details are now more structured and standardized, aligning with how other external services like Cassandra are handled.

Before proceeding, ensure that you have a running RabbitMQ instance and all the necessary connection details.

top-level-rabbitmq-fields-spec-rabbitmq

Top-Level RabbitMQ Fields (spec.rabbitmq)

Most fields at this level have been removed because the operator no longer deploys RabbitMQ.

v1alpha3 Pathv2alpha1 PathAction Required
deployRemovedRemoved. You must now manage your own RabbitMQ deployment.
replicasRemovedRemoved.
imageRemovedRemoved.
versionRemovedRemoved.
storageRemovedRemoved.
additionalPluginsRemovedRemoved. Ensure required plugins (like rabbitmq_management) are enabled in your external instance.
resources, antiAffinity, customAffinity, etc.RemovedRemoved. All deployment-related fields are gone.
connectionspec.rabbitmq.connectionKept and Restructured. See the section below for details on its sub-fields.

connection-fields-spec-rabbitmq-connection

Connection Fields (spec.rabbitmq.connection)

The connection spec has been updated to use a more generic and structured format.

v1alpha3 Pathv2alpha1 PathAction Required
connection.usernameRemovedRemoved. Credentials must now be provided via a secret.
connection.passwordRemovedRemoved. Credentials must now be provided via a secret.
connection.secretconnection.credentialsSecretRenamed. The secret field is now called credentialsSecret.

management-connection-fields-spec-rabbitmq-managementconnection

Management Connection Fields (spec.rabbitmq.managementConnection)

The management connection spec has been introduced in v2alpha1 to allow separate connection details for the RabbitMQ management API.

vernemq

VerneMQ

Unlike RabbitMQ and Cassandra, the Astarte operator still manages the VerneMQ deployment. Most of your existing configuration will be directly transferable. No major changes have been made to the VerneMQ spec.

cfssl

CFSSL

v1alpha3 Pathv2alpha1 PathAction Required
csrRootCacsrRootCaKept and Restructured. See the section below.
caRootConfigcaRootConfigKept and Restructured. See the section below.

csr-root-ca-fields-spec-cfssl-csrrootca

CSR Root CA Fields (spec.cfssl.csrRootCa)

The structure for defining the root CA's Certificate Signing Request has a minor change.

v1alpha3 Pathv2alpha1 PathAction Required
csrRootCa.ca.expirycsrRootCa.expiryMoved and Renamed. The expiry string is no longer nested under a ca object. Move it up one level.

ca-root-config-fields-spec-cfssl-carootconfig

CA Root Config Fields (spec.cfssl.caRootConfig)

The structure for the CA's root configuration has also been slightly simplified.

v1alpha3 Pathv2alpha1 PathAction Required
caRootConfig.signing.defaultcaRootConfig.signingDefaultMoved and Renamed. The object previously at signing.default is now directly at signingDefault.

other-fields

Other fields

v1alpha3 Pathv2alpha1 PathAction Required
rbacRemovedRemoved. This field is no longer used. RBAC is now always managed by the operator.
astarteSystemKeyspacespec.cassandra.astarteSystemKeyspaceMoved. This field is now located under the cassandra spec.

components

Components

The structure of the components spec has been significantly simplified. In v1alpha3, several components (housekeeping, realmManagement, pairing) were split into distinct api and backend objects. This separation has been removed in v2alpha1.

Now, each component is a single, unified object that combines the properties of the former api and backend. You will need to merge the configurations from both sub-objects into the new, flattened structure.

v1alpha3 Pathv2alpha1 PathAction Required
components.<name>.apicomponents.<name>Merged & Flattened. The api object is gone.
components.<name>.backendcomponents.<name>Merged & Flattened. The backend object is gone.
components.<name>.api.<field>components.<name>.<field>Moved. Move all fields from the api block directly under the component's name.
components.<name>.backend.<field>components.<name>.<field>Moved. Move all fields from the backend block directly under the component's name.

This change applies primarily to housekeeping, realmManagement, and pairing. Other components like appengineApi or dataUpdaterPlant already had a flatter structure and require minimal or no changes.