Skip to content

Publish R2025a #34

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 14 commits into from
May 15, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/helm-chart.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ on:
- Helm_artifacts

env:
HELM_CHART_VERSION: 1.1.0
MATLAB_APP_VERSION: "R2024b"
HELM_CHART_VERSION: 1.2.0
MATLAB_APP_VERSION: "R2025a"

jobs:
release-helm-chart:
Expand Down
2 changes: 1 addition & 1 deletion LICENSE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ The files in this GitHub repository refer to commercial software products and se

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.

Copyright (c) 2024, The MathWorks, Inc.
Copyright (c) 2025, The MathWorks, Inc.

All rights reserved.

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

## Quick Start
The Quick Start option is recommended for the following cases:
* You are deploying MATLAB Production Server R2024b or newer
* You don't require significant changes to the Helm chart
* You are not running MATLAB Production server on Kubernetes as part of a CI/CD workflow
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)
* You are deploying MATLAB Production Server R2024b or newer.
* You don't require significant changes to the Helm chart.
* For CI/CD workflows, we recommend that you retag and cache docker images in your private container registry.

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)

Expand All @@ -54,10 +53,10 @@ The Quick Start option only requires you to download a single file, rather than
To accept the license terms, set global > agreeToLicense to "yes".
To specify the address of the license server, set global > licenseServer using the format port_number@host.
Next, install the Helm chart for MATLAB Production Server by using the following `helm install` command:
Next, install the Helm chart for MATLAB Production Server R2025a by using the following `helm install` command:
```
helm install -f <path/to/values-overrides.yaml> [-n <k8s-namespace>] --generate-name oci://containers.mathworks.com/matlab-prodserver-k8s --version 1.1.0
helm install -f <path/to/values-overrides.yaml> [-n <k8s-namespace>] --generate-name oci://containers.mathworks.com/matlab-prodserver-k8s --version 1.2.0
```
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.
Expand All @@ -71,7 +70,7 @@ The MATLAB Production Server on Kubernetes GitHub repository contains Helm chart
```
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.
2. Navigate to the Helm chart folder for the release you want to use. Replace `<release>` with the release version, for example, `R2024b`.
2. Navigate to the Helm chart folder for the release you want to use. Replace `<release>` with the release version, for example, `R2025a`.
```
cd matlab-production-server-on-kubernetes/releases/<release>/matlab-prodserver
```
Expand All @@ -88,7 +87,7 @@ The MATLAB Production Server on Kubernetes GitHub repository contains Helm chart
```
* `containers.mathworks.com` is the name of the container registry.
* `matlab-production-server` is the name of the repository.
* `<release-tag>` is the tag name of the MATLAB Production Server release, for example, `r2024b`.
* `<release-tag>` is the tag name of the MATLAB Production Server release, for example, `r2025a`.
The `values.yaml` file specifies these values in the `productionServer` section, in the `registry`, `repository`, and `tag` variables, respectively.
Expand All @@ -99,7 +98,7 @@ The MATLAB Production Server on Kubernetes GitHub repository contains Helm chart
```
* `containers.mathworks.com` is the name of the container registry.
* `matlab-runtime` is the name of the repository.
* `<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.
* `<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.
The `values.yaml` file specifies these values in the `matlabRuntime` section, in the `registry`, `repository`, and `tag` variables, respectively.
Expand Down Expand Up @@ -174,7 +173,7 @@ The default server configuration properties are stored in a [ConfigMap](https://
## Execute Deployed Functions
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.
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.
## Request Enhancements
Expand All @@ -187,5 +186,5 @@ If you require assistance, contact [MathWorks Technical Support](https://www.mat
## License
MATHWORKS CLOUD REFERENCE ARCHITECTURE LICENSE © 2024 The MathWorks, Inc.
MATHWORKS CLOUD REFERENCE ARCHITECTURE LICENSE © 2025 The MathWorks, Inc.

This file was deleted.

65 changes: 0 additions & 65 deletions releases/R2022a/matlab-prodserver/values.yaml

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
apiVersion: v2
appVersion: "R2022a"
appVersion: "R2025a"
description: MATLAB Production Server Helm chart for Kubernetes
name: matlab-prodserver-k8s
version: 0.1.1
version: 1.2.0
18 changes: 18 additions & 0 deletions releases/R2025a/matlab-prodserver/templates/_helpers.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Chart validation checks:

{{- define "checkConditionReplicaCount" -}}
{{- if and (gt (int .Values.deploymentSettings.replicaCount) 1) .Values.matlabProductionServerSettings.autoDeploy.archivesApi.createPVC }}
{{- if ne .Values.matlabProductionServerSettings.autoDeploy.archivesApi.accessMode "ReadWriteMany" }}
{{- fail "Configuring multiple replicas requires PVC with ReadWriteMany Access-Mode." }}
{{- end }}
{{- end }}
{{- end }}

{{- define "checkConditionVolumeType" -}}
{{- if .Values.matlabProductionServerSettings.autoDeploy.archivesApi.enabled }}
{{- $volumeType := .Values.matlabProductionServerSettings.autoDeploy.volumeType }}
{{- if and (ne $volumeType "pvc") (ne $volumeType "empty") }}
{{- fail "Configuring archives API is only supported with pvc or empty volume types." }}
{{- end }}
{{- end }}
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
#
# Expose MATLAB Production Server internal endpoint
#
kind: Service
apiVersion: v1
metadata:
name: matlab-production-server
namespace: {{ .Release.Namespace }}
labels:
app: mps
release: {{ .Release.Name }}
spec:
selector:
app: mps
ports:
- name: mps-port
port: 9910
targetPort: 9910
type: ClusterIP

---
{{- if .Values.global.ingressController.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: matlab-production-server-ingress
namespace: {{ .Release.Namespace }}
labels:
release: {{ .Release.Name }}
annotations:
{{ if .Values.global.ingressController }}
## set ingress-conroller vendor-specific annotations:
{{- range $key, $value := .Values.global.ingressController.annotations }}
{{ $key }}: {{ quote $value }}
{{- end }}
{{ end }}
spec:
ingressClassName: {{ .Values.global.ingressController.name }}
{{ if .Values.global.ingressController.tls.enabled }}
tls:
- hosts:
- {{ .Values.global.ingressController.domainBase }}
{{- if .Values.global.ingressController.tls.secretName }}
secretName: {{ .Values.global.ingressController.tls.secretName }}
{{- end }}
{{ end }}

rules:
- host: {{ .Values.global.ingressController.domainBase }}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: matlab-production-server
port:
number: 9910
{{- end }}

---
{{ if and (.Values.optionalSettings.Prometheus.enabled) (.Capabilities.APIVersions.Has "monitoring.coreos.com/v1/ServiceMonitor") }}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: matlab-production-server-monitor
labels:
app: mps
app.kubernetes.io/part-of: {{ .Values.optionalSettings.Prometheus.matchOn }}
release: {{ .Values.optionalSettings.Prometheus.matchOn }}
spec:
selector:
matchLabels:
app: mps
release: {{ .Release.Name }}
namespaceSelector:
matchNames:
- {{ .Release.Namespace }}
endpoints:
- port: mps-port
path: /api/metrics
{{ end }}

Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ data:
main_config: |
--http 9910
--ssl-verify-peer-mode no-verify-peer
--ssl-protocols TLSv1.1,TLSv1.2
--ssl-protocols TLSv1.2
--ssl-ciphers ALL
--mcr-root /opt/matlabruntime/{{ .Values.images.matlabRuntime.variant }}
--num-workers {{ .Values.matlabProductionServerSettings.numWorkers | default 1 }}
Expand All @@ -24,7 +24,7 @@ data:
--log-rotation-size 100MB
--log-archive-root ./old_logs
--log-archive-max-size 1GB
--log-root ./log
{{ ternary "--log-root ./log" "" .Values.matlabProductionServerSettings.localFileLogging }}
--log-stdout
--license {{ .Values.global.licenseServer | default "27000@hostname" }}
--license-grace-period 2:30
Expand All @@ -42,15 +42,36 @@ data:
--server-memory-threshold-overflow-action purge_responses
--enable-discovery
--enable-metrics
{{ ternary "--enable-archive-management" "" .Values.matlabProductionServerSettings.autoDeploy.archivesApi.enabled }}
--routes-file ./config/routes.json
{{- if .Values.matlabProductionServerSettings.accessControl.enabled }}
--access-control-provider OAuth2
--access-control-config ./config/jwt_idp.json
--access-control-policy ./config/ac_policy.json

jwt_idp.json: {{ .Values.matlabProductionServerSettings.accessControl.identityProvider | quote }}

ac_policy.json: {{ .Values.matlabProductionServerSettings.accessControl.policyRules | quote }}
{{- end }}

{{- if .Values.optionalSettings.Redis.host }}
mps_cache_config: |
{"Connections":
{"{{ .Values.optionalSettings.Redis.name }}":
{"Provider":"Redis",
"Host":{{ .Values.optionalSettings.Redis.host | quote }},
"Port":{{ .Values.optionalSettings.Redis.port | default 6379 }}}
"Port":{{ .Values.optionalSettings.Redis.port | default 6379 }}
{{- if .Values.optionalSettings.Redis.auth }}
,"Key":{{ .Values.optionalSettings.Redis.auth | quote }}
{{- end }}
}
}
}
{{- end }}

routes.json: |
{
"version": "1.0.0",
"pathmap": []
}
Loading
Loading