You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/en/docs/deployment/private-cloud/private-cloud-cluster/private-cloud-storage-plans.md
+28Lines changed: 28 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -145,6 +145,22 @@ If you delete an environment, make sure that it is completely deleted by running
145
145
146
146
If the commands return a *not found* response, your environment database and blob file storage have been fully removed. If either the database or the blob file storage were not deleted, you must find and troubleshoot the reason, and then do a [manual cleanup](/developerportal/deploy/private-cloud-deploy/#delete-storage) if necessary. Until the cleanup is done, you should not create a new environment that uses the same name as the environment that is still being deleted.
147
147
148
+
#### S3 Bucket Region Might Need to Be Set Manually
149
+
150
+
In Studio Pro version 11.6, the AWS S3 library was updated from version 1 to version 2. This new AWS library version can no longer automatically detect an S3 bucket's region from its endpoint address, and needs the bucket endpoint to be specified manually. The AWS S3 library is also updated in the latest LTS versions of Studio Pro.
151
+
152
+
Mendix Operator 2.25 (or later versions) will automatically recognise an S3 bucket's region from its endpoint address:
153
+
154
+
* If the bucket endpoint has a `<subdomains>.<region>.amazonaws.com` format (or `<subdomains>.<region>.amazonaws.com.<suffix>` format for AWS China regions),
155
+
the Operator uses `<region>` as the S3 region name.
156
+
* If the S3 bucket endpoint does not match this format, the Mendix Operator will use a default `us-east-1` region, as this works with most S3-compatible buckets like [Minio](#blob-minio) and [Google Cloud Storage](#blob-gcp-storage-bucket).
157
+
158
+
In some scenarios (legacy or custom S3 endpoints), this autodetection might not work correctly. In this case, you can manually specify the S3 bucket region by setting the [com.mendix.storage.s3.Region](/refguide/custom-settings/#commendixstorages3Region) Custom Runtime Setting. A manually specified `com.mendix.storage.s3.Region` will override the autodetected bucket region.
159
+
160
+
Mendix Operator versions 2.24.2 (and older) does not autodetect S3 bucket regions. To use Mendix 11.6 (or the latest LTS versions), manually set the `com.mendix.storage.s3.Region` custom Runtime setting. You can also consider upgrading to Mendix Operator 2.25.0 or newer.
161
+
162
+
This issue does not affect [Azure Blob Storage](#blob-azure) or [ephemeral](#blob-ephemeral) data storage plans.
163
+
148
164
## Database Plans {#database}
149
165
150
166
Every Mendix app needs a database to store persistable and non-persistable entities. A database plan tells the Mendix Operator how to provide a database to a new Mendix app environment.
@@ -913,6 +929,18 @@ If you would like to simply share a bucket between environments, or to manually
913
929
Although we offer additional flexibility and provide other options, Mendix recommends using one of the options listed above.
914
930
{{% /alert %}}
915
931
932
+
{{% alert color="warning" %}}
933
+
In Studio Pro version 11.6, the AWS S3 library was updated from version 1 to version 2. This new AWS library version can no longer automatically detect an S3 bucket's region from its endpoint address. You must specify the bucket endpoint manually.
934
+
935
+
Mendix Operator 2.25 (or later versions) will automatically recognise an S3 bucket's region from its endpoint address:
936
+
937
+
* If the bucket endpoint has a `<subdomains>.<region>.amazonaws.com` format (or `<subdomains>.<region>.amazonaws.com.<suffix>` format for AWS China regions),
938
+
the Operator will use the `<region>` part.
939
+
* If the S3 bucket endpoint does not match this format, the Mendix Operator will use a default `us-east-1` region, as this works with most S3-compatible buckets like [Minio](#blob-minio) and [Google Cloud Storage](#blob-gcp-storage-bucket).
940
+
941
+
In some scenarios (legacy or custom S3 endpoints), this autodetection might not work correctly. In this case, you can manually specify the S3 bucket region by setting the [com.mendix.storage.s3.Region](/refguide/custom-settings/#commendixstorages3Region) Custom Runtime Setting. A manually specified `com.mendix.storage.s3.Region` will override the autodetected bucket region.
942
+
{{% /alert %}}.
943
+
916
944
#### Create Account with Existing Policy {#s3-create-account-existing-policy}
917
945
918
946
This automated, on-demand option allows to share an existing bucket between environments, and isolates environments from accessing each other's data.
Copy file name to clipboardExpand all lines: content/en/docs/deployment/private-cloud/reduced-downtime-deployment.md
+75-13Lines changed: 75 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,31 +10,43 @@ Kubernetes allows you to update an app without downtime by [performing a rolling
10
10
11
11
The Mendix on Kubernetes Operator uses a [recreate](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#recreate-deployment) strategy by default. That is, the current version (configuration) of an app stops, and then the new version starts.
12
12
13
-
Starting from version 2.24.0, the Operator will automatically perform a Rolling update for any environment that meets the [prerequisites](#prerequisites-2.24.0):
13
+
Starting from version 2.25.0, the Operator will automatically perform a Rolling update for any environment that meets the [prerequisites](#prerequisites-2.25.0):
14
14
15
-
* The environment has two or more replicas.
16
-
* The configuration update does not modify the app source code (MDA or container image).
15
+
* The configuration update does not modify the app model (source code, MDA or container image).
17
16
18
17
{{% alert color="info" %}}
19
-
Versions 2.20.0 to 2.23.1 of the Operator had an option to manually enable a **PreferRolling** strategy. That is, the Operator tried to perform a rolling update whenever possible. If the Operator detected that a database schema update was needed, it switched to a Recreate strategy to perform a full restart. If the new version of the app had model changes, deploying it required a schema update. In that case, the Mendix on Kubernetes Operator automatically stopped all replicas of the app, causing downtime.
18
+
Versions 2.20.0 to 2.23.1 of the Operator had an option to manually enable a **PreferRolling** strategy. That is, the Operator tried to perform a rolling update whenever possible. If the Operator detected that a database schema update was needed, it switched to a Recreate strategy to perform a full restart. If the new version of the app had model (source code) changes, deploying it required a schema update. In that case, the Mendix on Kubernetes Operator automatically stopped all replicas of the app, causing downtime.
20
19
{{% /alert %}}
21
20
22
-
In addition Operator version 2.24.0 will automatically assign a PodDisruptionBudget to environments with 2 or more replicas. Any environment with two or more replicas will be configured with a PodDisruptionBudget that ensures that no more than 1 replicas are stopped by Kubernetes when scaling down a cluster node or preparing an OS upgrade.
21
+
In addition Operator version 2.25.0 will automatically assign a `PodDisruptionBudget` to environments with 1 or more replicas:
22
+
23
+
* Any environment with two or more replicas will be configured with a `PodDisruptionBudget` to ensure that no more than 1 replica is stopped by Kubernetes when scaling down a cluster node or preparing an OS upgrade.
24
+
* Any environment with one replica will be configured with a `PodDisruptionBudget` to ensure that at least 1 replica is available when scaling down a cluster node or preparing an OS upgrade. This might cause some Kubernetes updates to be postponed, to prevent app downtime.
23
25
24
26
{{% alert color="info" %}}
25
-
Previous versions of the Operator did not manage PodDisruptionBudgets. Instead, any manually created PodDisruptionBudget would apply to a Mendix app.
27
+
Previous versions of the Operator did not manage `PodDisruptionBudgets`. Instead, any manually created `PodDisruptionBudget` would apply to a Mendix app.
26
28
27
-
If you have manually created PodDisruptionBudgets for an app, delete it and instead specify the PodDisruptionBudget parameters [in the MendixApp CR](#pod-disruption-budget-in-standalone).
29
+
If you have manually created a `PodDisruptionBudget`for an app, delete it and instead specify the `PodDisruptionBudget` parameters [in the MendixApp CR](#pod-disruption-budget-in-standalone).
28
30
{{% /alert %}}
29
31
30
32
## Prerequisites
31
33
32
-
## Prerequisites for Operator version 2.24.0 and Higher{#prerequisites-2.24.0}
34
+
## Prerequisites for Operator version 2.25.0 and Higher{#prerequisites-2.25.0}
35
+
36
+
The Operator automatically performs a Rolling update for any environment that meets the following condition:
37
+
38
+
* The configuration update does not modify the app model (source code, MDA or container image).
39
+
40
+
{{% alert color="warning" %}}
41
+
Mendix Operator versions 2.20.0 to 2.23.1 had an experimental feature that also performed database schema upgrades with a Rolling strategy. This feature was removed in Operator 2.24.0, as it does not work well with the latest Mendix Runtime security features.
42
+
{{% /alert %}}
43
+
44
+
## Prerequisites for Operator version 2.24{#prerequisites-2.24.0}
33
45
34
46
The Operator automatically performs a Rolling update for any environment that meets the following conditions:
35
47
36
48
* The environment has two or more replicas.
37
-
* The configuration update does not modify the app source code (MDA or container image).
49
+
* The configuration update does not modify the app model (source code, MDA or container image).
38
50
39
51
{{% alert color="warning" %}}
40
52
Mendix Operator versions 2.20.0 to 2.23.1 had an experimental feature that also performed database schema upgrades with a Rolling strategy. This feature was removed in Operator 2.24.0, as it does not work well with the latest Mendix Runtime security features.
@@ -45,7 +57,7 @@ Mendix Operator versions 2.20.0 to 2.23.1 had an experimental feature that also
45
57
If any of the following conditions is true, the Operator always uses a **Recreate** strategy, performing a full stop of all of the app's replicas:
46
58
47
59
* There are app pods that are running a different (older) version of the app image: there are changes in the app MDA or base OS image.
48
-
* The app environment has one replica.
60
+
* The app environment has no running replicas.
49
61
50
62
Otherwise, the Operator performs a **Rolling** update automatically.
51
63
@@ -95,8 +107,12 @@ You can specify the following options:
95
107
* **switchoverThreshold** – Specifies a threshold of updated, ready replicas after which all clients should switch to the updated version. The threshold can be a percentage or an absolute value.
96
108
For example, setting this to **50%** will switch all clients to the updated app version once 50% of all replicas are running the updated version. If not otherwise specified, 50% is used as the default value. This option is only used if the strategy **type** is set to **PreferRolling**.
97
109
* **rollingUpdate** - Specifies parameters for rolling updates if the Operator is able to perform the update without a restart. These parameters are used as Kubernetes [rollingUpdate](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment) parameters:
98
-
* **maxSurge** – Specifies an absolute or percentage value for how many additional replicas can be added during the deployment process. The default **0** value means that no additional replicas are added during the rollout process, and instead existing replicas are stopped to avoid using additional cluster resources.
99
-
* **maxUnavailable** – Specifies an absolute or percentage value for how many replicas can be stopped to be replaced with updated versions during the rollout process. The default **1** value means that at most one replicas would be stopped during the update process. Increasing this value speeds up the rollout process, but can cause performance issues.
110
+
* **maxSurge** – Specifies an absolute or percentage value for how many additional replicas can be added during the deployment process.
111
+
* For apps with 1 replica, the default value is **1**, to run an updated (replacement) replica in addition to the current replica, and prevent any downtime when possible.
112
+
* For apps with 2 or more replicas, the default value is **0**, so that no additional replicas are added during the rollout process, and instead existing replicas are stopped to avoid using additional cluster resources.
113
+
* **maxUnavailable** – Specifies an absolute or percentage value for how many replicas can be stopped to be replaced with updated versions during the rollout process. Increasing this value speeds up the rollout process, but can cause performance issues.
114
+
* For apps with 1 replica, the default value is **0**, to ensure that at least one replica is running, and prevent downtime.
115
+
* For apps with 2 or more replicas, the default value is **1**, so that at most one replicas would be stopped during the update process.
100
116
101
117
## Configuring Pod Disruption Budget parameters in Standalone Environments {#pod-disruption-budget-in-standalone}
102
118
@@ -126,13 +142,59 @@ spec:
126
142
127
143
You can specify the following options:
128
144
129
-
* **maxUnavailable** – Specifies an absolute or percentage value for how many replicas can be stopped if Kubernetes needs to evict them from a node. The default **1** value means that at most 1 replica can be stopped, and that Kubernetes needs to wait until a replacement replica becomes available. Increasing this value speeds up the rollout process, but can cause performance issues.
145
+
* **maxUnavailable** – Specifies an absolute or percentage value for how many replicas can be stopped if Kubernetes needs to evict them from a node.
146
+
* For apps with 2 or more replicas, the default value is **1** and means that at most 1 replica can be stopped, and that Kubernetes needs to wait until a replacement replica becomes available. Increasing this value speeds up the rollout process, but can cause performance issues.
130
147
* **minAvailable** – Specifies an absolute or percentage value for how many replicas need to be remain available if Kubernetes needs to evict them from a node. Increasing this value slows down the rollout process, but ensures that less replicas can be disrupted.
148
+
* For apps with 1 replica, the default value is **1** to ensure that at least one replica is always available, and prevent downtime.
131
149
132
150
{{% alert color="warning" %}}
133
151
Kubernetes doesn't allow specifying values for both `maxUnavailable` and `minAvailable`, and specifying values for both of them will [result in an error](https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget).
134
152
{{% /alert %}}
135
153
154
+
## Allowing Downtime with Operator 2.25.0 and Newer {#allow-downtime-2.25}
155
+
156
+
By default, Mendix Operator 2.25.0 and higher versions will try to prevent downtime whenever possible, including apps with single replicas.
157
+
158
+
In some situations (for example, Kubernetes cluster autoscaling or node upgrades), single-replica apps would be disrupted. The default Pod Disruption Budget prevents this from happening until a developer manually restarts an app or scales it to two or more replicas.
159
+
160
+
To prevent downtime when updating an app with one replica, the Operator needs to temporarily run two or more replicas of an app. If the cluster does not have enough capacity to start an additional replica, this would block the app update (as this is the only way to process updates without downtime).
161
+
162
+
If your app or cluster changes are blocked by this policy, you must scale the app to 2 (or more) replicas, or manually allow the changes to be processed with downtime. The easiest option to do this is to manually stop the app, and then start it again.
163
+
164
+
Alternatively, you can set custom **Reduced Downtime Options** in the Cloud Portal:
165
+
166
+
* In the **Deployment Strategy Options**, set the following values:
167
+
* **Max Surge** - set to **0%**
168
+
* **Max Unavailable** - set to **100%**
169
+
* In the **Pod disruption budget options**, set the following values:
170
+
* **Min Available** - set to **0%**
171
+
* **Max Unavailable** - set to **100%**
172
+
173
+
{{< figure src="/attachments/deployment/private-cloud/allow-single-replica-downtime.png" alt="Allowing downtime in single-replica apps" class="no-border" >}}
174
+
175
+
For Standalone environments, specify the following in the MendixApp CR YAML:
176
+
177
+
```yaml
178
+
apiVersion: privatecloud.mendix.com/v1alpha1
179
+
kind: MendixApp
180
+
metadata:
181
+
# ...
182
+
# omitted lines for brevity
183
+
# ...
184
+
spec:
185
+
# ...
186
+
# omitted lines for brevity
187
+
# ...
188
+
replicas: 1 # This is only necessary for apps with 1 replica
189
+
# Add or update this section:
190
+
deploymentStrategy:
191
+
rollingUpdate:
192
+
maxSurge: 0
193
+
maxUnavailable: 1
194
+
podDisruptionBudget:
195
+
maxUnavailable: 1
196
+
```
197
+
136
198
## Limitations
137
199
138
200
* This feature is only supported by Mendix Operator version 2.24 (and later). Mendix Operator versions 2.20.0 to 2.23.1 used to have an experimental implementation of this feature; upgrading to 2.24.0 or later is highly recommended.
Copy file name to clipboardExpand all lines: content/en/docs/releasenotes/deployment/mendix-for-private-cloud.md
+11Lines changed: 11 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,6 +12,17 @@ For information on the current status of deployment to Mendix on Kubernetes and
12
12
13
13
## 2026
14
14
15
+
### January 19, 2026
16
+
17
+
#### Mendix Operator v2.25.0 {#2.25.0}
18
+
19
+
* We have extended the Reduced Downtime deployment feature to support apps running 1 replica.
20
+
This feature is enabled by default, and works by running two replicas of the app during updates. For more information, see [Reduced Downtime Deployment](/developerportal/deploy/private-cloud-reduced-downtime/).
21
+
* We have added autodetection for AWS S3 bucket regions, which is required by the AWS SDK update in updated LTS Studio Pro versions.
22
+
Version 2 of the AWS S3 library removed built-in autodetection of an S3 bucket's region. This is now handled by the Mendix Operator. In some situations, it might be necessary to manually specify the S3 bucket region by setting the [com.mendix.storage.s3.Region](/refguide/custom-settings/#commendixstorages3Region) Custom Runtime Setting.
23
+
* We have updated Azure authentication code to improve compatibility with Azure Government and Azure in China.
24
+
* We have extended the [S3 IRSA Mode](/developerportal/deploy/private-cloud-storage-plans/#s3-irsa-mode) provisioner options, allowing to specify a path prefix and permissions boundary for IAM roles. Documentation on using this feature is available upon request.
0 commit comments