Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
6edd4e8
PAC-3765 - Upgrade crossplane pack to 2.2.0
edwin-villa Feb 24, 2026
7286b29
Merge pull request #1 from edwin-villa/PAC-3765
edwin-villa Feb 24, 2026
0ce7b5c
PAC-3779 - Upgrade trivy pack to 0.21.1
edwin-villa Feb 25, 2026
6093546
Merge branch 'spectrocloud:main' into main
edwin-villa Feb 25, 2026
ccfb6c3
PAC-3765 - Upgrade crossplane pack to 2.2.0
edwin-villa Feb 25, 2026
773d2ee
Merge branch 'main' into main
vishwanaths Feb 27, 2026
b0fb97a
PAC-3779 - Upgrade trivy pack to 0.21.1
edwin-villa Feb 27, 2026
b6960dd
PAC-3779 - Upgrade trivy pack to 0.21.1
edwin-villa Feb 27, 2026
8e37461
Merge pull request #2 from edwin-villa/PAC-3779
edwin-villa Mar 2, 2026
8111137
Merge branch 'spectrocloud:main' into main
edwin-villa Mar 2, 2026
be17e23
Merge branch 'spectrocloud:main' into main
edwin-villa Apr 27, 2026
7aa4e14
PAC-4030 - Upgrade fluentbit pack to 5.0.3
edwin-villa Apr 29, 2026
edc3df9
PAC-4030 - Upgrade fluentbit pack to 5.0.3
edwin-villa Apr 29, 2026
d7e12f8
Remove cks-trivy folder, not part of this PR
edwin-villa Apr 29, 2026
cf9b046
Merge branch 'spectrocloud:main' into main
edwin-villa May 21, 2026
b47e842
Merge branch 'spectrocloud:main' into main
edwin-villa May 27, 2026
10429a7
PAC-4131 - Upgrade crossplane pack to 2.3.0
edwin-villa May 27, 2026
d72aa59
Merge pull request #4 from edwin-villa/crossplane-2.3.0
edwin-villa May 28, 2026
f4064ba
Upgrade kubevious pack to 1.2.2
edwin-villa Jun 10, 2026
136c4a0
Merge branch 'spectrocloud:main' into main
edwin-villa Jun 12, 2026
ee3b8dd
Merge pull request #5 from edwin-villa/kubevious-1.2.2
edwin-villa Jun 12, 2026
cc69223
Merge branch 'spectrocloud:main' into main
edwin-villa Jun 16, 2026
2eb15a5
Upgrade fluentbit pack to 5.0.7
edwin-villa Jun 16, 2026
ded153a
Merge pull request #6 from edwin-villa/fluentbit-5.0.7
edwin-villa Jun 18, 2026
87b5f6b
Update values.yaml
edwin-villa Jun 19, 2026
5de1fb9
Upgrade stormforge-agent pack to 2.28.2
edwin-villa Jun 25, 2026
14947c2
Merge pull request #7 from edwin-villa/stormforge-agent-2.28.2
edwin-villa Jun 25, 2026
29b889d
Merge branch 'spectrocloud:main' into main
edwin-villa Jun 25, 2026
66c20cd
Merge branch 'spectrocloud:main' into main
edwin-villa Jul 2, 2026
0d48516
fix PR
edwin-villa Jul 17, 2026
f71699f
Upgrade kubevious pack to 1.2.2
edwin-villa Jul 17, 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
101 changes: 101 additions & 0 deletions packs/kubevious-1.2.2/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# Kubevious

Kubevious is an open-source Kubernetes dashboard and configuration validator. It provides a visual representation of cluster resources, detects misconfigurations, and surfaces policy violations in real time. The pack deploys the full Kubevious stack — backend, collector, guard, parser, UI, MySQL, and Redis — into a dedicated `kubevious` namespace.


## Prerequisites

- A Kubernetes cluster with a working **dynamic storage provisioner** (required for the MySQL PersistentVolumeClaim; default size: 10Gi).
- Minimum cluster capacity available on worker nodes: **512m CPU** and **1636Mi memory**.


## Parameters

| **Parameter** | **Description** | **Type** | **Default Value** | **Required** |
|---|---|---|---|---|
| `charts.kubevious.ingress.enabled` | Enables or disables the Ingress resource for the Kubevious UI. | Boolean | `false` | No |
| `charts.kubevious.ingress.className` | IngressClass name to use. | String | `""` | No |
| `charts.kubevious.ingress.hosts[0].host` | Hostname for the Ingress rule. | String | `""` | Yes, if ingress is enabled |
| `charts.kubevious.mysql.external.enabled` | Use an external MySQL instance instead of the bundled one. | Boolean | `false` | No |
| `charts.kubevious.mysql.external.host` | Hostname of the external MySQL server. | String | `""` | Yes, if external MySQL is enabled |
| `charts.kubevious.mysql.external.port` | Port of the external MySQL server. | String | `""` | Yes, if external MySQL is enabled |
| `charts.kubevious.mysql.external.database` | Database name on the external MySQL server. | String | `""` | Yes, if external MySQL is enabled |
| `charts.kubevious.mysql.external.user` | Username for the external MySQL server. | String | `""` | Yes, if external MySQL is enabled |
| `charts.kubevious.mysql.external.password` | Password for the external MySQL server. | String | `""` | Yes, if external MySQL is enabled |
| `charts.kubevious.mysql.generate_passwords` | Auto-generate MySQL passwords. When `false`, `db_password` and `root_password` must be set manually. | Boolean | `false` | No |
| `charts.kubevious.mysql.db_password` | Password for the Kubevious MySQL user. | String | `""` | Yes, if `generate_passwords` is `false` |
| `charts.kubevious.mysql.root_password` | MySQL root password. | String | `""` | Yes, if `generate_passwords` is `false` |
| `charts.kubevious.mysql.persistence.size` | PersistentVolumeClaim size for MySQL data. | String | `"10Gi"` | No |
| `charts.kubevious.mysql.persistence.storageClass` | StorageClass for the MySQL PVC. Leave empty to use the cluster default. | String | `""` | No |
| `charts.kubevious.worldvious.opt_out_all` | Opt out of all anonymous telemetry reporting (version checks, error reports, counter and metric reports). | Boolean | `false` | No |


## Upgrade

- When upgrading from a version that used `kubevious/mysql` to a version using an external MySQL instance, migrate the database manually before enabling `mysql.external`.
- MySQL passwords are not rotated automatically on upgrade. If `generate_passwords` was `false` and passwords were left empty on the initial install, set them explicitly before upgrading to avoid authentication failures.


## Usage

### Accessing the Kubevious UI

By default, the UI service is of type `ClusterIP` on port 80. To access it locally, use port-forward:

```sh
kubectl port-forward svc/kubevious-ui 8080:80 -n kubevious
```

Then open `http://localhost:8080` in your browser.

### Enabling Ingress

Select the **Enable** preset under the **Ingress** group in the Spectro Cloud UI, or set the following parameters:

```yaml
charts:
kubevious:
ingress:
enabled: true
hosts:
- host: kubevious.example.com
paths:
- path: /
pathType: ImplementationSpecific
```

### Using an External MySQL Instance

To connect Kubevious to an existing MySQL database instead of deploying the bundled one:

```yaml
charts:
kubevious:
mysql:
external:
enabled: true
host: "mysql.example.com"
port: "3306"
database: "kubevious"
user: "kubevious"
password: "your-password"
```

### Disabling Telemetry

To opt out of all anonymous reporting to [worldvious.io](https://worldvious.io):

```yaml
charts:
kubevious:
worldvious:
opt_out_all: true
```


## References

- [Kubevious Official Documentation](https://kubevious.io/docs)
- [Kubevious GitHub Repository](https://github.com/kubevious/kubevious)
- [Kubevious Helm Chart](https://helm.kubevious.io)
- [Spectro Cloud Integrations — Kubevious](https://docs.spectrocloud.com/integrations/kubevious)
Binary file added packs/kubevious-1.2.2/charts/kubevious-1.2.2.tgz
Binary file not shown.
23 changes: 23 additions & 0 deletions packs/kubevious-1.2.2/charts/kubevious/.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/
12 changes: 12 additions & 0 deletions packs/kubevious-1.2.2/charts/kubevious/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
apiVersion: v2
appVersion: 1.2.2
description: A Helm chart for Kubevious
icon: https://kubevious.io/img/logo.png
keywords:
- kubernetes ui
- kubernetes web ui
- kubernetes configuration checker
- kubernetes validator
name: kubevious
type: application
version: 1.2.2
69 changes: 69 additions & 0 deletions packs/kubevious-1.2.2/charts/kubevious/templates/NOTES.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
NKXW
WXx:,;oKW
Nk;.....,oKW
No'.......,oKW
Nkc'.......,o0W
WKxkNNkc'.......,oKW
Kc.'ckNNkc'.......,oKW
WWWNNNNWW Nk;...'ckNNkc'.......cK
WX0kdocc:::::clodk0NW NOc'......'ckNNkc'...'cON
N0dc;'...............:ONNOc'..........'ckNNkl:ckN
WKx:'.................'c0WKl'...........,,;oX WNW
WKd;.....................;d0X0d;........;d0KXW
Nk:.........................'ckXKx;....;xXW
Xd,............................':kXKo,:xXW
Xo'...............................'l0NKXNXW
Wd'..................................;kXOc:O
Nkooooooooooooooooooooooooooooooooooooxkdod0W
WNK0000000000000000000000000000000000KK0000KKK0000KKXW
Kl,''''''''''''''''''''''''''''''''''''''''''''''''';xW
NkdoooooooooooooooooooooooooooooooooooooooooooooooooxKW
WNKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKNW
Nd,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,dN
Nl....................''''....................oN
Nl................';ok000Oko;.................oN
Nl...............'oXWKkxxkKWXo'...............oN
Nl...............lXWO;....;kWXl...............oN
Nl..............'dWWd'.....lNWd'.............'oN
WKOkkkkkkkkkkkkkOXWWKOkkkkkKW XOOOOOOOOOOOOOOOKW

Kubevious v{{- .Chart.Version }} installed!

{{- if .Values.ingress.enabled }}
{{- range $host := .Values.ingress.hosts }}
{{- range .paths }}
{{- if $host.host }}
Visit http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} to access Kubevious
{{- else }}
Access Kubevious by this command:
$ echo "Visit http://"$(kubectl get ingress kubevious-ui -n kubevious -o jsonpath="{.status.loadBalancer.ingress[0].ip}")
{{- end }}
{{- end }}
{{- end }}
It may take some time for Ingress to be up and running.

Alternatively, you can also access Kubevious by setting up port forwarding
$ kubectl port-forward service/{{ include "kubevious-ui.service.name" . }} 8080:80 -n {{ .Release.Namespace }}
and visiting http://127.0.0.1:8080
{{- else if contains "NodePort" .Values.ui.service.type }}
Access Kubevious by this command:
$ echo "Visit http://"$(kubectl get nodes -n {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")":"$(kubectl get -n {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "kubevious-ui.service.name" . }})

Alternatively, you can also access Kubevious by setting up port forwarding
$ kubectl port-forward service/{{ include "kubevious-ui.service.name" . }} 8080:80 -n {{ .Release.Namespace }}
and visiting http://127.0.0.1:8080
{{- else if contains "LoadBalancer" .Values.ui.service.type }}
Access Kubevious by this command:
$ echo "Visit http://"$(kubectl get svc -n {{ .Release.Namespace }} {{ include "kubevious-ui.service.name" . }} -o jsonpath="{.status.loadBalancer.ingress[0].ip}" )":"{{ .Values.ui.service.port }}

NOTE: It may take a few minutes for the LoadBalancer IP to be available. You can watch the status of by running:
$ kubectl get -n {{ .Release.Namespace }} svc -w {{ include "kubevious-ui.service.name" . }}

Alternatively, you can also access Kubevious by setting up port forwarding
$ kubectl port-forward service/{{ include "kubevious-ui.service.name" . }} 8080:80 -n {{ .Release.Namespace }}
and visiting http://127.0.0.1:8080
{{- else if contains "ClusterIP" .Values.ui.service.type }}
Access Kubevious by setting up port forwarding
$ kubectl port-forward service/{{ include "kubevious-ui.service.name" . }} 8080:80 -n {{ .Release.Namespace }}
and visiting http://127.0.0.1:8080
{{- end }}
62 changes: 62 additions & 0 deletions packs/kubevious-1.2.2/charts/kubevious/templates/_helpers.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "kubevious.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 40 | trimSuffix "-" }}
{{- end }}

{{/*
Create a default fully qualified app name.
*/}}
{{- define "kubevious.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 50 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 50 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 50 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}


{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "kubevious.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}

{{/*
Common labels
*/}}
{{- define "kubevious.labels" -}}
app.kubernetes.io/name: {{ include "kubevious.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
helm.sh/chart: {{ include "kubevious.chart" . }}
{{- end }}

{{/*
Base labels
*/}}
{{- define "kubevious.base-labels" -}}
app.kubernetes.io/name: {{ include "kubevious.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}

{{/*
Match labels
*/}}
{{- define "kubevious.match-labels" -}}
app.kubernetes.io/name: {{ include "kubevious.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}

Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@

{{- define "kubevious-backend.fullname" -}}
{{ include "kubevious.fullname" . }}-backend
{{- end }}

{{/*
Create the name of the service account to use for kubevious
*/}}
{{- define "kubevious-backend.serviceAccountName" -}}
{{- if .Values.backend.serviceAccount.create }}
{{- default (include "kubevious-backend.fullname" .) .Values.backend.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.backend.serviceAccount.name }}
{{- end }}
{{- end }}

{{- define "kubevious-backend.service.name" -}}
{{ print (include "kubevious-backend.fullname" . ) "-" (.Values.backend.service.type | lower) }}
{{- end }}

{{- define "kubevious-backend.baseUrl" -}}
http://{{ include "kubevious-backend.service.name" . }}:{{ .Values.backend.service.port }}
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{{- if .Values.backend.serviceAccount.create -}}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ include "kubevious-backend.fullname" . }}
labels:
app.kubernetes.io/component: {{ include "kubevious-backend.fullname" . }}
{{- include "kubevious.labels" . | nindent 4 }}
rules:
- apiGroups:
- kubevious.io
resources:
- changepackages
verbs:
- get
- list
- watch
- delete
- apiGroups:
- kubevious.io
resources:
- validationstates
verbs:
- get
- list
- create
- delete
- update
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{{- if .Values.backend.serviceAccount.create -}}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: {{ include "kubevious-backend.fullname" . }}
labels:
app.kubernetes.io/component: {{ include "kubevious-backend.fullname" . }}
{{- include "kubevious.labels" . | nindent 4 }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ include "kubevious-backend.fullname" . }}
subjects:
- kind: ServiceAccount
name: {{ include "kubevious-backend.fullname" . }}
namespace: {{ .Release.Namespace }}
{{- end }}
Loading
Loading