Skip to main content
Sometimes you need to install external charts that are not managed by Porter. You can deploy custom Helm charts either through the Porter dashboard or directly via the Helm CLI.

Deploying via Porter

Deploy Helm charts through the Porter dashboard for a managed experience with visibility into your deployments.
1

Select Helm Chart addon

Navigate to Add-ons in your Porter dashboard and select Helm Chart.
2

Configure the chart

Enter the Helm repository URL and select the chart you want to deploy.
3

Select version

Choose the chart version you want to install.
4

Customize values (optional)

Modify any values from the chart’s default configuration as needed.
5

Deploy

Click Deploy to install the chart to your cluster.
Since custom Helm charts install external components into your cluster, they fall outside of Porter’s standard support. However, we’ll do our best to help you troubleshoot issues.

Managing deployed charts

Once deployed, you can:
  • View the chart status in the Add-ons tab
  • Update values and redeploy
  • Upgrade to newer chart versions
  • Delete the chart when no longer needed

Deploying via Helm CLI

For more control or CI/CD integration, you can deploy Helm charts directly using the Helm CLI.

Prerequisites

  1. Install the Helm CLI
  2. Configure kubectl to connect to your Porter cluster. Run:
    porter config set-cluster
    
    And select the cluster from the dropdown. If there is only one cluster in your project it will be automatically selected.

Deploying a chart

# Add the Helm repository
helm repo add <repo-name> <repo-url>
helm repo update

# Install the chart:
porter helm -- install <release-name> <repo-name>/<chart-name> \
  --namespace <namespace> \
  --values values.yaml

Example: Installing NGINX Ingress

# Add the ingress-nginx repository
porter helm -- repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
porter helm -- repo update

# Install the chart
porter helm -- install my-ingress ingress-nginx/ingress-nginx \
  --namespace ingress \
  --create-namespace

Upgrading a release

porter helm -- upgrade <release-name> <repo-name>/<chart-name> \
  --namespace <namespace> \
  --values values.yaml

Listing releases

porter helm -- list --all-namespaces

Uninstalling a release

porter helm -- uninstall <release-name> --namespace <namespace>

Observability

There is limited observability offered for third-party helm chart installations, consisting of logs available in the dashboard. For more complex scenarios, you can deploy a Grafana addon, which is already configured with the existing observability stack deployed in the cluster. Grafana makes it possible to explore, query and build dashboard to monitor any charts or workloads deployed in your cluster.

Best Practices

Use version pinning

Always specify a chart version to ensure reproducible deployments:
porter helm -- install my-release repo/chart --version 1.2.3

Store values in version control

Keep your custom values files in version control alongside your application code. For example, for the “custom-chart” helm chart, you can keep the following structure: porter-custom-helm-chart-addons/custom-chart/chart.yaml
# chart.yaml
chartUrl: https://custom-chart-repo.com
version: 1.0.0
porter-custom-helm-chart-addons/custom-chart/values.yaml
# values.yaml
replicaCount: 3
resources:
  limits:
    cpu: 100m
    memory: 128Mi
You can then use these values in CI to install the chart
CHART_URL=$(yq e '.chartUrl' porter-custom-helm-chart-addons/custom-chart/chart.yaml)
VERSION=$(yq e '.version' porter-custom-helm-chart-addons/custom-chart/chart.yaml)

porter helm -- install custom-chart $CHART_URL \
  --version $VERSION \
  --values porter-custom-helm-chart-addons/custom-chart/values.yaml

Test in non-production first

Before deploying to production, test custom charts in a development or staging cluster to verify compatibility with your Porter environment.