A Helm chart for installing Numaflow in Kubernetes
- Install helm3
The following steps will help you install numaflow via helm.
helm repo add numaflow https://numaproj.io/helm-chartshelm repo ls
Output:
NAME URL
numaflow https://numaproj.io/helm-chartshelm install numaflow numaflow/numaflow --namespace numaflow-system --create-namespaceNOTE: By default, numaflow will be installed in Cluster Scope, for namespace scope installation run below command.
helm install numaflow numaflow/numaflow --namespace numaflow-system --set configs.namespacedScope=true --create-namespace
NOTE: By default, numaflow will be installed latest version chart, to install a specific version, specify the chart version as parameter.
helm install numaflow numaflow/numaflow --namespace numaflow-system --create-namespace --version 0.0.3
Output:
NAME: numaflow
LAST DEPLOYED: Wed Nov 27 10:20:41 2024
NAMESPACE: numaflow-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
1. Get the application URL by running these commands:
kubectl --namespace numaflow-system port-forward svc/numaflow-server 8443
echo "Visit https://127.0.0.1:8443 to use your application"you have successfully installed Numaflow!!!
You can run the following commands if you wish to verify if all desired components are installed successfully.
- Check if the numaflow components are running successfully
kubectl get po -n numaflow-system
Output:
NAME READY STATUS RESTARTS AGE
numaflow-controller-6f764f7958-mfvq7 1/1 Running 0 75s
numaflow-dex-server-c785467c7-c6hqj 1/1 Running 0 75s
numaflow-server-c58445b7b-lxjw4 1/1 Running 0 75s
numaflow-webhook-74477447cc-b255v 1/1 Running 0 75s- Install the Inter-Step Buffer Service that handles communication between vertices.
kubectl apply -f https://raw.githubusercontent.com/numaproj/numaflow/main/examples/0-isbsvc-jetstream.yaml
- Follow the steps here for a running pipeline.
helm uninstall numaflow --namespace numaflow-systemPodDisruptionBudgets are disabled by default and can be enabled independently for the server, controller, Dex server, and validating webhook. For example:
server:
replicaCount: 2
podDisruptionBudget:
enabled: true
minAvailable: 1Set either minAvailable or maxUnavailable, but not both. To use maxUnavailable, set minAvailable: null.
| Key | Type | Default | Description |
|---|---|---|---|
| controller.replicaCount | string | 1 |
The number of controller replicas to run. |
| controller.podDisruptionBudget.enabled | bool | false |
Whether to create a PodDisruptionBudget for the controller. |
| controller.podDisruptionBudget.minAvailable | int/string | 1 |
Minimum number or percentage of controller pods that must remain available. |
| controller.podDisruptionBudget.maxUnavailable | int/string | null |
Maximum number or percentage of controller pods that may be unavailable. |
| controller.resources.limits.cpu | string | "500m" |
The CPU limits for controller. |
| controller.resources.limits.memory | string | "1024Mi" |
The memory limits for controller. |
| controller.resources.requests.cpu | string | "100m" |
The CPU requests for controller. |
| controller.resources.requests.memory | string | "200Mi" |
The memory requests for controller. |
| controller.configs.leaderElection.disabled | bool | false |
Whether to disable leader election for the controller, defaults to false |
| controller.configs.leaderElection.leaseDuration | string | 15s |
Set leaseDuration |
| controller.configs.leaderElection.renewDuration | string | 10s |
Set renewDuration |
| controller.configs.leaderElection.renewPeriod | string | 2s |
Set renewPeriod |
| dexServer.image.pullPolicy | string | "Always" |
Image Pull policy of dex server for authentication. |
| dexServer.image.repository | string | "dexidp/dex" |
Image of dex server for authentication. |
| dexServer.image.tag | string | "v2.37.0" |
Tag of dex server for authentication. |
| dexServer.replicaCount | string | 1 |
The number of dex server replicas to run. |
| dexServer.podDisruptionBudget.enabled | bool | false |
Whether to create a PodDisruptionBudget for the Dex server. |
| dexServer.podDisruptionBudget.minAvailable | int/string | 1 |
Minimum number or percentage of Dex server pods that must remain available. |
| dexServer.podDisruptionBudget.maxUnavailable | int/string | null |
Maximum number or percentage of Dex server pods that may be unavailable. |
| dexServer.secret.data.GITHUB_CLIENT_ID | string | "" |
GitHub client ID for authentication. |
| dexServer.secret.data.GITHUB_CLIENT_SECRET | string | "" |
GitHub client secret for authentication. |
| numaflow.image.pullPolicy | string | "Always" |
Image Pull policy of numaflow server. |
| numaflow.image.repository | string | "quay.io/numaproj/numaflow" |
Image of numaflow server. |
| numaflow.image.tag | string | "v1.3.3" |
Tag of numaflow server. |
| server.replicaCount | string | 1 |
The number of replicas of numaflow-server to run. |
| server.podDisruptionBudget.enabled | bool | false |
Whether to create a PodDisruptionBudget for the Numaflow server. |
| server.podDisruptionBudget.minAvailable | int/string | 1 |
Minimum number or percentage of server pods that must remain available. |
| server.podDisruptionBudget.maxUnavailable | int/string | null |
Maximum number or percentage of server pods that may be unavailable. |
| server.resources.limits.cpu | string | 500m |
The CPU limits for numaflow-server. |
| server.resources.limits.memory | string | 1024Mi |
The memory limits for numaflow-server. |
| server.resources.requests.cpu | string | 100m |
The CPU requests for numaflow-server. |
| server.resources.requests.memory | string | 200Mi |
The memory requests for numaflow-server. |
| server.configs.insecure | bool | false |
Whether to disable TLS for UX server. |
| server.configs.insecurePort | string | 8080 |
Insecure port for numaflow-server, in case insecure is enabled. |
| server.configs.port | string | 8443 |
Port to listen on for the numaflow server. |
| server.configs.baseHref | string | "/" |
Base href for Numaflow UX server, defaults to '/'. |
| server.configs.readOnly | bool | false |
Whether to run the UX server in read-only mode, defaults to false. |
| server.configs.authDisable | bool | true |
Whether to disable authentication and authorization for the UX server, defaults to false. |
| server.configs.dexServer | string | "http://numaflow-dex-server:5556/dex" |
The address of the Dex server for authentication. |
| server.configs.host | string | "localhost" |
The host to listen on for the numaflow server. |
| server.configs.cors.allowedOrigins | string | "" |
The allowed origins for CORS, defaults to ''. |
| configs.managedNamespace | string | "numaflow-system" |
The namespace that the controller and the UX server watch when "namespaced" is true. |
| configs.namespacedScope | bool | false |
Whether to run the controller and the UX server in namespaced scope, defaults to false. |
| configs.webhook.enabled | bool | true |
Whether to deploy numaflow server validating webhook, default to true. Note: deploy only when namespacedScope is false. |
| configs.webhook.podDisruptionBudget.enabled | bool | false |
Whether to create a PodDisruptionBudget for the validating webhook. |
| configs.webhook.podDisruptionBudget.minAvailable | int/string | 1 |
Minimum number or percentage of webhook pods that must remain available. |
| configs.webhook.podDisruptionBudget.maxUnavailable | int/string | null |
Maximum number or percentage of webhook pods that may be unavailable. |