Installing SystemLink Enterprise
- Updated2026-04-08
- 7 minute(s) read
Install SystemLink Enterprise using Helm commands.
When installing SystemLink Enterprise, we typically perform configuration in three primary places:
- systemlink-values.yaml: Configures most of the application.
- systemlink-admin-values.yaml: Defines global resources in the SystemLink Admin Helm chart. These resources must be installed by Helm before installing the SystemLink Helm chart.
- systemlink-secrets.yaml: Defines Secrets in Helm. NI recommends using techniques such as sops to encrypt the file or the secret values in the file. It is optional to use this file to deploy secrets. If you do not wish to deploy secrets with this file, set global.deplySecrets to false in the systemlink-values.yaml.
Creating Namespaces
Create namespaces to organize your cluster.
- Create a namespace for the SystemLink Helm
chart:
kubectl create namespace <namespace>
- Create a namespace for the SystemLink Admin Helm
chart:
kubectl create namespace <admin-namespace>
Preparing Certificates
Configure certificates for Transport Layer Security (TLS) communication and authentication with external resources.
If you are using a certificate to authenticate and encrypt communication with your PostgreSQL instances, refer to PostgreSQL to deploy and reference these certificates in Helm.
If you are using a certificate signed by a private authority for the SystemLink Enterprise hostnames, MongoDB, or S3, refer to Private Certificate Authorities to deploy and reference these certificates in Helm.
Installing Cluster Prerequisites
Install prerequisite resources globally on the cluster.
A user with the following privileges must complete the following steps on the SystemLink Admin Helm chart:
- A cluster administrator with full access rights.
- An Argo Workflows user deploying only CustomResourceDefinition.
- A Flink Operator user deploying ClusterRoles and ClusterRoleBindings. The Flink Operator may require permissions to deploy cross-namespace.
For more details on Kubernetes permissions required for installation, refer to Required Kubernetes Permissions.
Download the SystemLink Admin Values File
Download a copy of systemlink-admin-values.yaml.
argoworkflowscrds:
crds:
install: falseflinkoperator: enabled: false
Install Prerequisites
helm upgrade <admin-release> oci://downloads.artifacts.ni.com/ni-docker/ni/helm-charts/systemlinkadmin --install --version <version> --namespace <admin-namespace> --values systemlink-admin-values.yaml --values systemlink-values.yaml --values systemlink-secrets.yaml --wait --timeout 20m0s
| Parameter | Description |
|---|---|
| admin-release | The release name used for installing the SystemLink Admin Helm chart. |
| downloads.artifacts.ni.com/ni-docker | The URL of the registry. If using a local mirror, replace this URL with the URL of the mirror registry. |
| version | The specific version of the software to install. |
| admin-namespace | The namespace created for the SystemLink Admin Helm chart. |
This command waits for up to the configured timeout for the install to complete and for all resources to enter a ready state. The default timeout is 20 minutes. The timeout is conservative but installation times might vary due to a variety of factors. Adjust the timeout if needed.
Configuring SystemLink Enterprise
Before installing SystemLink Enterprise, you must configure your SystemLink values files. Download the template configuration files from the SystemLink Enterprise GitHub repository to get started.
Configuration parameters for systemlink-values.yaml, systemlink-admin-values.yaml, and systemlink-secrets.yaml are documented throughout this manual. Each topic in this manual references the specific Helm values that apply to that configuration area.
Configuring an Elasticsearch Instance
Configure SystemLink Enterprise to access a remote Elasticsearch database to enhance scalability and performance.
You must follow these steps under the following conditions.
- You are upgrading from a SystemLink Enterprise version before 2025-07.
- You want to improve your search performance.
Choosing an Elasticsearch Deployment
SystemLink uses Elasticsearch to improve search performance. You can use an Elasticsearch instance in the same Kubernetes cluster as your SystemLink Enterprise installation or an external instance.
| Deployment | When to Use | Details |
|---|---|---|
| SystemLink Elasticsearch Helm chart |
|
You can run this instance on existing Kubernetes worker nodes or dedicated worker nodes using taints and tolerations. For more information and recommended resources, refer to Sizing Considerations when Deploying an Elasticsearch Instance. |
| Elastic Cloud | You want to simplify database provisioning, operation, backup, and restore operations. | For more information and recommended resources, refer to Sizing Considerations when Deploying an Elasticsearch Instance. |
Configuring the SystemLink Elasticsearch Helm Chart with Enabled Autoprovisioning
To configure Elasticsearch for the first time, you must provision the passwords.
- Open the elasticsearch.yaml file.
- Set the sl-elasticsearch.usersProvisioning.enabled value to True.
- Open the elasticsearch-secrets.yaml file.
- Set the password for each index.
Table 10. Indexes for Enabled Autoprovisioning Service User Password assetservicecdc assetscdc sl-elasticsearch.secrets.assetscdcPassword fileingestioncdc filescdc sl-elasticsearch.secrets.filescdcPassword - Deploy Elasticsearch.
Configuring a Remote Elasticsearch Instance or the SystemLink Elasticsearch Helm Chart with Disabled Autoprovisioning
To configure Elasticsearch for the first time, you must provision the indexes.
- Open the systemlink-secrets.yaml file.
- Set the password for each index.Note Some services require privileges on multiple indexes. For example, if the files,files_* parameter is specified, the service requires privileges for the following indexes:
- The files index.
- All indexes that match the files_* pattern (where * is a wildcard).
Table 11. Indexes for Disabled Autoprovisioning Service Database User Password assetservice assets,assets_* assetscdc assetservice.secrets.elasticsearch.password assetservicecdc assets,assets_* assetscdc assetservicecdc.secrets.elasticsearch.password fileingestion files,files_* filescdc fileingestion.secrets.elasticsearch.password fileingestioncdc files,files_* filescdc fileingestioncdc.secrets.elasticsearch.password - Deploy Elasticsearch.
Sizing Considerations When Deploying an Elasticsearch Instance
Resource requirements are based on service usage. Refer to the following table for tested configurations at a specified scale when configuring resources based on your expected usage.
Configure the Elasticsearch instances to handle the scale of your data.
| Usage Level | Scale | Nodes | CPU | RAM | Persistence |
|---|---|---|---|---|---|
| Baseline | 25000 assets | 2 | 1 | 4 GB | 1 GB |
| General | 25000 assets and 25 million files | 2 | 2 | 2 | 4 GB |
| High | 25000 assets and 80 million files | 4 | 2 | 4 GB | 200 GB |
Based on your scale, select and apply a configuration.
- Open the elasticsearch.yaml file.
- Set the sl-elasticsearch.elasticsearch.master.replicaCount
value to the listed nodes.Note For an optimal configuration, the number of nodes must not be smaller than the highest configured number of primary shards.
- Set the sl-elasticsearch.elasticsearch.master.resources.requests.cpu value to the listed CPU.
- Set the sl-elasticsearch.elasticsearch.master.resources.requests.memory value and the sl-elasticsearch.elasticsearch.master.resources.limits.memory value to the listed RAM.
- Set the sl-elasticsearch.elasticsearch.master.persistence.size value to the listed persistence storage size.
Configuring the Number of Primary Shards
Optimize your SystemLink configuration by ensuring that each service contains fewer primary shards than the number of nodes in Elasticsearch.
The following table contains configurations that NI tested at specific scales for the services.
| Service | Scale | Primary shards |
|---|---|---|
| Asset Service | 25000 assets | 1 |
| FileIngestion Service | 25 million files | 2 |
| FileIngestion Service | 80 million files | 4 |
- Open the systemlink-values.yaml file.
- Set the number of shards for the following variables:
- assetservicecdc.job.connectors.sink.elasticsearch.index.primaryShardsCount
- fileingestioncdc.job.connectors.sink.elasticsearch.index.primaryShardsCount
- Save the systemlink-values.yaml file.
Installing the Application
Install SystemLink Enterprise on the cluster.
The user who performs the installation does not need access to the full cluster. However, the user must have full access to the namespace created for the application.
Install SystemLink Enterprise
helm upgrade <release> oci://downloads.artifacts.ni.com/ni-docker/ni/helm-charts/systemlink --install --version <version> --namespace <namespace> --values systemlink-values.yaml --values systemlink-secrets.yaml --set-file database.postgresCertificate=postgres.pem --wait --timeout 20m0s
| Parameter | Description |
|---|---|
| release | The name Helm assigns to the installed collection of software. |
| downloads.artifacts.ni.com/ni-docker | The URL of the registry. If using a local mirror, replace this URL with the URL of the mirror registry. |
| version | The specific version of the software to install. |
| namespace | The namespace for the application. |
This command waits for up to the configured timeout for the install to complete and for all resources to enter a ready state. The default timeout is 20 minutes. The timeout is conservative but installation times might vary due to a variety of factors. Adjust the timeout if needed.
Validating the Install
Test that SystemLink Enterprise installed correctly.
You can validate a successful SystemLink Enterprise install by inspecting the readiness probes for the pods deployed by the SystemLink Enterprise Helm chart using either of the following methods:
- Using an application, such as Lens.
- Running the following
command:
kubectl describe pod <pod-name> -n <namespace>
kubectl logs <pod-name> -n <namespace>
Related Information
- Configuring SystemLink Repositories
Configure the NI public Helm repository and mirror it on an internal server.
- Updating SystemLink Enterprise
Modify the configuration or upgrade to a newer version of the SystemLink Enterprise application.
- Rotating Secrets
SystemLink Enterprise secrets may need to be modified or rotated based on changes to your environment, your organization's security policies, or other operational requirements. Different secrets require different procedures to ensure proper operation after modification.
- SystemLink Environment Architecture
SystemLink Enterprise is an application with a service-oriented architecture. Kubernetes hosted microservices compose the architecture. SystemLink Enterprise is scalable, fault-tolerant, and highly available. The following table summarizes the major components of the SystemLink Enterprise architecture.
- Elasticsearch GitHub guide
- Elasticsearch delete indices documentation
- SystemLink Enterprise Configuration Templates
- Helm Upgrade
- systemlink-values.yaml
- systemlink-admin-values.yaml
- systemlink-secrets.yaml
- Required Storage Infrastructure
SystemLink Enterprise requires several storage solutions to operate. You must configure each of these storage solutions before deploying the application.
- PostgreSQL
PostgreSQL is required for the dashboard host service, test monitor service, and dynamic form fields service.
- Identity and Access Management
SystemLink Enterprise supports user authentication through OpenID Connect (OIDC). This section provides configuration parameters and options for integrating with external identity providers and managing user roles.
- Networks and TLS
Learn how to configure networking and Transport Layer Security (TLS) for SystemLink Enterprise.
- Private Certificate Authorities
If you are using a private certificate authority (CA), you must configure SystemLink Enterprise to use the private CA to establish trust.
- Required Secrets
Secrets are Kubernetes objects that are used to store sensitive information.
- Required Permissions for Kubernetes
This section describes the Kubernetes RBAC permissions that are required to install, operate, and upgrade SystemLink Enterprise.
- Observing an SystemLink Enterprise Environment
SystemLink Enterprise supports integration with observability tools. With these tools you can monitor application performance. Trace requests across microservices and aggregate logs for troubleshooting.