Helm additional manifests

For a complete ALB setup example including internal OTEL collector ingress and HPA, see the [ALB example values](https://github.com/ClickHouse/ClickStack-helm-charts/tree/main/examples/alb-ingress).

### TargetGroupBinding[​](#targetgroupbinding "Direct link to TargetGroupBinding")

For ALB scenarios that require explicit `TargetGroupBinding` resources:

```
additionalManifests:
  - apiVersion: elbv2.k8s.aws/v1beta1
    kind: TargetGroupBinding
    metadata:
      name: '{{ include "clickstack.fullname" . }}-tgb'
    spec:
      serviceRef:
        name: '{{ include "clickstack.fullname" . }}-app'
        port: app
      targetGroupARN: "arn:aws:elasticloadbalancing:us-east-1:123456789:targetgroup/my-tg/abc123"
      targetType: ip
```

## Advanced: wrapper chart templates[​](#advanced-wrapper-chart-templates "Direct link to Advanced: wrapper chart templates")

If you need structural helpers like `include "clickstack.labels" . | nindent 4`, render them from a wrapper chart template (`templates/*.yaml`) instead of putting those blocks directly in values files.

Example wrapper chart template snippet:

```
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ include "clickstack.fullname" . }}-extra
  labels:
    {{- include "clickstack.labels" . | nindent 4 }}
data:
  appPort: "{{ .Values.hyperdx.ports.app }}"
```

## Tips[​](#tips "Direct link to Tips")

### Helm hooks[​](#helm-hooks "Direct link to Helm hooks")

Each `additionalManifests` entry is rendered as a separate YAML document. You can add Helm hook annotations to control install/upgrade ordering:

```
additionalManifests:
  - apiVersion: batch/v1
    kind: Job
    metadata:
      name: post-install-job
      annotations:
        helm.sh/hook: post-install
        helm.sh/hook-delete-policy: hook-succeeded
    spec:
      template:
        spec:
          restartPolicy: Never
          containers:
            - name: migrate
              image: my-migration-image:latest
              command: ["./migrate.sh"]
```

### CRD ordering[​](#crd-ordering "Direct link to CRD ordering")

If your additional manifests include custom resources (for example, `PodMonitor`), the CRDs must already exist in the cluster before install/upgrade.

### Combining multiple resources[​](#combining-multiple-resources "Direct link to Combining multiple resources")

`additionalManifests` is a list. Entries are rendered in list order, and each entry becomes its own YAML document.

## Next steps[​](#next-steps "Direct link to Next steps")

- [Main Helm guide](/docs/use-cases/observability/clickstack/deployment/helm) - Basic installation
- [Configuration guide](/docs/use-cases/observability/clickstack/deployment/helm-configuration) - API keys, secrets, and ingress
- [Cloud deployments](/docs/use-cases/observability/clickstack/deployment/helm-cloud) - GKE, EKS, and AKS configurations
- [ClickStack Helm charts repository](https://github.com/ClickHouse/ClickStack-helm-charts) - Chart source code and values reference

- [How it works](#how-it-works)- [Values file constraints](#values-file-constraints)- [Available chart helpers](#available-chart-helpers)- [Examples](#examples)
        - [ServiceAccount](#serviceaccount)- [NetworkPolicy](#networkpolicy)- [HorizontalPodAutoscaler](#horizontalpodautoscaler)- [PodMonitor (Prometheus Operator)](#podmonitor)- [AWS ALB Ingress](#aws-alb-ingress)- [TargetGroupBinding](#targetgroupbinding)- [Advanced: wrapper chart templates](#advanced-wrapper-chart-templates)- [Tips](#tips)
            - [Helm hooks](#helm-hooks)- [CRD ordering](#crd-ordering)- [Combining multiple resources](#combining-multiple-resources)- [Next steps](#next-steps)

Was this page helpful?