diff --git a/packs/kubevious-1.2.2/README.md b/packs/kubevious-1.2.2/README.md new file mode 100644 index 00000000..01a64ce1 --- /dev/null +++ b/packs/kubevious-1.2.2/README.md @@ -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) diff --git a/packs/kubevious-1.2.2/charts/kubevious-1.2.2.tgz b/packs/kubevious-1.2.2/charts/kubevious-1.2.2.tgz new file mode 100644 index 00000000..87fb405f Binary files /dev/null and b/packs/kubevious-1.2.2/charts/kubevious-1.2.2.tgz differ diff --git a/packs/kubevious-1.2.2/charts/kubevious/.helmignore b/packs/kubevious-1.2.2/charts/kubevious/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/.helmignore @@ -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/ diff --git a/packs/kubevious-1.2.2/charts/kubevious/Chart.yaml b/packs/kubevious-1.2.2/charts/kubevious/Chart.yaml new file mode 100644 index 00000000..c3de9f61 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/Chart.yaml @@ -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 diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/NOTES.txt b/packs/kubevious-1.2.2/charts/kubevious/templates/NOTES.txt new file mode 100644 index 00000000..af5477a0 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/NOTES.txt @@ -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 }} \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/_helpers.tpl b/packs/kubevious-1.2.2/charts/kubevious/templates/_helpers.tpl new file mode 100644 index 00000000..149a246b --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/_helpers.tpl @@ -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 }} + diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/backend/_helpers.tpl b/packs/kubevious-1.2.2/charts/kubevious/templates/backend/_helpers.tpl new file mode 100644 index 00000000..8da2fb80 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/backend/_helpers.tpl @@ -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 }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/backend/clusterrole.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/backend/clusterrole.yaml new file mode 100644 index 00000000..5a89e78b --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/backend/clusterrole.yaml @@ -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 }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/backend/clusterrolebinding.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/backend/clusterrolebinding.yaml new file mode 100644 index 00000000..33d503c7 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/backend/clusterrolebinding.yaml @@ -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 }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/backend/deployment.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/backend/deployment.yaml new file mode 100644 index 00000000..97c3a73d --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/backend/deployment.yaml @@ -0,0 +1,88 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "kubevious-backend.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-backend.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/component: {{ include "kubevious-backend.fullname" . }} + {{- include "kubevious.match-labels" . | nindent 6 }} + template: + metadata: + {{- with .Values.backend.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + app.kubernetes.io/component: {{ include "kubevious-backend.fullname" . }} + {{- include "kubevious.labels" . | nindent 8 }} + spec: + {{- with .Values.backend.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + securityContext: + {{- toYaml .Values.backend.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.backend.securityContext | nindent 12 }} + image: "{{ .Values.backend.image.repository }}:{{ .Values.backend.image.tag }}" + imagePullPolicy: {{ .Values.backend.image.pullPolicy }} + env: + - name: NODE_ENV + value: "production" + - name: LOG_LEVEL + value: "{{ .Values.backend.log.level }}" + - name: SERVER_PORT + value: "4001" + - name: COLLECTOR_BASE_URL + value: {{ include "kubevious-collector.baseUrl" . }} + - name: PARSER_BASE_URL + value: {{ include "kubevious-parser.baseUrl" . }} + - name: GUARD_BASE_URL + value: {{ include "kubevious-guard.baseUrl" . }} + envFrom: + - configMapRef: + name: {{ include "kubevious-mysql.config" . }} + - secretRef: + name: {{ include "kubevious-mysql.secret" . }} + - configMapRef: + name: {{ include "kubevious-redis.config" . }} + - secretRef: + name: {{ include "kubevious-worldvious.secret" . }} + - configMapRef: + name: {{ include "kubevious-worldvious.config" . }} + ports: + - name: http + containerPort: 4001 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + resources: + {{- toYaml .Values.backend.resources | nindent 12 }} + serviceAccountName: {{ include "kubevious-backend.serviceAccountName" . }} + {{- with .Values.backend.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.backend.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.backend.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/backend/service.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/backend/service.yaml new file mode 100644 index 00000000..8ce79796 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/backend/service.yaml @@ -0,0 +1,19 @@ +--- +kind: Service +apiVersion: v1 +metadata: + name: {{ include "kubevious-backend.service.name" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-backend.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +spec: + type: {{ .Values.backend.service.type }} + ports: + - port: {{ .Values.backend.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/component: {{ include "kubevious-backend.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/backend/serviceaccount.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/backend/serviceaccount.yaml new file mode 100644 index 00000000..d6f84952 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/backend/serviceaccount.yaml @@ -0,0 +1,15 @@ +{{- if .Values.backend.serviceAccount.create -}} +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "kubevious-backend.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-backend.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} + {{- with .Values.backend.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/collector/_helpers.tpl b/packs/kubevious-1.2.2/charts/kubevious/templates/collector/_helpers.tpl new file mode 100644 index 00000000..b0186a45 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/collector/_helpers.tpl @@ -0,0 +1,22 @@ +{{- define "kubevious-collector.fullname" -}} +{{ include "kubevious.fullname" . }}-collector +{{- end }} + +{{/* +Create the name of the service account to use for kubevious +*/}} +{{- define "kubevious-collector.serviceAccountName" -}} +{{- if .Values.collector.serviceAccount.create }} +{{- default (include "kubevious-collector.fullname" .) .Values.collector.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.collector.serviceAccount.name }} +{{- end }} +{{- end }} + +{{- define "kubevious-collector.service.name" -}} +{{ print (include "kubevious-collector.fullname" . ) "-" (.Values.collector.service.type | lower) }} +{{- end }} + +{{- define "kubevious-collector.baseUrl" -}} +http://{{ include "kubevious-collector.service.name" . }}:{{ .Values.collector.service.port }} +{{- end }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/collector/deployment.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/collector/deployment.yaml new file mode 100644 index 00000000..576392f4 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/collector/deployment.yaml @@ -0,0 +1,92 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "kubevious-collector.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-collector.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/component: {{ include "kubevious-collector.fullname" . }} + {{- include "kubevious.match-labels" . | nindent 6 }} + template: + metadata: + {{- with .Values.collector.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + app.kubernetes.io/component: {{ include "kubevious-collector.fullname" . }} + {{- include "kubevious.labels" . | nindent 8 }} + spec: + {{- with .Values.collector.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + securityContext: + {{- toYaml .Values.collector.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.collector.securityContext | nindent 12 }} + image: "{{ .Values.collector.image.repository }}:{{ .Values.collector.image.tag }}" + imagePullPolicy: {{ .Values.collector.image.pullPolicy }} + env: + - name: NODE_ENV + value: "production" + - name: LOG_LEVEL + value: "{{ .Values.collector.log.level }}" + - name: SERVER_PORT + value: "4002" + - name: BACKEND_BASE_URL + value: {{ include "kubevious-backend.baseUrl" . }} +{{- if .Values.collector.historyRetentionDays }} + - name: COLLECTOR_HISTORY_RETENTION_DAYS + value: "{{ .Values.collector.historyRetentionDays }}" +{{- end }} +{{- if .Values.collector.v8MaxOldSpace }} + - name: NODE_OPTIONS + value: "--max-old-space-size={{ .Values.collector.v8MaxOldSpace }}" +{{- end }} + envFrom: + - configMapRef: + name: {{ include "kubevious-mysql.config" . }} + - secretRef: + name: {{ include "kubevious-mysql.secret" . }} + - configMapRef: + name: {{ include "kubevious-redis.config" . }} + - secretRef: + name: {{ include "kubevious-worldvious.secret" . }} + - configMapRef: + name: {{ include "kubevious-worldvious.config" . }} + ports: + - name: http + containerPort: 4002 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + resources: + {{- toYaml .Values.collector.resources | nindent 12 }} + serviceAccountName: {{ include "kubevious-collector.serviceAccountName" . }} + {{- with .Values.collector.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.collector.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.collector.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/collector/service.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/collector/service.yaml new file mode 100644 index 00000000..5ffbf644 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/collector/service.yaml @@ -0,0 +1,19 @@ +--- +kind: Service +apiVersion: v1 +metadata: + name: {{ include "kubevious-collector.service.name" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-collector.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +spec: + type: {{ .Values.collector.service.type }} + ports: + - port: {{ .Values.collector.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/component: {{ include "kubevious-collector.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/collector/serviceaccount.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/collector/serviceaccount.yaml new file mode 100644 index 00000000..aaaf9148 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/collector/serviceaccount.yaml @@ -0,0 +1,15 @@ +--- +{{- if .Values.collector.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "kubevious-collector.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-collector.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} + {{- with .Values.collector.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/crds/ChangePackage.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/crds/ChangePackage.yaml new file mode 100644 index 00000000..130fed85 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/crds/ChangePackage.yaml @@ -0,0 +1,62 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: changepackages.kubevious.io +spec: + group: kubevious.io + versions: + - name: v1 + served: true + storage: true + schema: + openAPIV3Schema: + type: object + properties: + data: + type: object + properties: + charts: + type: array + items: + type: object + properties: + namespace: + type: string + name: + type: string + required: + - namespace + - name + changes: + type: array + items: + type: object + properties: + data: + type: string + required: + - data + deletions: + type: array + items: + type: object + properties: + apiVersion: + type: string + kind: + type: string + namespace: + type: string + name: + type: string + required: + - apiVersion + - kind + - name + required: + - data + scope: Namespaced + names: + plural: changepackages + singular: changepackage + kind: ChangePackage \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/crds/ValidationState.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/crds/ValidationState.yaml new file mode 100644 index 00000000..48eb351d --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/crds/ValidationState.yaml @@ -0,0 +1,95 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: validationstates.kubevious.io +spec: + group: kubevious.io + versions: + - name: v1 + served: true + storage: true + schema: + openAPIV3Schema: + type: object + properties: + status: + type: object + properties: + state: + type: string + date: + type: string + format: datetime + success: + type: boolean + summary: + type: object + properties: + issues: + type: object + properties: + raised: + type: object + properties: + errors: + type: number + warnings: + type: number + required: + - errors + - warnings + cleared: + type: object + properties: + errors: + type: number + warnings: + type: number + required: + - errors + - warnings + required: + - raised + - cleared + required: + - issues + raisedIssues: + type: array + items: + type: object + properties: + dn: + type: string + msg: + type: string + severity: + type: string + required: + - dn + - msg + - severity + clearedIssues: + type: array + items: + type: object + properties: + dn: + type: string + msg: + type: string + severity: + type: string + required: + - dn + - msg + - severity + required: + - state + - date + required: + - status + scope: Namespaced + names: + plural: validationstates + singular: validationstate + kind: ValidationState \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/guard/_helpers.tpl b/packs/kubevious-1.2.2/charts/kubevious/templates/guard/_helpers.tpl new file mode 100644 index 00000000..a924858f --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/guard/_helpers.tpl @@ -0,0 +1,22 @@ +{{- define "kubevious-guard.fullname" -}} +{{ include "kubevious.fullname" . }}-guard +{{- end }} + +{{/* +Create the name of the service account to use for kubevious +*/}} +{{- define "kubevious-guard.serviceAccountName" -}} +{{- if .Values.guard.serviceAccount.create }} +{{- default (include "kubevious-guard.fullname" .) .Values.guard.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.guard.serviceAccount.name }} +{{- end }} +{{- end }} + +{{- define "kubevious-guard.service.name" -}} +{{ print (include "kubevious-guard.fullname" . ) "-" (.Values.guard.service.type | lower) }} +{{- end }} + +{{- define "kubevious-guard.baseUrl" -}} +http://{{ include "kubevious-guard.service.name" . }}:{{ .Values.guard.service.port }} +{{- end }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/guard/deployment.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/guard/deployment.yaml new file mode 100644 index 00000000..19d8d699 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/guard/deployment.yaml @@ -0,0 +1,88 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "kubevious-guard.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-guard.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/component: {{ include "kubevious-guard.fullname" . }} + {{- include "kubevious.match-labels" . | nindent 6 }} + template: + metadata: + {{- with .Values.guard.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + app.kubernetes.io/component: {{ include "kubevious-guard.fullname" . }} + {{- include "kubevious.labels" . | nindent 8 }} + spec: + {{- with .Values.guard.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + securityContext: + {{- toYaml .Values.guard.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.guard.securityContext | nindent 12 }} + image: "{{ .Values.guard.image.repository }}:{{ .Values.guard.image.tag }}" + imagePullPolicy: {{ .Values.guard.image.pullPolicy }} + env: + - name: NODE_ENV + value: "production" + - name: LOG_LEVEL + value: "{{ .Values.guard.log.level }}" + - name: SERVER_PORT + value: "4004" + - name: BACKEND_BASE_URL + value: {{ include "kubevious-backend.baseUrl" . }} +{{- if .Values.guard.v8MaxOldSpace }} + - name: NODE_OPTIONS + value: "--max-old-space-size={{ .Values.guard.v8MaxOldSpace }}" +{{- end }} + envFrom: + - configMapRef: + name: {{ include "kubevious-mysql.config" . }} + - secretRef: + name: {{ include "kubevious-mysql.secret" . }} + - configMapRef: + name: {{ include "kubevious-redis.config" . }} + - secretRef: + name: {{ include "kubevious-worldvious.secret" . }} + - configMapRef: + name: {{ include "kubevious-worldvious.config" . }} + ports: + - name: http + containerPort: 4004 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + resources: + {{- toYaml .Values.guard.resources | nindent 12 }} + serviceAccountName: {{ include "kubevious-guard.serviceAccountName" . }} + {{- with .Values.guard.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.guard.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.guard.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/guard/service.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/guard/service.yaml new file mode 100644 index 00000000..da1e8b2a --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/guard/service.yaml @@ -0,0 +1,19 @@ +--- +kind: Service +apiVersion: v1 +metadata: + name: {{ include "kubevious-guard.service.name" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-guard.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +spec: + type: {{ .Values.guard.service.type }} + ports: + - port: {{ .Values.guard.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/component: {{ include "kubevious-guard.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/guard/serviceaccount.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/guard/serviceaccount.yaml new file mode 100644 index 00000000..7b77244b --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/guard/serviceaccount.yaml @@ -0,0 +1,15 @@ +--- +{{- if .Values.guard.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "kubevious-guard.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-guard.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} + {{- with .Values.guard.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/ingress.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/ingress.yaml new file mode 100644 index 00000000..1efa32c4 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/ingress.yaml @@ -0,0 +1,58 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "kubevious-ui.fullname" . -}} +{{- $svcName := include "kubevious-ui.service.name" . -}} +{{- $svcPort := .Values.ui.service.port -}} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "kubevious.labels" . | nindent 4 }} + annotations: + {{- with .Values.ingress.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $svcName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $svcName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/_helpers.tpl b/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/_helpers.tpl new file mode 100644 index 00000000..102fe9b4 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/_helpers.tpl @@ -0,0 +1,107 @@ + +{{- define "kubevious-mysql.fullname" -}} +{{ include "kubevious.fullname" . }}-mysql +{{- end }} + +{{- define "kubevious-mysql.config" -}} +{{ include "kubevious-mysql.fullname" . }}-config +{{- end }} + +{{- define "kubevious-mysql.secret" -}} +{{ include "kubevious-mysql.fullname" . }}-secret +{{- end }} + +{{- define "kubevious-mysql.secret-root" -}} +{{ include "kubevious-mysql.fullname" . }}-secret-root +{{- end }} + +{{- define "kubevious-mysql.root-password" -}} +{{- if .Values.mysql.root_password }} +{{- .Values.mysql.root_password | b64enc }} +{{- else }} +{{- $secret := (lookup "v1" "Secret" .Release.Namespace (include "kubevious-mysql.secret-root" .) ) -}} +{{- if $secret }} +{{- $secret.data.MYSQL_ROOT_PASSWORD }} +{{- else }} +{{- if .Values.mysql.generate_passwords }} +{{- randAlphaNum 16 | b64enc }} +{{- else }} +{{- "kubevious" | b64enc }} +{{- end }} +{{- end }} +{{- end }} +{{- end }} + + +{{- define "kubevious-mysql.host" -}} +{{- if .Values.mysql.external.enabled }} +{{- .Values.mysql.external.host }} +{{- else }} +{{- include "kubevious-mysql.fullname" . }} +{{- end }} +{{- end }} + + +{{- define "kubevious-mysql.port" -}} +{{- if .Values.mysql.external.enabled }} +{{- .Values.mysql.external.port }} +{{- else }} +{{- .Values.mysql.service.port }} +{{- end }} +{{- end }} + + +{{- define "kubevious-mysql.database" -}} +{{- if .Values.mysql.external.enabled }} +{{- .Values.mysql.external.database }} +{{- else }} +{{- .Values.mysql.db_name }} +{{- end }} +{{- end }} + + +{{- define "kubevious-mysql.user" -}} +{{- if .Values.mysql.external.enabled }} +{{- .Values.mysql.external.user }} +{{- else }} +{{- .Values.mysql.db_user }} +{{- end }} +{{- end }} + + +{{- define "kubevious-mysql.user-password" -}} +{{- .Values.mysql.external.password | b64enc }} +{{- if .Values.mysql.external.enabled }} +{{- else }} +{{- if and (.Values.mysql.db_user) (not (eq .Values.mysql.db_user "root")) }} +{{- if .Values.mysql.db_password }} +{{- .Values.mysql.db_password | b64enc }} +{{- else }} +{{- $secret := (lookup "v1" "Secret" .Release.Namespace (include "kubevious-mysql.secret" .) ) -}} +{{- if $secret }} +{{- $secret.data.MYSQL_PASS }} +{{- else }} +{{- if .Values.mysql.generate_passwords }} +{{- randAlphaNum 16 | b64enc }} +{{- else }} +{{- "kubevious" | b64enc }} +{{- end }} +{{- end }} +{{- end }} +{{- else }} +{{- include "kubevious-mysql.root-password" . }} +{{- end }} +{{- end }} +{{- end }} + + +{{/* +Create the name of the service account to use for mysql +*/}} +{{- define "kubevious-mysql.serviceAccountName" -}} +{{- if .Values.mysql.serviceAccount.create }} +{{- default (include "kubevious-mysql.fullname" .) .Values.mysql.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.mysql.serviceAccount.name }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/configmap-db.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/configmap-db.yaml new file mode 100644 index 00000000..8af06225 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/configmap-db.yaml @@ -0,0 +1,20 @@ +{{- if not .Values.mysql.external.enabled -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "kubevious-mysql.fullname" . }}-conf + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-mysql.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +data: + master.cnf: | + # Apply this config only on the master. + [mysqld] + log-bin + slave.cnf: | + # Apply this config only on slaves. + [mysqld] + super-read-only +{{- end -}} \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/configmap-init-script.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/configmap-init-script.yaml new file mode 100644 index 00000000..416808dc --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/configmap-init-script.yaml @@ -0,0 +1,16 @@ +{{- if not .Values.mysql.external.enabled -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "kubevious-mysql.fullname" . }}-init-script + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-mysql.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +data: + initdb.sql: | + USE kubevious; + + SET NAMES utf8; +{{- end -}} \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/configmap-mysql-config.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/configmap-mysql-config.yaml new file mode 100644 index 00000000..5e058a86 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/configmap-mysql-config.yaml @@ -0,0 +1,14 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "kubevious-mysql.config" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-mysql.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +data: + MYSQL_HOST: "{{ include "kubevious-mysql.host" . }}" + MYSQL_PORT: "{{ include "kubevious-mysql.port" . }}" + MYSQL_DB: "{{ include "kubevious-mysql.database" . }}" + MYSQL_USER: "{{ include "kubevious-mysql.user" . }}" \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/secret-root.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/secret-root.yaml new file mode 100644 index 00000000..b8716458 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/secret-root.yaml @@ -0,0 +1,14 @@ +{{- if not .Values.mysql.external.enabled -}} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "kubevious-mysql.secret-root" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-mysql.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +type: Opaque +data: + MYSQL_ROOT_PASSWORD: {{ include "kubevious-mysql.root-password" . | quote }} +{{- end -}} \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/secret.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/secret.yaml new file mode 100644 index 00000000..d54a7773 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/secret.yaml @@ -0,0 +1,12 @@ +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "kubevious-mysql.secret" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-mysql.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +type: Opaque +data: + MYSQL_PASS: {{ include "kubevious-mysql.user-password" . | quote }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/service.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/service.yaml new file mode 100644 index 00000000..a6f43803 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/service.yaml @@ -0,0 +1,20 @@ +{{- if not .Values.mysql.external.enabled -}} +--- +kind: Service +apiVersion: v1 +metadata: + name: {{ include "kubevious-mysql.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-mysql.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +spec: + type: {{ .Values.mysql.service.type }} + ports: + - port: {{ .Values.mysql.service.port }} + targetPort: mysql + protocol: TCP + name: mysql + selector: + app.kubernetes.io/component: {{ include "kubevious-mysql.fullname" . }} +{{- end -}} \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/serviceaccount.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/serviceaccount.yaml new file mode 100644 index 00000000..664bc3e6 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/serviceaccount.yaml @@ -0,0 +1,17 @@ +{{- if not .Values.mysql.external.enabled -}} +--- +{{- if .Values.mysql.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "kubevious-mysql.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-mysql.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} + {{- with .Values.mysql.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} +{{- end -}} \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/statefulset.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/statefulset.yaml new file mode 100644 index 00000000..a4a0f655 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/mysql/statefulset.yaml @@ -0,0 +1,151 @@ +{{- if not .Values.mysql.external.enabled -}} +--- +# source: https://chart.io/docs/tasks/run-application/run-replicated-stateful-application/ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: {{ include "kubevious-mysql.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-mysql.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +spec: + selector: + matchLabels: + app.kubernetes.io/component: {{ include "kubevious-mysql.fullname" . }} + {{- include "kubevious.match-labels" . | nindent 6 }} + serviceName: {{ include "kubevious-mysql.fullname" . }} + replicas: 1 + template: + metadata: + labels: + app.kubernetes.io/component: {{ include "kubevious-mysql.fullname" . }} + {{- include "kubevious.base-labels" . | nindent 8 }} + spec: + {{- with .Values.mysql.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + securityContext: + {{- toYaml .Values.mysql.podSecurityContext | nindent 8 }} + initContainers: + - name: init-mysql + image: {{ .Values.mysql.image.repository }}:{{ .Values.mysql.image.tag }} + imagePullPolicy: {{ .Values.mysql.image.pullPolicy }} + command: + - bash + - "-c" + - | + set -ex + echo "[mysqld]" > /mnt/conf.d/server-id.cnf + echo "server-id=1" >> /mnt/conf.d/server-id.cnf + echo "[mysqld]" > /mnt/conf.d/bin-logs.cnf + echo "binlog_expire_logs_seconds=259200" >> /mnt/conf.d/bin-logs.cnf + cp /mnt/config-map/master.cnf /mnt/conf.d/ + volumeMounts: + - name: conf + mountPath: /mnt/conf.d + - name: config-map + mountPath: /mnt/config-map + containers: + - name: mysql + image: "{{ .Values.mysql.image.repository }}:{{ .Values.mysql.image.tag }}" + imagePullPolicy: {{ .Values.mysql.image.pullPolicy }} + env: + - name: NODE_ENV + value: "production" + - name: MYSQL_DATABASE + value: "{{ .Values.mysql.db_name }}" + {{- if and (.Values.mysql.db_user) (not (eq .Values.mysql.db_user "root")) }} + - name: MYSQL_USER + value: "{{ .Values.mysql.db_user }}" + - name: MYSQL_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "kubevious-mysql.secret" . }} + key: MYSQL_PASS + {{- end }} + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "kubevious-mysql.secret-root" . }} + key: MYSQL_ROOT_PASSWORD + ports: + - name: mysql + containerPort: 3306 + volumeMounts: + - name: "data" + mountPath: /var/lib/mysql + subPath: mysql + - name: conf + mountPath: /etc/mysql/conf.d + - name: init-script + mountPath: /docker-entrypoint-initdb.d + livenessProbe: + exec: + {{ if eq .Values.mysql.db_user "root" }} + command: ["mysqladmin", "ping"] + {{ else }} + command: ["mysqladmin", "ping", "-u$MYSQL_USER", "-p$MYSQL_PASSWORD"] + {{ end }} + initialDelaySeconds: 120 + periodSeconds: 10 + timeoutSeconds: 5 + readinessProbe: + exec: + # Check we can execute queries over TCP (skip-networking is off). + command: + - bash + - "-c" + {{ if eq .Values.mysql.db_user "root" }} + - | + mysql -p$MYSQL_ROOT_PASSWORD -h 127.0.0.1 -e 'SELECT 1' + {{ else }} + - | + mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h 127.0.0.1 -e 'SELECT 1' + {{ end }} + + initialDelaySeconds: 5 + periodSeconds: 2 + timeoutSeconds: 1 + resources: + {{- toYaml .Values.mysql.resources | nindent 12 }} + serviceAccountName: {{ include "kubevious-mysql.serviceAccountName" . }} + {{- with .Values.mysql.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.mysql.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.mysql.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + volumes: + - name: conf + emptyDir: {} + - name: config-map + configMap: + name: {{ include "kubevious-mysql.fullname" . }}-conf + - name: init-script + configMap: + name: {{ include "kubevious-mysql.fullname" . }}-init-script +{{- if .Values.mysql.persistence.enabled }} + volumeClaimTemplates: + - metadata: + name: "data" + spec: + accessModes: ["{{ .Values.mysql.persistence.accessMode }}"] +{{- if .Values.mysql.persistence.storageClass }} + storageClassName: "{{ .Values.mysql.persistence.storageClass }}" +{{- end }} + resources: + requests: + storage: {{ .Values.mysql.persistence.size }} +{{- else }} + - name: data + emptyDir: {} +{{- end }} +{{- end -}} \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/parser/_helpers.tpl b/packs/kubevious-1.2.2/charts/kubevious/templates/parser/_helpers.tpl new file mode 100644 index 00000000..90c74917 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/parser/_helpers.tpl @@ -0,0 +1,20 @@ + +{{- define "kubevious-parser.fullname" -}} +{{ include "kubevious.fullname" . }}-parser +{{- end }} + +{{/* +Create the name of the service account to use for the parser +*/}} +{{- define "kubevious-parser.serviceAccountName" -}} +{{- default (include "kubevious-parser.fullname" .) .Values.parser.serviceAccount.name }} +{{- end }} + +{{- define "kubevious-parser.service.name" -}} +{{ print (include "kubevious-parser.fullname" . ) "-" (.Values.parser.service.type | lower) }} +{{- end }} + + +{{- define "kubevious-parser.baseUrl" -}} +http://{{ include "kubevious-parser.service.name" . }}:{{ .Values.parser.service.port }} +{{- end }} \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/parser/clusterrole.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/parser/clusterrole.yaml new file mode 100644 index 00000000..10b9e931 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/parser/clusterrole.yaml @@ -0,0 +1,19 @@ +{{- if not .Values.parser.serviceAccount.skipRoleBinding -}} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ include "kubevious-parser.fullname" . }} + labels: + app.kubernetes.io/component: {{ include "kubevious-parser.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +rules: + - apiGroups: + - "*" + resources: + - "*" + verbs: + - get + - list + - watch +{{- end }} \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/parser/clusterrolebinding.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/parser/clusterrolebinding.yaml new file mode 100644 index 00000000..3fae2ba9 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/parser/clusterrolebinding.yaml @@ -0,0 +1,18 @@ +{{- if not .Values.parser.serviceAccount.skipRoleBinding -}} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ include "kubevious-parser.fullname" . }} + labels: + app.kubernetes.io/component: {{ include "kubevious-parser.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ include "kubevious-parser.fullname" . }} +subjects: +- kind: ServiceAccount + name: {{ include "kubevious-parser.fullname" . }} + namespace: {{ .Release.Namespace }} +{{- end }} \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/parser/deployment.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/parser/deployment.yaml new file mode 100644 index 00000000..5671fa77 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/parser/deployment.yaml @@ -0,0 +1,86 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "kubevious-parser.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-parser.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/component: {{ include "kubevious-parser.fullname" . }} + {{- include "kubevious.match-labels" . | nindent 6 }} + template: + metadata: + {{- with .Values.parser.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + app.kubernetes.io/component: {{ include "kubevious-parser.fullname" . }} + {{- include "kubevious.labels" . | nindent 8 }} + spec: + {{- with .Values.parser.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "kubevious-parser.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.parser.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.parser.securityContext | nindent 12 }} + image: "{{ .Values.parser.image.repository }}:{{ .Values.parser.image.tag }}" + imagePullPolicy: {{ .Values.parser.image.pullPolicy }} + env: + - name: NODE_ENV + value: "production" + - name: LOG_LEVEL + value: "{{ .Values.parser.log.level }}" + - name: KUBEVIOUS_COLLECTOR + value: "{{ include "kubevious-collector.baseUrl" . }}/api/v1/collect" + {{- if .Values.kubevious.api.skipEvents }} + - name: KUBEVIOUS_API_SKIP_EVENTS + value: "true" + {{- end }} + {{- if .Values.kubevious.api.skipSecrets }} + - name: KUBEVIOUS_API_SKIP_SECRET + value: "true" + {{- end }} + {{- if .Values.kubevious.api.skipped }} + - name: KUBEVIOUS_API_SKIP + value: {{ join "," .Values.kubevious.api.skipped }} + {{- end }} + - name: SERVER_PORT + value: "4003" +{{- if .Values.parser.v8MaxOldSpace }} + - name: NODE_OPTIONS + value: "--max-old-space-size={{ .Values.parser.v8MaxOldSpace }}" +{{- end }} + envFrom: + - configMapRef: + name: {{ include "kubevious-worldvious.config" . }} + - secretRef: + name: {{ include "kubevious-worldvious.secret" . }} + ports: + - name: http + containerPort: 4003 + protocol: TCP + resources: + {{- toYaml .Values.parser.resources | nindent 12 }} + {{- with .Values.parser.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.parser.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.parser.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/parser/service.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/parser/service.yaml new file mode 100644 index 00000000..7c077f80 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/parser/service.yaml @@ -0,0 +1,19 @@ +--- +kind: Service +apiVersion: v1 +metadata: + name: {{ include "kubevious-parser.service.name" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-parser.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +spec: + type: {{ .Values.parser.service.type }} + ports: + - port: {{ .Values.parser.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/component: {{ include "kubevious-parser.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/parser/serviceaccount.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/parser/serviceaccount.yaml new file mode 100644 index 00000000..3c178666 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/parser/serviceaccount.yaml @@ -0,0 +1,15 @@ +{{- if .Values.parser.serviceAccount.create -}} +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "kubevious-parser.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-parser.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} + {{- with .Values.parser.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/redis/_helpers.tpl b/packs/kubevious-1.2.2/charts/kubevious/templates/redis/_helpers.tpl new file mode 100644 index 00000000..22e0df6d --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/redis/_helpers.tpl @@ -0,0 +1,27 @@ + +{{- define "kubevious-redis.fullname" -}} +{{ include "kubevious.fullname" . }}-redis +{{- end }} + +{{- define "kubevious-redis.config" -}} +{{ include "kubevious-redis.fullname" . }}-config +{{- end }} + +{{- define "kubevious-redis.host" -}} +{{- include "kubevious-redis.fullname" . }} +{{- end }} + +{{- define "kubevious-redis.port" -}} +{{- .Values.redis.service.port }} +{{- end }} + +{{/* +Create the name of the service account to use for redis +*/}} +{{- define "kubevious-redis.serviceAccountName" -}} +{{- if .Values.redis.serviceAccount.create }} +{{- default (include "kubevious-redis.fullname" .) .Values.redis.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.redis.serviceAccount.name }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/redis/configmap-redis-config.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/redis/configmap-redis-config.yaml new file mode 100644 index 00000000..31929607 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/redis/configmap-redis-config.yaml @@ -0,0 +1,12 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "kubevious-redis.config" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-redis.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +data: + REDIS_HOST: "{{ include "kubevious-redis.host" . }}" + REDIS_PORT: "{{ include "kubevious-redis.port" . }}" \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/redis/service.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/redis/service.yaml new file mode 100644 index 00000000..e61a9374 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/redis/service.yaml @@ -0,0 +1,18 @@ +--- +kind: Service +apiVersion: v1 +metadata: + name: {{ include "kubevious-redis.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-redis.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +spec: + type: {{ .Values.redis.service.type }} + ports: + - port: {{ .Values.redis.service.port }} + targetPort: redis + protocol: TCP + name: redis + selector: + app.kubernetes.io/component: {{ include "kubevious-redis.fullname" . }} \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/redis/serviceaccount.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/redis/serviceaccount.yaml new file mode 100644 index 00000000..e4febf2c --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/redis/serviceaccount.yaml @@ -0,0 +1,14 @@ +{{- if .Values.redis.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "kubevious-redis.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-redis.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} + {{- with .Values.redis.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/redis/statefulset.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/redis/statefulset.yaml new file mode 100644 index 00000000..ed2780ae --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/redis/statefulset.yaml @@ -0,0 +1,51 @@ +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: {{ include "kubevious-redis.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-redis.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +spec: + selector: + matchLabels: + app.kubernetes.io/component: {{ include "kubevious-redis.fullname" . }} + {{- include "kubevious.match-labels" . | nindent 6 }} + serviceName: {{ include "kubevious-redis.fullname" . }} + replicas: 1 + template: + metadata: + labels: + app.kubernetes.io/component: {{ include "kubevious-redis.fullname" . }} + {{- include "kubevious.base-labels" . | nindent 8 }} + spec: + {{- with .Values.redis.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + securityContext: + {{- toYaml .Values.redis.podSecurityContext | nindent 8 }} + containers: + - name: redis + image: "{{ .Values.redis.image.repository }}:{{ .Values.redis.image.tag }}" + imagePullPolicy: {{ .Values.redis.image.pullPolicy }} + ports: + - containerPort: 6379 + protocol: TCP + name: redis + resources: + {{- toYaml .Values.redis.resources | nindent 12 }} + serviceAccountName: {{ include "kubevious-redis.serviceAccountName" . }} + {{- with .Values.redis.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.redis.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.redis.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/ui/_helpers.tpl b/packs/kubevious-1.2.2/charts/kubevious/templates/ui/_helpers.tpl new file mode 100644 index 00000000..6845a778 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/ui/_helpers.tpl @@ -0,0 +1,24 @@ + + +{{- define "kubevious-ui.fullname" -}} +{{ include "kubevious.fullname" . }}-ui +{{- end }} + +{{/* +Create the name of the service account to use for the ui +*/}} +{{- define "kubevious-ui.serviceAccountName" -}} +{{- if .Values.ui.serviceAccount.create }} +{{- default (include "kubevious-ui.fullname" .) .Values.ui.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.ui.serviceAccount.name }} +{{- end }} +{{- end }} + +{{- define "kubevious-ui.service.name" -}} +{{ print (include "kubevious-ui.fullname" . ) "-" (.Values.ui.service.type | lower) }} +{{- end }} + +{{- define "kubevious-ui.caddyConfig" -}} +{{ print (include "kubevious-ui.fullname" . ) "-caddy" }} +{{- end }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/ui/configmap-caddy.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/ui/configmap-caddy.yaml new file mode 100644 index 00000000..d97f92a1 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/ui/configmap-caddy.yaml @@ -0,0 +1,32 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "kubevious-ui.caddyConfig" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-ui.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +data: + Caddyfile: | + { + admin :5555 + } + + :4000 { + + handle /api/v1/* { + reverse_proxy {{ include "kubevious-backend.service.name" . }}:{{ .Values.backend.service.port }} + } + + handle /socket/* { + reverse_proxy {{ include "kubevious-backend.service.name" . }}:{{ .Values.backend.service.port }} + } + + handle /* { + root * /caddy/www + try_files {path} /index.html + file_server + } + + } \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/ui/deployment.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/ui/deployment.yaml new file mode 100644 index 00000000..11c4715c --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/ui/deployment.yaml @@ -0,0 +1,76 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "kubevious-ui.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-ui.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/component: {{ include "kubevious-ui.fullname" . }} + {{- include "kubevious.match-labels" . | nindent 6 }} + template: + metadata: + {{- with .Values.ui.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + app.kubernetes.io/component: {{ include "kubevious-ui.fullname" . }} + {{- include "kubevious.labels" . | nindent 8 }} + spec: + {{- with .Values.ui.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + securityContext: + {{- toYaml .Values.ui.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.ui.securityContext | nindent 12 }} + image: "{{ .Values.ui.image.repository }}:{{ .Values.ui.image.tag }}" + imagePullPolicy: {{ .Values.ui.image.pullPolicy }} + env: + - name: NODE_ENV + value: "production" + - name: KUBEVIOUS_VERSION + value: {{ .Chart.Version }} + ports: + - name: http + containerPort: 4000 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + resources: + {{- toYaml .Values.ui.resources | nindent 12 }} + volumeMounts: + - name: caddy-config + mountPath: /etc/caddy/Caddyfile + subPath: Caddyfile + volumes: + - name: caddy-config + configMap: + name: {{ include "kubevious-ui.caddyConfig" . }} + serviceAccountName: {{ include "kubevious-ui.serviceAccountName" . }} + {{- with .Values.ui.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.ui.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.ui.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/ui/service.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/ui/service.yaml new file mode 100644 index 00000000..ce0c935a --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/ui/service.yaml @@ -0,0 +1,18 @@ +kind: Service +apiVersion: v1 +metadata: + name: {{ include "kubevious-ui.service.name" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-ui.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +spec: + type: {{ .Values.ui.service.type }} + ports: + - port: {{ .Values.ui.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/component: {{ include "kubevious-ui.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/ui/serviceaccount.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/ui/serviceaccount.yaml new file mode 100644 index 00000000..0a896a45 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/ui/serviceaccount.yaml @@ -0,0 +1,15 @@ +--- +{{- if .Values.ui.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "kubevious-ui.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-ui.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} + {{- with .Values.ui.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/worldvious/_helpers.tpl b/packs/kubevious-1.2.2/charts/kubevious/templates/worldvious/_helpers.tpl new file mode 100644 index 00000000..22c6fe7f --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/worldvious/_helpers.tpl @@ -0,0 +1,21 @@ +{{- define "kubevious-worldvious.fullname" -}} +{{ include "kubevious.fullname" . }}-worldvious +{{- end }} + +{{- define "kubevious-worldvious.secret" -}} +{{ include "kubevious-worldvious.fullname" . }} +{{- end }} + +{{- define "kubevious-worldvious.config" -}} +{{ include "kubevious-worldvious.fullname" . }} +{{- end }} + + +{{- define "kubevious-worldvious.id" -}} +{{- $secret := (lookup "v1" "Secret" .Release.Namespace (include "kubevious-worldvious.secret" .) ) -}} +{{- if $secret }} +{{- $secret.data.WORLDVIOUS_ID }} +{{- else }} +{{- uuidv4 | b64enc }} +{{- end }} +{{- end }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/worldvious/configmap.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/worldvious/configmap.yaml new file mode 100644 index 00000000..4a2aa874 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/worldvious/configmap.yaml @@ -0,0 +1,23 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "kubevious-worldvious.config" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-worldvious.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +data: + WORLDVIOUS_URL: https://api.kubevious.io/api/v1/oss +{{- if or (.Values.worldvious.opt_out_all) (.Values.worldvious.opt_out_version_check) }} + WORLDVIOUS_VERSION_CHECK_DISABLE: "true" +{{- end }} +{{- if or (.Values.worldvious.opt_out_all) (.Values.worldvious.opt_out_error_report) }} + WORLDVIOUS_ERROR_REPORT_DISABLE: "true" +{{- end }} +{{- if or (.Values.worldvious.opt_out_all) (.Values.worldvious.opt_out_counters_report) }} + WORLDVIOUS_COUNTERS_REPORT_DISABLE: "true" +{{- end }} +{{- if or (.Values.worldvious.opt_out_all) (.Values.worldvious.opt_out_metrics_report) }} + WORLDVIOUS_METRICS_REPORT_DISABLE: "true" +{{- end }} \ No newline at end of file diff --git a/packs/kubevious-1.2.2/charts/kubevious/templates/worldvious/secret.yaml b/packs/kubevious-1.2.2/charts/kubevious/templates/worldvious/secret.yaml new file mode 100644 index 00000000..02dead96 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/templates/worldvious/secret.yaml @@ -0,0 +1,12 @@ +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "kubevious-worldvious.secret" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/component: {{ include "kubevious-worldvious.fullname" . }} + {{- include "kubevious.labels" . | nindent 4 }} +type: Opaque +data: + WORLDVIOUS_ID: {{ include "kubevious-worldvious.id" . | quote }} diff --git a/packs/kubevious-1.2.2/charts/kubevious/values.yaml b/packs/kubevious-1.2.2/charts/kubevious/values.yaml new file mode 100644 index 00000000..4658d2e8 --- /dev/null +++ b/packs/kubevious-1.2.2/charts/kubevious/values.yaml @@ -0,0 +1,311 @@ +# Default values for kubevious. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. +nameOverride: "" +fullnameOverride: "" +### +### INGRESS +### +ingress: + enabled: false + className: "" + annotations: + kubernetes.io/ingress.allow-http: "true" + hosts: + - host: "" + paths: + - path: / + pathType: ImplementationSpecific + tls: [] +### +### KUBEVIOUS +### +kubevious: + api: + skipEvents: true + skipSecrets: false + skipped: [] +### +### KUBEVIOUS BACKEND +### +backend: + image: + repository: kubevious/backend + tag: 1.2.2 + pullPolicy: IfNotPresent + imagePullSecrets: [] + podAnnotations: {} + podSecurityContext: {} + securityContext: {} + service: + type: ClusterIP + port: 4000 + serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + resources: + requests: + cpu: 100m + memory: 200Mi + # limits: + # cpu: 500m + # memory: 1Gi + nodeSelector: {} + tolerations: [] + affinity: {} + log: + level: info +### +### KUBEVIOUS COLLECTOR +### +collector: + image: + repository: kubevious/collector + tag: 1.2.1 + pullPolicy: IfNotPresent + imagePullSecrets: [] + podAnnotations: {} + podSecurityContext: {} + securityContext: {} + service: + type: ClusterIP + port: 4000 + serviceAccount: + # Specifies whether a service account should be created + create: false + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + resources: + requests: + cpu: 100m + memory: 200Mi + # limits: + # cpu: 500m + # memory: 1Gi + v8MaxOldSpace: null + nodeSelector: {} + tolerations: [] + affinity: {} + log: + level: info + historyRetentionDays: 15 +### +### KUBEVIOUS GUARD +### +guard: + image: + repository: kubevious/guard + tag: 1.2.1 + pullPolicy: IfNotPresent + imagePullSecrets: [] + podAnnotations: {} + podSecurityContext: {} + securityContext: {} + service: + type: ClusterIP + port: 4000 + serviceAccount: + # Specifies whether a service account should be created + create: false + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + resources: + requests: + cpu: 100m + memory: 200Mi + # limits: + # cpu: 500m + # memory: 1Gi + v8MaxOldSpace: null + nodeSelector: {} + tolerations: [] + affinity: {} + log: + level: info +### +### KUBEVIOUS PARSER +### +parser: + image: + repository: kubevious/parser + tag: 1.2.2 + pullPolicy: IfNotPresent + imagePullSecrets: [] + podAnnotations: {} + podSecurityContext: {} + securityContext: {} + service: + type: ClusterIP + port: 4000 + resources: + requests: + cpu: 100m + memory: 200Mi + # limits: + # cpu: 500m + # memory: 1Gi + v8MaxOldSpace: null + nodeSelector: {} + tolerations: [] + affinity: {} + log: + level: info + serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" +### +### KUBEVIOUS UI +### +ui: + image: + repository: kubevious/ui + tag: 1.2.1 + pullPolicy: IfNotPresent + imagePullSecrets: [] + podAnnotations: {} + podSecurityContext: {} + securityContext: {} + service: + type: ClusterIP + port: 80 + serviceAccount: + # Specifies whether a service account should be created + create: false + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + resources: + requests: + cpu: 25m + memory: 50Mi + # limits: + # cpu: 100m + # memory: 128Mi + nodeSelector: {} + tolerations: [] + affinity: {} +### +### MYSQL +### +mysql: + external: + enabled: false + host: "" + port: "" + database: "" + user: "" + password: "" + image: + repository: mysql + tag: 8.0.30 + pullPolicy: IfNotPresent + db_name: kubevious + db_user: "kubevious" + generate_passwords: false + db_password: "" + root_password: "" + persistence: + enabled: true + accessMode: ReadWriteOnce + size: "10Gi" + storageClass: "" + service: + type: ClusterIP + port: "3306" + serviceAccount: + # Specifies whether a service account should be created + create: false + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + imagePullSecrets: [] + podAnnotations: {} + podSecurityContext: {} + securityContext: {} + resources: + requests: + cpu: 250m + memory: 1000Mi + # limits: + # cpu: 1000m + # memory: 2Gi + nodeSelector: {} + tolerations: [] + affinity: {} +### +### REDIS +### +redis: + image: + repository: redislabs/redisearch + tag: 2.4.14 + pullPolicy: IfNotPresent + service: + type: ClusterIP + port: "6379" + serviceAccount: + # Specifies whether a service account should be created + create: false + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + imagePullSecrets: [] + podAnnotations: {} + podSecurityContext: {} + securityContext: {} + resources: + requests: + cpu: 100m + memory: 128Mi + # limits: + # cpu: 1000m + # memory: 2Gi + nodeSelector: {} + tolerations: [] + affinity: {} +### +### WORLDVIOUS +### +worldvious: + ## Disables version check. As a part of the version check, Kubevious deployments + ## are added to the leaderboard at https://worldvious.io. Reporting is anonymized + ## to the nearest city. No IP address is stored or logged. We calculate the SHA256 + ## hash of the IP address and use it as a key. As a part of this request, we also + ## added news notification and a feedback request mechanism. + opt_out_version_check: false + ## Disables automatic exception and error reporting. + opt_out_error_report: false + ## Disables periodic reporting of cluster metrics, such as: number of nodes, pods, + ## ingresses, configmaps, etc. The number of pods and nodes would appear on the + ## https://worldvious.io leaderboard. Those are the same counters you would see in + ## the console log of kubevious and parser pods. + opt_out_counters_report: false + ## Disables periodic reporting of internal time metrics. In conjunction with counters + ## reporting, this would help identify internal bottlenecks and improve overall + ## performance. Those are the same metrics you would see in the console log of kubevious + ## and parser pods. + opt_out_metrics_report: false + ## Opt out from all of the above reportings. + opt_out_all: false diff --git a/packs/kubevious-1.2.2/logo.png b/packs/kubevious-1.2.2/logo.png new file mode 100644 index 00000000..ea5f9950 Binary files /dev/null and b/packs/kubevious-1.2.2/logo.png differ diff --git a/packs/kubevious-1.2.2/pack.json b/packs/kubevious-1.2.2/pack.json new file mode 100644 index 00000000..6fafdd00 --- /dev/null +++ b/packs/kubevious-1.2.2/pack.json @@ -0,0 +1,73 @@ +{ + "addonType":"monitoring", + "annotations": { + "ingressSupported": "true", + "docsURL": "https://docs.spectrocloud.com/integrations/kubevious", + "source": "community", + "contributor" : "spectrocloud" + }, + "cloudTypes": [ + "all" + ], + "displayName": "Kubevious", + "charts": [ + "charts/kubevious-1.2.2.tgz" + ], + "layer": "addon", + "name": "kubevious", + "version": "1.2.2", + "constraints": { + "resources": [ + { + "type": "cpu", + "minLimit": 512, + "components": [ + { + "resourceRequestParamRef": "charts.kubevious.kubevious.resources.requests.cpu", + "replicaCountParamRef": "charts.kubevious.kubevious.replicaCount", + "scheduleType": "worker" + }, + { + "resourceRequestParamRef": "charts.kubevious.parser.resources.requests.cpu", + "replicaCountParamRef": "charts.kubevious.parser.replicaCount", + "scheduleType": "worker" + }, + { + "resourceRequestParamRef": "charts.kubevious.ui.resources.requests.cpu", + "replicaCountParamRef": "charts.kubevious.ui.replicaCount", + "scheduleType": "worker" + }, + { + "resourceRequestParamRef": "charts.kubevious.mysql.resources.requests.cpu", + "scheduleType": "worker" + } + ] + }, + { + "type": "memory", + "minLimit": 1636, + "components": [ + { + "resourceRequestParamRef": "charts.kubevious.kubevious.resources.requests.memory", + "replicaCountParamRef": "charts.kubevious.kubevious.replicaCount", + "scheduleType": "worker" + }, + { + "resourceRequestParamRef": "charts.kubevious.parser.resources.requests.memory", + "replicaCountParamRef": "charts.kubevious.parser.replicaCount", + "scheduleType": "worker" + }, + { + "resourceRequestParamRef": "charts.kubevious.ui.resources.requests.memory", + "replicaCountParamRef": "charts.kubevious.ui.replicaCount", + "scheduleType": "worker" + }, + { + "resourceRequestParamRef": "charts.kubevious.mysql.resources.requests.memory", + "scheduleType": "worker" + } + ] + } + ] + } +} diff --git a/packs/kubevious-1.2.2/presets.yaml b/packs/kubevious-1.2.2/presets.yaml new file mode 100644 index 00000000..a9ce2be2 --- /dev/null +++ b/packs/kubevious-1.2.2/presets.yaml @@ -0,0 +1,20 @@ +presets: + - name: "disable-kubevious-ingress" + displayName: "Disable" + group: "Ingress" + remove: [] + add: | + charts: + kubevious: + ingress: + enabled: false + + - name: "enable-kubevious-ingress" + displayName: "Enable" + group: "Ingress" + remove: [] + add: | + charts: + kubevious: + ingress: + enabled: true diff --git a/packs/kubevious-1.2.2/values.yaml b/packs/kubevious-1.2.2/values.yaml new file mode 100644 index 00000000..e3597392 --- /dev/null +++ b/packs/kubevious-1.2.2/values.yaml @@ -0,0 +1,319 @@ +# spectrocloud.com/enabled-presets: Ingress:disable-kubevious-ingress +pack: + #The namespace (on the target cluster) to install this chart + #When not found, a new namespace will be created + namespace: "kubevious" + content: + images: + - image: docker.io/kubevious/backend:1.2.2 + - image: docker.io/kubevious/collector:1.2.1 + - image: docker.io/kubevious/guard:1.2.1 + - image: docker.io/kubevious/parser:1.2.2 + - image: docker.io/kubevious/ui:1.2.1 + - image: docker.io/mysql:8.0.30 + - image: docker.io/redislabs/redisearch:2.4.14 + +charts: + kubevious: + + nameOverride: "kubevious" + fullnameOverride: "kubevious" + cluster: + domain: cluster.local + ### + ### INGRESS + ### + ingress: + enabled: false + className: "" + annotations: + kubernetes.io/ingress.allow-http: "true" + hosts: + - host: "" + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + ### + ### KUBEVIOUS BACKEND + ### + backend: + image: + repository: kubevious/backend + tag: 1.2.2 + pullPolicy: IfNotPresent + imagePullSecrets: [] + podAnnotations: {} + podSecurityContext: {} + securityContext: {} + service: + type: ClusterIP + port: 4000 + serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + resources: + requests: + cpu: 100m + memory: 200Mi + # limits: + # cpu: 500m + # memory: 1Gi + nodeSelector: {} + tolerations: [] + affinity: {} + log: + level: info + ### + ### KUBEVIOUS COLLECTOR + ### + collector: + image: + repository: kubevious/collector + tag: 1.2.1 + pullPolicy: IfNotPresent + imagePullSecrets: [] + podAnnotations: {} + podSecurityContext: {} + securityContext: {} + service: + type: ClusterIP + port: 4000 + serviceAccount: + # Specifies whether a service account should be created + create: false + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + resources: + requests: + cpu: 100m + memory: 200Mi + # limits: + # cpu: 500m + # memory: 1Gi + v8MaxOldSpace: null + nodeSelector: {} + tolerations: [] + affinity: {} + log: + level: info + ### + ### KUBEVIOUS GUARD + ### + guard: + image: + repository: kubevious/guard + tag: 1.2.1 + pullPolicy: IfNotPresent + imagePullSecrets: [] + podAnnotations: {} + podSecurityContext: {} + securityContext: {} + service: + type: ClusterIP + port: 4000 + serviceAccount: + # Specifies whether a service account should be created + create: false + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + resources: + requests: + cpu: 100m + memory: 200Mi + # limits: + # cpu: 500m + # memory: 1Gi + v8MaxOldSpace: null + nodeSelector: {} + tolerations: [] + affinity: {} + log: + level: info + ### + ### KUBEVIOUS PARSER + ### + parser: + image: + repository: kubevious/parser + tag: 1.2.2 + pullPolicy: IfNotPresent + imagePullSecrets: [] + podAnnotations: {} + podSecurityContext: {} + securityContext: {} + service: + type: ClusterIP + port: 4000 + resources: + requests: + cpu: 100m + memory: 200Mi + # limits: + # cpu: 500m + # memory: 1Gi + v8MaxOldSpace: null + nodeSelector: {} + tolerations: [] + affinity: {} + log: + level: info + serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + ### + ### KUBEVIOUS UI + ### + ui: + image: + repository: kubevious/ui + tag: 1.2.1 + pullPolicy: IfNotPresent + imagePullSecrets: [] + podAnnotations: {} + podSecurityContext: {} + securityContext: {} + service: + type: ClusterIP + port: 80 + serviceAccount: + # Specifies whether a service account should be created + create: false + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + resources: + requests: + cpu: 25m + memory: 50Mi + # limits: + # cpu: 100m + # memory: 128Mi + nodeSelector: {} + tolerations: [] + affinity: {} + ### + ### MYSQL + ### + mysql: + external: + enabled: false + host: "" + port: "" + database: "" + user: "" + password: "" + image: + repository: mysql + tag: 8.0.30 + pullPolicy: IfNotPresent + db_name: kubevious + db_user: "kubevious" + generate_passwords: false + db_password: "" + root_password: "" + persistence: + enabled: true + accessMode: ReadWriteOnce + size: "10Gi" + storageClass: "" + service: + type: ClusterIP + port: "3306" + serviceAccount: + # Specifies whether a service account should be created + create: false + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + imagePullSecrets: [] + podAnnotations: {} + podSecurityContext: {} + securityContext: {} + resources: + requests: + cpu: 250m + memory: 1000Mi + # limits: + # cpu: 1000m + # memory: 2Gi + nodeSelector: {} + tolerations: [] + affinity: {} + ### + ### REDIS + ### + redis: + image: + repository: redislabs/redisearch + tag: 2.4.14 + pullPolicy: IfNotPresent + service: + type: ClusterIP + port: "6379" + serviceAccount: + # Specifies whether a service account should be created + create: false + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + imagePullSecrets: [] + podAnnotations: {} + podSecurityContext: {} + securityContext: {} + resources: + requests: + cpu: 100m + memory: 128Mi + # limits: + # cpu: 1000m + # memory: 2Gi + nodeSelector: {} + tolerations: [] + affinity: {} + ### + ### WORLDVIOUS + ### + worldvious: + ## Disables version check. As a part of the version check, Kubevious deployments + ## are added to the leaderboard at https://worldvious.io. Reporting is anonymized + ## to the nearest city. No IP address is stored or logged. We calculate the SHA256 + ## hash of the IP address and use it as a key. As a part of this request, we also + ## added news notification and a feedback request mechanism. + opt_out_version_check: false + ## Disables automatic exception and error reporting. + opt_out_error_report: false + ## Disables periodic reporting of cluster metrics, such as: number of nodes, pods, + ## ingresses, configmaps, etc. The number of pods and nodes would appear on the + ## https://worldvious.io leaderboard. Those are the same counters you would see in + ## the console log of kubevious and parser pods. + opt_out_counters_report: false + ## Disables periodic reporting of internal time metrics. In conjunction with counters + ## reporting, this would help identify internal bottlenecks and improve overall + ## performance. Those are the same metrics you would see in the console log of kubevious + ## and parser pods. + opt_out_metrics_report: false + ## Opt out from all of the above reportings. + opt_out_all: false