Skip to main content

Helm charts

Nullplatform provides curated Helm charts to simplify deployment and management of infrastructure components.

Our charts are hosted at nullplatform/helm-charts.

Repository setup

  1. Add Helm repository

    helm repo add nullplatform https://nullplatform.github.io/helm-charts
    helm repo update
  2. Search available charts

    helm search repo nullplatform

Available charts

Chart nameDescription
nullplatform/baseCore infrastructure components
nullplatform/nullplatform-agentInstalls the nullplatform agent
nullplatform/cert-manager-configConfiguration for cert-manager and Let's Encrypt

Base chart

This chart contains the prerequisites required to configure your cluster for management by nullplatform.

Basic installation

helm install my-release nullplatform/base \
--version 1.0.0 \
--set global.provider=eks \
--set tls.secretName=prod-tls \
--set logging.datadog.enabled=true \
--set logging.datadog.apiKey=$DATADOG_KEY

Basic configuration

Mandatory settings:

  --set global.provider=<your-cloud> \
--set tls.secretName=<your-tls-secret> \

Note: Replace the placeholder values with your actual cloud provider and TLS secret

Recommended additional settings:

  --set nullplatform.apiKey=<your-api-key> \
--set controlPlane.enabled=true

Logging integration:

# Datadog example:
--set logging.datadog.enabled=true \
--set logging.datadog.apiKey=$DATADOG_API_KEY

Note: These examples assume you’ve exported the required credentials as environment variables.

Advanced configuration

Namespace customization

namespaces:
nullplatformApplications: "nullplatform-apps" # Custom namespace
nullplatformTools: "nullplatform-tools"
gateway: "edge-gateways"

Gateway scaling

gateway:
internal:
autoscaling:
minReplicas: 3 # Production recommendation
maxReplicas: 20
public:
autoscaling:
minReplicas: 5
maxReplicas: 25

Logging configuration

logging:
gelf:
enabled: true
host: "graylog.example.com"
port: 12201
loki:
enabled: true
host: "loki.monitoring.svc.cluster.local"

CloudWatch configuration

cloudwatch:        
enabled: false # Set to true when the logging backend is CloudWatch
region: us-east-1
accessLogs:
enabled: false

Key configuration options

ParameterDescriptionDefaultRequired
global.providerCloud provider (oks, gke, eks, aks)"eks"Yes
global.awsRegionAWS region for EKS clustersus-east-1EKS only
tls.secretNameName of the TLS secret used by ingress. Required when using Istio gateways""Yes
nullplatform.apiKeynullplatform API key for agents to communicate against the nullplatform API""Yes
nullplatform.secretNameName of an existing Kubernetes secret to mount, used as an alternative to setting nullplatform.apiKey directly""No
controlPlane.enabledEnables log management by nullplatformfalseYes
logging.gelf.enabledEnable GELF integrationfalseNo
logging.datadog.enabledEnable Datadog integrationfalseNo
logging.loki.enabledEnable Loki loggingfalseNo
metricsServer.enabledCluster metrics server
Required only if your cluster does not already include a metrics server
trueConditional
imagePullSecrets.registryPrivate registry
Mandatory when images are stored in a private registry
""Conditional
imagePullSecrets.usernameUsername for container registry
Required when images are stored in a private registry
""Conditional
imagePullSecrets.passwordPassword for container registry
Required when images are stored in a private registry
""Conditional
envoy.preserveExternalRequestId.enabledPreserves the original x-request-id and x-forwarded-for headers in Envoy-based ingress setupsfalseNo

Note: For a full list of configurable options, see the values.yaml file.

Agent chart

The nullplatform-agent chart installs the nullplatform agent, which enables automated lifecycle management of:

  • custom scopes
  • services
  • custom actions

Basic installation

helm install nullplatform-agent nullplatform/nullplatform-agent \
--set configuration.values.NP_API_KEY=$NP_API_KEY \
--set configuration.values.TAGS="$AGENT_TAGS" \
--set configuration.values.GITHUB_TOKEN=$GITHUB_TOKEN \
--set configuration.values.GITHUB_REPO=$GITHUB_REPO

Note: These examples assume you’ve exported the required credentials as environment variables.

Basic configuration

Minimal required values:

--set configuration.values.NP_API_KEY=<your-np-api-key> \
--set configuration.values.GITHUB_TOKEN=<your-github-token> \
--set configuration.values.GITHUB_REPO=<your-repo-url>
--set configuration.values.TAGS=<"key1:value1,key2:value2">

Advanced configuration

You can customize the agent’s startup arguments and environment using the args array and the configuration.values section:

args:
- "--tags=$(TAGS)"
- "--apikey=$(NP_API_KEY)"
- "--runtime=host"
- "--command-executor-env=NP_API_KEY=$(NP_API_KEY)"
- "--command-executor-debug"
- "--webserver-enabled"
- "--command-executor-git-command-repos https://$(GITHUB_TOKEN)@$(GITHUB_REPO)#$(GITHUB_BRANCH)"

Key configuration options

ParameterDescriptionDefaultRequired
replicaCountNumber of agent pods to run1No
namespaceKubernetes namespace for deploymentnullplatform-toolsYes
configuration.values.NP_API_KEYAPI key for authenticating with nullplatform. Needs to be assigned at the account level.""Yes
configuration.values.GITHUB_TOKENGitHub token used to pull private repositories""Yes
configuration.values.GITHUB_REPOGitHub repository URL used for command execution""Yes
configuration.values.GITHUB_BRANCHBranch name to pull commands from"main"No
configuration.values.GITHUB_USERGitHub username for authentication (optional use)""No
configuration.values.TAGSTags to associate with the agent, separated by commas. Example: environment:development,environment:staging""No
configuration.values.NP_LOG_LEVELLogging level for the agent"DEBUG"No
configuration.secretNameName of the Kubernetes secret to be creatednullplatform-agent-secretNo
configuration.createWhether to create the Kubernetes secrettrueNo
image.repositoryDocker image repository for the agentpublic.ecr.aws/nullplatform/controlplane-agentNo
image.tagImage tagbetaNo
image.pullPolicyImage pull policyNeverNo
autoscaling.enabledEnable horizontal pod autoscalingfalseNo
autoscaling.minReplicasMinimum number of pods when autoscaling is enabled1No
autoscaling.maxReplicasMaximum number of pods when autoscaling is enabled2No
autoscaling.targetCPUUtilizationPercentageCPU usage percentage target for autoscaling80No
resources.requests.cpuMinimum CPU requested100mNo
resources.requests.memoryMinimum memory requested64MiNo
resources.limits.cpuMaximum CPU allowed200mNo
resources.limits.memoryMaximum memory allowed128MiNo
livenessProbe.httpGet.pathHTTP path for liveness probe/healthNo
livenessProbe.httpGet.portHTTP port for liveness probe8080No
readinessProbe.httpGet.pathHTTP path for readiness probe/healthNo
readinessProbe.httpGet.portHTTP port for readiness probe8080No
serviceAccount.createWhether to create a service accounttrueNo
serviceAccount.nameName of the service accountnullplatform-agentNo
serviceAccount.automountAuto-mount the service account tokentrueNo
serviceAccount.role.rulesPermissions granted to the service account (cluster-wide *)* (wildcard permissions)No
podAnnotations.namePod annotationnullplatform-agentNo
podLabels.namePod labelnullplatform-agentNo
volumes[0].nameName of volume used for git repo cloningreposNo
volumes[0].typeType of volume usedemptyDirNo
volumeMounts[0].nameName of the volume mountreposNo
volumeMounts[0].mountPathMount path inside the container/root/.npNo
initContainersInit containers configuration for pre-execution setup tasks[]No
argsCommand-line arguments passed to the agent containerSeeAdvanced configurationNo

Note: For a full list of configurable options, see the values.yaml file.

Argument and configuration correlations

This section explains how configuration values are propagated into the container's runtime environment and used by the agent's command-line arguments.

Environment variable flow

configuration.values → pod environment variables → args (command-line arguments)

Key relationships

  • NP_API_KEY

    • Defined in: configuration.values.NP_API_KEY
    • Used in:
      • args[1]: --apikey=$(NP_API_KEY)
      • args[3]: --command-executor-env=NP_API_KEY=$(NP_API_KEY)
  • TAGS

    • Defined in: configuration.values.TAGS
    • Used in:
      • args[0]: --tags=$(TAGS)
  • GitHub Integration

    • Defined in: configuration.values.GITHUB_TOKEN, GITHUB_REPO, GITHUB_BRANCH
    • Used in:
      • args[6]: --command-executor-git-command-repos https://$(GITHUB_TOKEN)@$(GITHUB_REPO)#$(GITHUB_BRANCH)
  • Web Server

    • Enabled via: args[5]: --webserver-enabled
    • Correlated with: liveness and readiness probes on port 8080
  • Storage

    • Volume defined in: volumes[0] (name: repos, type: emptyDir)
    • Mounted via: volumeMounts[0] (mountPath: /root/.np)
    • Used by: Git operations from args[6]

Cert-manager config chart

Provides configuration for cert-manager to enable automated certificate provisioning with Let's Encrypt.

Provider-specific installation

Azure (AKS):

helm install certs nullplatform/cert-manager-config \
--set azure.enabled=true \
--set azure.subscriptionId=SUBSCRIPTION_ID \
--set azure.resourceGroupName=RESOURCE_GROUP \
--set azure.clientId=CLIENT_ID \
--set hostedZoneName=your-domain.io \
--namespace cert-manager

GCP (GKE):

helm install certs nullplatform/cert-manager-config \
--set gcp.enabled=true \
--set gcp.projectId=PROJECT_ID \
--set gcp.serviceAccountKey=$(base64 -w0 service-account.json) \
--set hostedZoneName=your-domain.io \
--namespace cert-manager

Key parameters

ParameterDescriptionDefaultRequired for
hostedZoneNameDomain for certificate validation""All providers
azure.subscriptionIdAzure subscription ID""Azure
gcp.serviceAccountKeybase64-encoded service account key""GCP

Note: For a full list of configurable options, see the values.yaml file.