Operator Helm values
Configure the ToolHive operator with these Helm values.
This reference lists values declared in the chart's default values.yaml.
Templates can also accept optional settings and inherited global values.
Chart: toolhive-operator. Chart version: 0.52.0. Source:
values.yaml
at v0.52.0.
Values
nameOverride
Type: string
Default: ""
Override the chart name used in resource labels and generated names.
fullnameOverride
Type: string
Default: "toolhive-operator"
Override the generated name of the operator Deployment and related resources.
operator
Type: object
Default value
affinity: {}
autoscaling:
enabled: false
maxReplicas: 100
minReplicas: 1
targetCPUUtilizationPercentage: 80
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1000
seccompProfile:
type: RuntimeDefault
defaultImagePullSecrets: []
defaultRedis:
addr: ''
existingSecret: ''
existingSecretKey: ''
env: []
features:
experimental: false
storageVersionMigrator: true
gc:
gogc: 75
gomemlimit: 110MiB
image: ghcr.io/stacklok/toolhive/operator:v0.52.0
imageDiscovery:
enabled: false
resources: {}
imagePullPolicy: IfNotPresent
imagePullSecrets: []
leaderElectionRole:
binding:
name: toolhive-operator-leader-election-rolebinding
name: toolhive-operator-leader-election-role
rules:
- apiGroups:
- ''
resources:
- configmaps
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- events.k8s.io
resources:
- events
verbs:
- create
- patch
livenessProbe:
httpGet:
path: /healthz
port: health
initialDelaySeconds: 15
periodSeconds: 20
nodeSelector: {}
podAnnotations: {}
podLabels: {}
podSecurityContext:
runAsNonRoot: true
ports:
- containerPort: 8080
name: metrics
protocol: TCP
- containerPort: 8081
name: health
protocol: TCP
proxyHost: 0.0.0.0
rbac:
allowedNamespaces: []
scope: cluster
readinessProbe:
httpGet:
path: /readyz
port: health
initialDelaySeconds: 5
periodSeconds: 10
replicaCount: 1
resources:
limits:
cpu: 500m
memory: 128Mi
requests:
cpu: 10m
memory: 64Mi
serviceAccount:
annotations: {}
automountServiceAccountToken: true
create: true
labels: {}
name: toolhive-operator
tolerations: []
toolhiveRunnerImage: ghcr.io/stacklok/toolhive/proxyrunner:v0.52.0
vmcpImage: ghcr.io/stacklok/toolhive/vmcp:v0.52.0
volumeMounts: []
volumes: []
Settings for the operator Deployment and related resources.
operator.features.experimental
Type: bool
Default: false
Enable experimental operator features.
operator.features.storageVersionMigrator
Type: bool
Default: true
Enable the storage version migration controller to rewrite resources in the
current storage version and remove obsolete entries from CRD
status.storedVersions. Applies to ToolHive CRDs with the
toolhive.stacklok.dev/auto-migrate-storage-version label set to "true".
Requires operator.rbac.scope=cluster; set this to false for namespace-scoped
installations.
operator.replicaCount
Type: int
Default: 1
Number of operator replicas when autoscaling is disabled. Leader election selects one active controller replica.
operator.imagePullSecrets
Type: list
Default: []
Image pull Secrets for the operator pod, as objects with a name field. Secrets
must exist in the release namespace.
operator.defaultImagePullSecrets
Type: list
Default: []
Default image pull Secrets for workloads created by the operator. Accepts Secret
names or objects with a name field. Entries are merged with each resource's
imagePullSecrets, with resource-level entries taking precedence for duplicate
names. Secrets must exist in each workload's namespace.
operator.defaultRedis
Type: object
Default: {"addr":"","existingSecret":"","existingSecretKey":""}
Default Redis or Valkey session storage settings for workloads without
spec.sessionStorage configured.
operator.defaultRedis.addr
Type: string
Default: ""
Redis or Valkey address in host:port format. When empty, uses
global.redis.host and global.redis.port (default 6379) from a parent
chart. No default session storage is configured when neither address is set.
operator.defaultRedis.existingSecret
Type: string
Default: ""
Name of an existing Secret containing the Redis password. When empty, uses
global.redis.existingSecret. The Secret must exist in each workload's
namespace. Used only when a Redis address is configured.
operator.defaultRedis.existingSecretKey
Type: string
Default: ""
Key containing the password in existingSecret. When empty, uses
global.redis.existingSecretKey, then redis-password.
operator.image
Type: string
Default: "ghcr.io/stacklok/toolhive/operator:v0.52.0"
Container image for the operator.
operator.imagePullPolicy
Type: string
Default: "IfNotPresent"
Image pull policy for the operator container and image-discovery containers.
operator.toolhiveRunnerImage
Type: string
Default: "ghcr.io/stacklok/toolhive/proxyrunner:v0.52.0"
Container image for ToolHive proxy runners created by the operator.
operator.vmcpImage
Type: string
Default: "ghcr.io/stacklok/toolhive/vmcp:v0.52.0"
Container image for Virtual MCP Server (vMCP) deployments created by the operator.
operator.imageDiscovery
Type: object
Default: {"enabled":false,"resources":{}}
Image discovery settings for manifest scanners used to mirror images into air-gapped environments.
operator.imageDiscovery.enabled
Type: bool
Default: false
Render a zero-replica Deployment with image: entries for
operator.toolhiveRunnerImage, operator.vmcpImage, and registryAPI.image.
This lets manifest scanners discover images otherwise supplied to the operator
through environment variables. The Deployment runs no pods.
operator.imageDiscovery.resources
Type: object
Default: {}
Resource requests and limits for image-discovery containers. Admission policies can require these values even when the Deployment has zero replicas.
operator.proxyHost
Type: string
Default: "0.0.0.0"
Bind address for proxy runners in managed MCPServer and MCPRemoteProxy workloads.
operator.env
Type: list
Default: []
Additional environment variables for the operator container. Chart-managed
variables take precedence for duplicate names. Set TOOLHIVE_SKIP_UPDATE_CHECK
to "true" to disable periodic update checks and the usage metrics collected
with them.
operator.ports
Type: list
Default value
- containerPort: 8080
name: metrics
protocol: TCP
- containerPort: 8081
name: health
protocol: TCP
Ports declared on the operator container. The default metrics and health
names identify the metrics and health-check ports.
operator.podAnnotations
Type: object
Default: {}
Annotations to add to the operator pod.
operator.podLabels
Type: object
Default: {}
Labels to add to the operator pod.
operator.podSecurityContext
Type: object
Default: {"runAsNonRoot":true}
Security context for the operator pod and image-discovery pod template.
operator.containerSecurityContext
Type: object
Default value
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1000
seccompProfile:
type: RuntimeDefault
Security context for the operator container and image-discovery containers.
operator.livenessProbe
Type: object
Default:
{"httpGet":{"path":"/healthz","port":"health"},"initialDelaySeconds":15,"periodSeconds":20}
Liveness probe for the operator container. The default probe uses the named
health port.
operator.readinessProbe
Type: object
Default:
{"httpGet":{"path":"/readyz","port":"health"},"initialDelaySeconds":5,"periodSeconds":10}
Readiness probe for the operator container. The default probe uses the named
health port.
operator.autoscaling
Type: object
Default:
{"enabled":false,"maxReplicas":100,"minReplicas":1,"targetCPUUtilizationPercentage":80}
Horizontal Pod Autoscaler settings for the operator Deployment.
operator.autoscaling.enabled
Type: bool
Default: false
Create a Horizontal Pod Autoscaler for the operator Deployment. When enabled,
the chart omits replicaCount from the Deployment.
operator.autoscaling.minReplicas
Type: int
Default: 1
Minimum number of operator replicas when autoscaling is enabled.
operator.autoscaling.maxReplicas
Type: int
Default: 100
Maximum number of operator replicas when autoscaling is enabled.
operator.autoscaling.targetCPUUtilizationPercentage
Type: int
Default: 80
Target average CPU utilization as a percentage of requested CPU for autoscaling.
operator.resources
Type: object
Default:
{"limits":{"cpu":"500m","memory":"128Mi"},"requests":{"cpu":"10m","memory":"64Mi"}}
Resource requests and limits for the operator container.
operator.gc
Type: object
Default: {"gogc":75,"gomemlimit":"110MiB"}
Go runtime memory and garbage collection settings for the operator container.
operator.gc.gomemlimit
Type: string
Default: "110MiB"
Go runtime soft memory limit, supplied as GOMEMLIMIT.
operator.gc.gogc
Type: int
Default: 75
Target heap growth percentage between garbage collections, supplied as GOGC.
The Go runtime default is 100.
operator.rbac
Type: object
Default: {"allowedNamespaces":[],"scope":"cluster"}
Role-based access control (RBAC) settings for the operator.
operator.rbac.scope
Type: string
Default: "cluster"
Permission scope for the operator. cluster creates a ClusterRoleBinding for
cluster-wide access. namespace creates a RoleBinding to the operator
ClusterRole in each entry of allowedNamespaces and limits watches to those
namespaces. Namespace scope requires
operator.features.storageVersionMigrator=false.
operator.rbac.allowedNamespaces
Type: list
Default: []
Namespaces to watch and manage when scope is namespace. Each namespace
receives a RoleBinding to the operator ClusterRole.
operator.serviceAccount
Type: object
Default value
annotations: {}
automountServiceAccountToken: true
create: true
labels: {}
name: toolhive-operator
ServiceAccount settings for the operator.
operator.serviceAccount.create
Type: bool
Default: true
Create the operator ServiceAccount.
operator.serviceAccount.automountServiceAccountToken
Type: bool
Default: true
Automatically mount Kubernetes API credentials for pods using the chart-created
ServiceAccount. Used only when create is true.
operator.serviceAccount.annotations
Type: object
Default: {}
Annotations to add to the chart-created ServiceAccount.
operator.serviceAccount.labels
Type: object
Default: {}
Labels to add to the chart-created ServiceAccount.
operator.serviceAccount.name
Type: string
Default: "toolhive-operator"
Name of the ServiceAccount used by the operator. When empty, uses the generated
resource name if create is true, or the namespace's default ServiceAccount
if create is false.
operator.leaderElectionRole
Type: object
Default value
binding:
name: toolhive-operator-leader-election-rolebinding
name: toolhive-operator-leader-election-role
rules:
- apiGroups:
- ''
resources:
- configmaps
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- events.k8s.io
resources:
- events
verbs:
- create
- patch
Namespaced Role and RoleBinding settings for operator leader election.
operator.leaderElectionRole.name
Type: string
Default: "toolhive-operator-leader-election-role"
Name of the Role used for operator leader election.
operator.leaderElectionRole.binding.name
Type: string
Default: "toolhive-operator-leader-election-rolebinding"
Name of the RoleBinding used for operator leader election.
operator.leaderElectionRole.rules
Type: list
Default value
- apiGroups:
- ''
resources:
- configmaps
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- events.k8s.io
resources:
- events
verbs:
- create
- patch
Permission rules for the operator leader election Role.
operator.volumes
Type: list
Default: []
Additional volumes for the operator pod.
operator.volumeMounts
Type: list
Default: []
Additional volume mounts for the operator container.
operator.nodeSelector
Type: object
Default: {}
Node selector for scheduling the operator pod.
operator.tolerations
Type: list
Default: []
Tolerations for scheduling the operator pod.
operator.affinity
Type: object
Default: {}
Affinity rules for scheduling the operator pod.
registryAPI
Type: object
Default: {"image":"ghcr.io/stacklok/thv-registry-api:v1.5.2"}
Settings for the registry API workloads created by the operator.
registryAPI.image
Type: string
Default: "ghcr.io/stacklok/thv-registry-api:v1.5.2"
Container image for registry API workloads created by the operator.