A Helm chart for deploying Kruize on Kubernetes/OpenShift clusters.
Kruize is an intelligent resource optimization platform that helps you optimize your Kubernetes workloads by providing recommendations for CPU and memory resources based on actual usage patterns.
- Kubernetes 1.23.0+ or OpenShift 4.10+
- Helm 3.0+
- Prometheus (for Minikube, Kind clusters)
To install the chart from source code, run:
git clone https://github.com/kruize/kruize-helm cd kruize-helm
To install the chart with OpenShift-specific configuration:
helm install kruize ./charts/kruize -f ./charts/kruize/values-openshift.yamlTo install in a specific namespace:
helm install kruize ./charts/kruize -f ./charts/kruize/values-openshift.yaml --namespace openshift-tuning --create-namespaceTo install the chart with Minikube-specific configuration:
helm install kruize ./charts/kruize -f ./charts/kruize/values-minikube.yamlTo install in a specific namespace:
helm install kruize ./charts/kruize -f ./charts/kruize/values-minikube.yaml --namespace monitoring --create-namespaceTo uninstall/delete the kruize deployment:
helm uninstall kruize -n <namespace>The following table lists the configurable parameters of the Kruize chart and their default values.
| Parameter | Description | Default |
|---|---|---|
kruize.image.repository |
Repository for Kruize container image | quay.io/kruize/autotune_operator |
kruize.image.pullPolicy |
Image pull policy for the Kruize container image | Always |
kruize.image.tag |
Image tag for Kruize container | 0.11.1 |
kruize.replicaCount |
Replica count for the Kruize container | 1 |
kruize.resources.requests.memory |
Memory resource request for the Kruize container | 768Mi |
kruize.resources.requests.cpu |
CPU resource request for the Kruize container | 0.7 |
kruize.resources.limits.memory |
Memory resource limit for the Kruize container | 768Mi |
kruize.resources.limits.cpu |
CPU resource limit for the Kruize container | 0.7 |
kruize.service.type |
Kruize service type | NodePort |
kruize.service.port |
Kruize service port | 8080 |
| Parameter | Description | Default |
|---|---|---|
kruize.env[].LOGGING_LEVEL |
Logging level for Kruize | info |
kruize.env[].ROOT_LOGGING_LEVEL |
Root logging level | error |
kruize.env[].DB_CONFIG_FILE |
Path to database configuration file | /etc/config/dbconfigjson |
kruize.env[].KRUIZE_CONFIG_FILE |
Path to Kruize configuration file | /etc/config/kruizeconfigjson |
kruize.env[].JAVA_TOOL_OPTIONS |
Java tool options | -XX:MaxRAMPercentage=80 |
kruize.env[].KAFKA_BOOTSTRAP_SERVERS |
Kafka bootstrap servers | kruize-kafka-cluster-kafka-bootstrap.kafka.svc.cluster.local:9092 |
kruize.env[].KAFKA_TOPICS |
Kafka topics | recommendations-topic,error-topic,summary-topic |
kruize.env[].KAFKA_RESPONSE_FILTER_INCLUDE |
Kafka response filter include patterns | experiments|status|apis|recommendations|response|status_history |
kruize.env[].KAFKA_RESPONSE_FILTER_EXCLUDE |
Kafka response filter exclude patterns | "" |
| Parameter | Description | Default |
|---|---|---|
kruize.config.clusterType |
Type of cluster | kubernetes |
kruize.config.k8sType |
Kubernetes distribution type (openshift/minikube/kubernetes) | kubernetes |
kruize.config.authType |
Authentication type | "" |
kruize.config.monitoringAgent |
Monitoring agent to use | prometheus |
kruize.config.monitoringService |
Monitoring service name | prometheus-k8s |
kruize.config.monitoringEndPoint |
Monitoring endpoint | prometheus-k8s |
kruize.config.saveToDB |
Enable saving data to database | true |
kruize.config.dbDriver |
Database driver | jdbc:postgresql:// |
kruize.config.plots |
Enable plots generation | true |
kruize.config.isROSEnabled |
Enable ROS (Resource Optimization Service) | false |
kruize.config.local |
Run in local mode | true |
kruize.config.logAllHttpReqAndResp |
Log all HTTP requests and responses | true |
kruize.config.experimentNameFormat |
Format for experiment names | %datasource%|%clustername%|%namespace%|%workloadname%(%workloadtype%)|%containername% |
kruize.config.bulkapilimit |
Bulk API limit | 1000 |
kruize.config.isKafkaEnabled |
Enable Kafka integration | false |
| Parameter | Description | Default |
|---|---|---|
kruize.config.hibernate.dialect |
Hibernate dialect | org.hibernate.dialect.PostgreSQLDialect |
kruize.config.hibernate.driver |
Hibernate driver | org.postgresql.Driver |
kruize.config.hibernate.c3p0minsize |
C3P0 minimum pool size | 5 |
kruize.config.hibernate.c3p0maxsize |
C3P0 maximum pool size | 10 |
kruize.config.hibernate.c3p0timeout |
C3P0 timeout | 300 |
kruize.config.hibernate.c3p0maxstatements |
C3P0 max statements | 100 |
kruize.config.hibernate.hbm2ddlauto |
Hibernate hbm2ddl.auto setting | none |
kruize.config.hibernate.showsql |
Show SQL queries | false |
kruize.config.hibernate.timezone |
Database timezone | UTC |
| Parameter | Description | Default |
|---|---|---|
kruize.config.logging.cloudwatch.accessKeyId |
AWS CloudWatch access key ID | "" |
kruize.config.logging.cloudwatch.logGroup |
CloudWatch log group | kruize-logs |
kruize.config.logging.cloudwatch.logStream |
CloudWatch log stream | kruize-stream |
kruize.config.logging.cloudwatch.region |
AWS region for CloudWatch | "" |
kruize.config.logging.cloudwatch.secretAccessKey |
AWS CloudWatch secret access key | "" |
kruize.config.logging.cloudwatch.logLevel |
CloudWatch log level | INFO |
| Parameter | Description | Default |
|---|---|---|
kruize.config.datasource |
Array of datasource configurations | [] (empty, platform-specific) |
Note: Datasource configuration is platform-specific:
- OpenShift: Configured in
values-openshift.yamlwith prometheus-k8s and thanos-querier in openshift-monitoring namespace - Minikube: Configured in
values-minikube.yamlwith prometheus-k8s in monitoring namespace - Generic Kubernetes: Empty by default, configure based on your monitoring setup
| Parameter | Description | Default |
|---|---|---|
db.image.repository |
Repository for Kruize DB container image | quay.io/kruizehub/postgres |
db.image.pullPolicy |
Image pull policy for the Kruize DB container image | IfNotPresent |
db.image.tag |
Image tag for Kruize DB container | 15.2 |
db.service.name |
Kruize DB service name | kruize-db-service |
db.service.type |
Kruize DB service type | ClusterIP |
db.service.port |
Kruize DB service port | 5432 |
db.resources.requests.memory |
Memory resource request for the Kruize DB container | 100Mi |
db.resources.requests.cpu |
CPU resource request for the Kruize DB container | 0.5 |
db.resources.limits.memory |
Memory resource limit for the Kruize DB container | 100Mi |
db.resources.limits.cpu |
CPU resource limit for the Kruize DB container | 0.5 |
db.pvc.storageClass |
Storage class for database PVC | manual |
db.pvc.storageSize |
Storage size for database PVC | 500Mi |
db.pvc.hostPath |
Host path for database storage | /mnt/data |
db.pvc.accessModes |
Access modes for PVC | [ReadWriteMany] |
db.volumeMountPath |
Volume mount path for database data | /var/lib/pgsql/data |
db.pgData |
PGDATA environment variable value | /var/lib/pg_data |
db.user |
User for Kruize DB container | admin |
db.password |
Password for Kruize DB container | admin |
db.adminUser |
Admin user for Kruize DB container | admin |
db.adminPassword |
Admin password for Kruize DB container | admin |
db.name |
Name of the Kruize DB | kruizeDB |
db.includeReleaseNameInDbName |
Include release name in database name for multi-instance support | false |
db.sslMode |
SSL mode for database connection | require |
| Parameter | Description | Default |
|---|---|---|
kruizeUI.image.repository |
Repository for Kruize UI container image | quay.io/kruize/kruize-ui |
kruizeUI.image.pullPolicy |
Image pull policy for the Kruize UI container image | Always |
kruizeUI.image.tag |
Image tag for Kruize UI container | 0.1.0 |
kruizeUI.replicaCount |
Replica count for the Kruize UI container | 1 |
kruizeUI.service.type |
Kruize UI service type | NodePort |
kruizeUI.service.port |
Kruize UI service port | 8080 |
| Parameter | Description | Default |
|---|---|---|
monitoring.enabled |
Enable ServiceMonitor for Prometheus Operator | true |
monitoring.interval |
Metrics scraping interval | 30s |
| Parameter | Description | Default |
|---|---|---|
cronJob.deletePartitionsThreshold |
Threshold for deleting old partitions (days) | 15 |
cronJob.createSchedule |
Schedule for running the cron job | 0 0 25 * * |
| Parameter | Description | Default |
|---|---|---|
serviceAccount.create |
Specifies whether a service account should be created | true |
serviceAccount.name |
The name of the service account to use | "" |
rbac.create |
Specifies whether OpenShift-specific RBAC resources should be created | true |
nameOverride |
Overrides the name of this Chart | "" |
fullnameOverride |
Overrides the fully qualified application name | "" |
networkPolicy.enabled |
Enable NetworkPolicy resources | false |
Create a custom-values.yaml file:
kruize:
replicaCount: 2
resources:
requests:
memory: "1Gi"
cpu: "1"
limits:
memory: "1Gi"
cpu: "1"Install with custom values:
helm install kruize ./charts/kruize -f custom-values.yaml