Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
39efdbd
Initial Helm charts for openshift
chandrams Feb 5, 2026
4b1942f
Addressed sourcery comments and fixed a few issues
chandrams Feb 10, 2026
74ecc63
Removed hardcoding of cronjob schedule & fixed sourcery comments
chandrams Feb 10, 2026
c0ccc30
Updated README and LICENSE files to point to ones inside charts
chandrams Feb 23, 2026
17a066e
Missed checking in manual storage class
chandrams Feb 26, 2026
34f5f0e
Merge pull request #2 from chandrams/helm_charts_openshift
chandrams Mar 30, 2026
4c5b2da
Initial helm charts for minikube
chandrams Feb 18, 2026
c8ebf37
Updated labels
chandrams Mar 3, 2026
545e265
Fixed the selector label
chandrams Mar 3, 2026
242777c
Fixed issues with rbac, included options to append rel name to db
chandrams Mar 4, 2026
bc5bd51
Updated deployment name
chandrams Mar 5, 2026
cb3374e
Updated prometheus as a pre-requisite for minikube & kind cluster
chandrams Mar 19, 2026
e24321d
Addressed review comments
chandrams Mar 30, 2026
cdde1ce
Fixed document separators
chandrams Mar 30, 2026
2486199
Merge pull request #4 from chandrams/helm_charts_minikube
chandrams Apr 7, 2026
5794b62
Included helm chart unit tests
chandrams Mar 3, 2026
84d27e4
Included values schema
chandrams Mar 9, 2026
109856e
Created values specific to openshift and refactored the other files
chandrams Mar 9, 2026
f2a8928
Updated workflow to release to Github container registry
chandrams Apr 9, 2026
ae7c350
Removed ref from checkout
chandrams Apr 9, 2026
c226e85
Addressed sourcery comments
chandrams Apr 9, 2026
9d5df79
Fixed permission issues
chandrams Apr 9, 2026
c9c5ab4
Merge pull request #6 from chandrams/helm_charts_tests
chandrams Apr 14, 2026
d1dcfb2
Included workflows to run unittests, lint & renamed test folders
chandrams Mar 13, 2026
f5cf45c
Fixed issues with helm unittest workflow
chandrams Mar 16, 2026
c232056
Switched to checkout v4
chandrams Apr 8, 2026
d7fab1a
Merge pull request #9 from chandrams/ghcr_wrkflow
chandrams Apr 20, 2026
a117e4c
Merge pull request #7 from chandrams/workflows_unittest_lint
chandrams Apr 20, 2026
ac7c2c6
Updated templates & tests for Kruize UI pod to deployment
chandrams Apr 20, 2026
e0460f6
Fixed the typo in the file name
chandrams Apr 20, 2026
a447ed0
Fix typo in tests & update the test dir in readme
chandrams Apr 20, 2026
319576d
Updated readme to indicate when -v can be used
chandrams Apr 23, 2026
63d0de6
Fixed the verbose option to run the tests
chandrams Apr 27, 2026
3831e30
Merge pull request #10 from chandrams/kruize_ui_update
chandrams Apr 27, 2026
730a395
Add kruize icon image
chandrams May 12, 2026
42ff5bb
Merge pull request #13 from chandrams/add_kruize_icon
chandrams May 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
110 changes: 110 additions & 0 deletions .github/workflows/helm-lint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
name: Helm Lint

on:
push:
branches:
- main
- mvp_demo
paths:
- 'charts/kruize/**'
- '.github/workflows/helm-lint.yaml'
pull_request:
types: [opened, synchronize, reopened]
branches:
- main
- mvp_demo
paths:
- 'charts/kruize/**'
- '.github/workflows/helm-lint.yaml'
workflow_dispatch:

env:
HELM_VERSION: v3.13.0

jobs:
helm-lint:
name: Lint Helm Chart
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Helm
uses: azure/setup-helm@v4.3.1
with:
version: ${{ env.HELM_VERSION }}

- name: Lint chart with default values
run: |
echo "=== Linting with default values ==="
helm lint charts/kruize

- name: Lint chart with minikube values
if: always()
run: |
echo "=== Linting with minikube values ==="
if [ -f charts/kruize/values-minikube.yaml ]; then
helm lint charts/kruize -f charts/kruize/values-minikube.yaml
else
echo "⚠️ values-minikube.yaml not found, skipping"
fi

- name: Lint chart with openshift values
if: always()
run: |
echo "=== Linting with openshift values ==="
if [ -f charts/kruize/values-openshift.yaml ]; then
helm lint charts/kruize -f charts/kruize/values-openshift.yaml
else
echo "⚠️ values-openshift.yaml not found, skipping"
fi

- name: Validate chart structure
run: |
echo "=== Validating chart structure ==="

# Check required files
echo "Checking required files..."
required_files=(
"charts/kruize/Chart.yaml"
"charts/kruize/values.yaml"
"charts/kruize/templates"
)

for file in "${required_files[@]}"; do
if [ -e "$file" ]; then
echo "✅ $file exists"
else
echo "❌ $file is missing"
exit 1
fi
done

echo ""
echo "Chart structure validation passed!"

- name: Lint Summary
if: always()
run: |
echo "=== Helm Lint Summary ==="
echo ""
echo "Linted configurations:"
echo " ✅ Default values"

if [ -f charts/kruize/values-minikube.yaml ]; then
echo " ✅ Minikube values"
else
echo " ⚠️ Minikube values (not found)"
fi

if [ -f charts/kruize/values-openshift.yaml ]; then
echo " ✅ OpenShift values"
else
echo " ⚠️ OpenShift values (not found)"
fi

echo ""
echo "Lint checks completed!"


142 changes: 142 additions & 0 deletions .github/workflows/helm-unittest.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
name: Helm Unit Tests

on:
push:
branches:
- main
- mvp_demo
paths:
- 'charts/kruize/**'
- '.github/workflows/helm-unittest.yaml'
pull_request:
types: [opened, synchronize, reopened]
branches:
- main
- mvp_demo
paths:
- 'charts/kruize/**'
- '.github/workflows/helm-unittest.yaml'
workflow_dispatch:

env:
HELM_VERSION: v3.13.0

jobs:
helm-unittest:
name: Run Helm Unit Tests
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Helm
uses: azure/setup-helm@v4.3.1
with:
version: ${{ env.HELM_VERSION }}

- name: Install helm-unittest plugin
run: |
helm plugin install https://github.com/helm-unittest/helm-unittest --version 1.0.3

- name: Run unit tests
run: |
echo "Running all Helm unit tests with different values configurations..."
echo " • with-default-values/ - Tests using default values.yaml"
echo " • with-minikube-values/ - Tests using values-minikube.yaml"
echo " • with-openshift-values/ - Tests using values-openshift.yaml"
echo ""
helm unittest \
-f 'tests/with-default-values/*.yaml' \
-f 'tests/with-minikube-values/*.yaml' \
-f 'tests/with-openshift-values/*.yaml' \
--color --with-subchart=false \
charts/kruize

- name: Generate JUnit test report
if: always()
run: |
helm unittest \
-f 'tests/with-default-values/*.yaml' \
-f 'tests/with-minikube-values/*.yaml' \
-f 'tests/with-openshift-values/*.yaml' \
--output-type JUnit --output-file test-results.xml --with-subchart=false \
charts/kruize

- name: Generate HTML test report
if: always()
run: |
helm unittest \
-f 'tests/with-default-values/*.yaml' \
-f 'tests/with-minikube-values/*.yaml' \
-f 'tests/with-openshift-values/*.yaml' \
--output-type html --output-file test-results.html --with-subchart=false \
charts/kruize

- name: Upload test results (XML & HTML)
if: always()
uses: actions/upload-artifact@v7
with:
name: helm-unittest-results
path: |
test-results.xml
test-results.html
retention-days: 4

- name: Test Summary
if: always()
run: |
echo "=== Helm Unit Test Summary ==="
echo ""
echo "Test suites executed:"
echo " • with-default-values/ - Tests using default values.yaml"
echo " • with-minikube-values/ - Tests using values-minikube.yaml"
echo " • with-openshift-values/ - Tests using values-openshift.yaml"
echo ""
echo "Note: All tests are unit tests that render and validate templates."
echo "No actual Kubernetes cluster is required to run these tests."
echo ""
if [ -f test-results.xml ]; then
echo "✅ Test results generated successfully"
echo "📊 View detailed results in the artifacts"

# Count test results - try multiple patterns for different XML formats
TESTS=$(grep -oP 'tests="\K[0-9]+' test-results.xml | head -1)
FAILURES=$(grep -oP 'failures="\K[0-9]+' test-results.xml | head -1)

# If empty, try testsuites format
if [ -z "$TESTS" ]; then
TESTS=$(grep -oP '<testsuite.*tests="\K[0-9]+' test-results.xml | awk '{s+=$1} END {print s}')
fi

if [ -z "$FAILURES" ]; then
FAILURES=$(grep -oP '<testsuite.*failures="\K[0-9]+' test-results.xml | awk '{s+=$1} END {print s}')
fi

# Set defaults if still empty
TESTS=${TESTS:-0}
FAILURES=${FAILURES:-0}

echo ""
echo "Total tests: $TESTS"
echo "Failures: $FAILURES"

# Fail if no tests ran
if [ "$TESTS" -eq 0 ]; then
echo "❌ No tests were executed!"
exit 1
fi

# Fail if any tests failed
if [ "$FAILURES" -gt 0 ]; then
echo "❌ Some tests failed"
exit 1
fi

echo "✅ All tests passed successfully"
else
echo "❌ Test results not found"
exit 1
fi


43 changes: 43 additions & 0 deletions .github/workflows/release_to_ghcr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Release Kruize Helm Chart to GHCR

on:
push:
tags:
- 'v*.*.*' # Trigger on version tags like v0.1.0
workflow_dispatch:


jobs:
release:
permissions:
contents: write
packages: write
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install Helm
uses: azure/setup-helm@v4
with:
version: 3.14.4

- name: Login to GHCR
run: |
echo "${{ secrets.GITHUB_TOKEN }}" | helm registry login ghcr.io -u ${{ github.actor }} --password-stdin

- name: Package Helm Chart
run: |
helm package charts/kruize

- name: Push to GHCR
run: |
for pkg in ./*.tgz; do
if [ -z "${pkg:-}" ]; then
break
fi
echo "helm push ${pkg} oci://ghcr.io/${{ github.repository_owner }}"
helm push "${pkg}" oci://ghcr.io/${{ github.repository_owner }}
done


1 change: 1 addition & 0 deletions LICENSE
1 change: 0 additions & 1 deletion README.md

This file was deleted.

1 change: 1 addition & 0 deletions README.md
23 changes: 23 additions & 0 deletions charts/kruize/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
28 changes: 28 additions & 0 deletions charts/kruize/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
apiVersion: v2
name: kruize
description: Optimize resources used by your containerized workloads

appVersion: "0.9"
home: "https://kruize.io"
icon: "https://raw.githubusercontent.com/kruize/kruize-helm/main/docs/images/kruize-icon.png"

type: application
version: "0.1.0"

keywords:
- containers
- monitoring
- performance
kubeVersion: '>= 1.25.0-0'

sources:
- https://github.com/kruize/autotune
- https://github.com/kruize/kruize-ui

maintainers:
- name: Dinakar Guniguntala
url: https://github.com/dinogun
- name: Chandrakala Subramanyam
url: https://github.com/chandrams


Loading
Loading