Skip to content

Commit 63ffbf4

Browse files
Publish R2025a (#34)
* R2025a Prerelease: Initial commit * R2025a Prerelease: Resource utilization enhancements * R2025a Prerelease: Secure Access Control using JWT - Initial Commit * R2025a Prerelease: CTF Management API - Initial Commit * R2025a Prerelease: CTF Management API - Initial Commit * R2025a Prerelease: CTF Management API - Initial Commit * R2025a Prerelease: CTF Management API - updated pvc definition * R2025a Prerelease: CTF Management API - updated pvc definition * R2025a Prerelease: Include config-map checksum to automatically roll deployment * R2025a Prerelease: CTF Management API - updated pvc definition * Add option for dynamically provisioned persistent volumes * Added chart validation checks for new configuration options * Updated comments * Updated comments --------- Co-authored-by: esteinerMW <[email protected]>
1 parent 7bbf2ce commit 63ffbf4

File tree

13 files changed

+411
-145
lines changed

13 files changed

+411
-145
lines changed

.github/workflows/helm-chart.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ on:
77
- Helm_artifacts
88

99
env:
10-
HELM_CHART_VERSION: 1.1.0
11-
MATLAB_APP_VERSION: "R2024b"
10+
HELM_CHART_VERSION: 1.2.0
11+
MATLAB_APP_VERSION: "R2025a"
1212

1313
jobs:
1414
release-helm-chart:

LICENSE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ The files in this GitHub repository refer to commercial software products and se
44

55
The following license terms apply only to the files in this GitHub repository, including files in this folder and its subfolders, and do not apply to MathWorks Programs. References to “software” and “code” in the following license terms refer to the files in this GitHub repository.
66

7-
Copyright (c) 2024, The MathWorks, Inc.
7+
Copyright (c) 2025, The MathWorks, Inc.
88

99
All rights reserved.
1010

README.md

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Before starting, you need the following:
2525
* [Git™](https://git-scm.com/)
2626
* [Docker®](https://www.docker.com/)
2727
* Running [Kubernetes](https://kubernetes.io/) cluster that meets the following conditions:
28-
* Uses Kubernetes version 1.28 or later.
28+
* Uses Kubernetes version 1.29 or later.
2929
* Each MATLAB Production Server container in the Kubernetes cluster requires at least 1 CPU core and 2 GiB RAM.
3030
* [kubectl](https://kubernetes.io/docs/reference/kubectl/overview/) command-line tool that can access your Kubernetes cluster
3131
* [Helm](https://helm.sh/) package manager to install Helm charts that contain preconfigured Kubernetes resources for MATLAB Production Server
@@ -35,10 +35,9 @@ If you do not have a license, please contact your MathWorks representative [here
3535

3636
## Quick Start
3737
The Quick Start option is recommended for the following cases:
38-
* You are deploying MATLAB Production Server R2024b or newer
39-
* You don't require significant changes to the Helm chart
40-
* You are not running MATLAB Production server on Kubernetes as part of a CI/CD workflow
41-
For CI/CD workflows, we recommend that you cache docker images in your private container registry. For more complex workflows, use the [Deployment Steps](#Deployment-Steps)
38+
* You are deploying MATLAB Production Server R2024b or newer.
39+
* You don't require significant changes to the Helm chart.
40+
* For CI/CD workflows, we recommend that you retag and cache docker images in your private container registry.
4241

4342
The Quick Start option only requires you to download a single file, rather than cloning the full GitHub repository. For more complex workflows, use the [Deployment Steps](#Deployment-Steps)
4443

@@ -54,10 +53,10 @@ The Quick Start option only requires you to download a single file, rather than
5453
To accept the license terms, set global > agreeToLicense to "yes".
5554
To specify the address of the license server, set global > licenseServer using the format port_number@host.
5655
57-
Next, install the Helm chart for MATLAB Production Server by using the following `helm install` command:
56+
Next, install the Helm chart for MATLAB Production Server R2025a by using the following `helm install` command:
5857
5958
```
60-
helm install -f <path/to/values-overrides.yaml> [-n <k8s-namespace>] --generate-name oci://containers.mathworks.com/matlab-prodserver-k8s --version 1.1.0
59+
helm install -f <path/to/values-overrides.yaml> [-n <k8s-namespace>] --generate-name oci://containers.mathworks.com/matlab-prodserver-k8s --version 1.2.0
6160
```
6261
4. After the deployment is complete, upload the MATLAB Production Server deployable archive to your network file server or Azure file share. All users must have read permission to the deployable archive.
6362
@@ -71,7 +70,7 @@ The MATLAB Production Server on Kubernetes GitHub repository contains Helm chart
7170
```
7271
This repository includes Helm chart folders for each supported MATLAB Production Server release and a `values-overrides.yaml` file containing configuration options that apply across all release deployments.
7372
74-
2. Navigate to the Helm chart folder for the release you want to use. Replace `<release>` with the release version, for example, `R2024b`.
73+
2. Navigate to the Helm chart folder for the release you want to use. Replace `<release>` with the release version, for example, `R2025a`.
7574
```
7675
cd matlab-production-server-on-kubernetes/releases/<release>/matlab-prodserver
7776
```
@@ -88,7 +87,7 @@ The MATLAB Production Server on Kubernetes GitHub repository contains Helm chart
8887
```
8988
* `containers.mathworks.com` is the name of the container registry.
9089
* `matlab-production-server` is the name of the repository.
91-
* `<release-tag>` is the tag name of the MATLAB Production Server release, for example, `r2024b`.
90+
* `<release-tag>` is the tag name of the MATLAB Production Server release, for example, `r2025a`.
9291
9392
The `values.yaml` file specifies these values in the `productionServer` section, in the `registry`, `repository`, and `tag` variables, respectively.
9493
@@ -99,7 +98,7 @@ The MATLAB Production Server on Kubernetes GitHub repository contains Helm chart
9998
```
10099
* `containers.mathworks.com` is the name of the container registry.
101100
* `matlab-runtime` is the name of the repository.
102-
* `<release-tag>` is the tag name of the MATLAB Runtime release. Update this value to the release version of the MATLAB Runtime you are using, for example, `r2024b`. MATLAB Production Server supports MATLAB Runtime versions up to six releases back from the MATLAB Production Server version you are using.
101+
* `<release-tag>` is the tag name of the MATLAB Runtime release. Update this value to the release version of the MATLAB Runtime you are using, for example, `r2025a`. MATLAB Production Server supports MATLAB Runtime versions up to six releases back from the MATLAB Production Server version you are using.
103102
104103
The `values.yaml` file specifies these values in the `matlabRuntime` section, in the `registry`, `repository`, and `tag` variables, respectively.
105104
@@ -174,7 +173,7 @@ The default server configuration properties are stored in a [ConfigMap](https://
174173
175174
176175
## Execute Deployed Functions
177-
To evaluate MATLAB functions deployed on the server, see [Client Programming](https://www.mathworks.com/help/mps/client-programming.html). Starting in R2022a, asynchronous request execution is supported, in addition to existing support for synchronous request execution.
176+
To evaluate MATLAB functions deployed on the server, see [Client Programming](https://www.mathworks.com/help/mps/client-programming.html). Both synchronous and asynchronous request execution are supported.
178177
179178
## Request Enhancements
180179
@@ -187,5 +186,5 @@ If you require assistance, contact [MathWorks Technical Support](https://www.mat
187186
188187
## License
189188
190-
MATHWORKS CLOUD REFERENCE ARCHITECTURE LICENSE © 2024 The MathWorks, Inc.
189+
MATHWORKS CLOUD REFERENCE ARCHITECTURE LICENSE © 2025 The MathWorks, Inc.
191190

releases/R2022a/matlab-prodserver/templates/mps-1-service-ingress.yaml

Lines changed: 0 additions & 49 deletions
This file was deleted.

releases/R2022a/matlab-prodserver/values.yaml

Lines changed: 0 additions & 65 deletions
This file was deleted.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
apiVersion: v2
2-
appVersion: "R2022a"
2+
appVersion: "R2025a"
33
description: MATLAB Production Server Helm chart for Kubernetes
44
name: matlab-prodserver-k8s
5-
version: 0.1.1
5+
version: 1.2.0
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Chart validation checks:
2+
3+
{{- define "checkConditionReplicaCount" -}}
4+
{{- if and (gt (int .Values.deploymentSettings.replicaCount) 1) .Values.matlabProductionServerSettings.autoDeploy.archivesApi.createPVC }}
5+
{{- if ne .Values.matlabProductionServerSettings.autoDeploy.archivesApi.accessMode "ReadWriteMany" }}
6+
{{- fail "Configuring multiple replicas requires PVC with ReadWriteMany Access-Mode." }}
7+
{{- end }}
8+
{{- end }}
9+
{{- end }}
10+
11+
{{- define "checkConditionVolumeType" -}}
12+
{{- if .Values.matlabProductionServerSettings.autoDeploy.archivesApi.enabled }}
13+
{{- $volumeType := .Values.matlabProductionServerSettings.autoDeploy.volumeType }}
14+
{{- if and (ne $volumeType "pvc") (ne $volumeType "empty") }}
15+
{{- fail "Configuring archives API is only supported with pvc or empty volume types." }}
16+
{{- end }}
17+
{{- end }}
18+
{{- end }}
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#
2+
# Expose MATLAB Production Server internal endpoint
3+
#
4+
kind: Service
5+
apiVersion: v1
6+
metadata:
7+
name: matlab-production-server
8+
namespace: {{ .Release.Namespace }}
9+
labels:
10+
app: mps
11+
release: {{ .Release.Name }}
12+
spec:
13+
selector:
14+
app: mps
15+
ports:
16+
- name: mps-port
17+
port: 9910
18+
targetPort: 9910
19+
type: ClusterIP
20+
21+
---
22+
{{- if .Values.global.ingressController.enabled }}
23+
apiVersion: networking.k8s.io/v1
24+
kind: Ingress
25+
metadata:
26+
name: matlab-production-server-ingress
27+
namespace: {{ .Release.Namespace }}
28+
labels:
29+
release: {{ .Release.Name }}
30+
annotations:
31+
{{ if .Values.global.ingressController }}
32+
## set ingress-conroller vendor-specific annotations:
33+
{{- range $key, $value := .Values.global.ingressController.annotations }}
34+
{{ $key }}: {{ quote $value }}
35+
{{- end }}
36+
{{ end }}
37+
spec:
38+
ingressClassName: {{ .Values.global.ingressController.name }}
39+
{{ if .Values.global.ingressController.tls.enabled }}
40+
tls:
41+
- hosts:
42+
- {{ .Values.global.ingressController.domainBase }}
43+
{{- if .Values.global.ingressController.tls.secretName }}
44+
secretName: {{ .Values.global.ingressController.tls.secretName }}
45+
{{- end }}
46+
{{ end }}
47+
48+
rules:
49+
- host: {{ .Values.global.ingressController.domainBase }}
50+
http:
51+
paths:
52+
- path: /
53+
pathType: Prefix
54+
backend:
55+
service:
56+
name: matlab-production-server
57+
port:
58+
number: 9910
59+
{{- end }}
60+
61+
---
62+
{{ if and (.Values.optionalSettings.Prometheus.enabled) (.Capabilities.APIVersions.Has "monitoring.coreos.com/v1/ServiceMonitor") }}
63+
apiVersion: monitoring.coreos.com/v1
64+
kind: ServiceMonitor
65+
metadata:
66+
name: matlab-production-server-monitor
67+
labels:
68+
app: mps
69+
app.kubernetes.io/part-of: {{ .Values.optionalSettings.Prometheus.matchOn }}
70+
release: {{ .Values.optionalSettings.Prometheus.matchOn }}
71+
spec:
72+
selector:
73+
matchLabels:
74+
app: mps
75+
release: {{ .Release.Name }}
76+
namespaceSelector:
77+
matchNames:
78+
- {{ .Release.Namespace }}
79+
endpoints:
80+
- port: mps-port
81+
path: /api/metrics
82+
{{ end }}
83+

releases/R2022a/matlab-prodserver/templates/mps-2-configmap.yaml renamed to releases/R2025a/matlab-prodserver/templates/mps-2-configmap.yaml

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ data:
99
main_config: |
1010
--http 9910
1111
--ssl-verify-peer-mode no-verify-peer
12-
--ssl-protocols TLSv1.1,TLSv1.2
12+
--ssl-protocols TLSv1.2
1313
--ssl-ciphers ALL
1414
--mcr-root /opt/matlabruntime/{{ .Values.images.matlabRuntime.variant }}
1515
--num-workers {{ .Values.matlabProductionServerSettings.numWorkers | default 1 }}
@@ -24,7 +24,7 @@ data:
2424
--log-rotation-size 100MB
2525
--log-archive-root ./old_logs
2626
--log-archive-max-size 1GB
27-
--log-root ./log
27+
{{ ternary "--log-root ./log" "" .Values.matlabProductionServerSettings.localFileLogging }}
2828
--log-stdout
2929
--license {{ .Values.global.licenseServer | default "27000@hostname" }}
3030
--license-grace-period 2:30
@@ -42,15 +42,36 @@ data:
4242
--server-memory-threshold-overflow-action purge_responses
4343
--enable-discovery
4444
--enable-metrics
45+
{{ ternary "--enable-archive-management" "" .Values.matlabProductionServerSettings.autoDeploy.archivesApi.enabled }}
46+
--routes-file ./config/routes.json
47+
{{- if .Values.matlabProductionServerSettings.accessControl.enabled }}
48+
--access-control-provider OAuth2
49+
--access-control-config ./config/jwt_idp.json
50+
--access-control-policy ./config/ac_policy.json
51+
52+
jwt_idp.json: {{ .Values.matlabProductionServerSettings.accessControl.identityProvider | quote }}
53+
54+
ac_policy.json: {{ .Values.matlabProductionServerSettings.accessControl.policyRules | quote }}
55+
{{- end }}
4556

4657
{{- if .Values.optionalSettings.Redis.host }}
4758
mps_cache_config: |
4859
{"Connections":
4960
{"{{ .Values.optionalSettings.Redis.name }}":
5061
{"Provider":"Redis",
5162
"Host":{{ .Values.optionalSettings.Redis.host | quote }},
52-
"Port":{{ .Values.optionalSettings.Redis.port | default 6379 }}}
63+
"Port":{{ .Values.optionalSettings.Redis.port | default 6379 }}
64+
{{- if .Values.optionalSettings.Redis.auth }}
65+
,"Key":{{ .Values.optionalSettings.Redis.auth | quote }}
66+
{{- end }}
67+
}
5368
}
5469
}
5570
{{- end }}
5671

72+
routes.json: |
73+
{
74+
"version": "1.0.0",
75+
"pathmap": []
76+
}
77+

0 commit comments

Comments
 (0)