Compare commits

...

111 Commits

Author SHA1 Message Date
nbykov0
dceff77c95 Update values.yaml with image metadata after build 2024-06-24 23:28:59 +03:00
nbykov0
b4ad5f8d85 dynamic targets for images 2024-06-24 19:42:12 +03:00
nbykov0
cffb825711 mv scripts to /hack 2024-06-20 17:41:41 +03:00
nbykov0
1af8b857c0 Add scripts for dockerfile update and docker image build/push 2024-06-19 19:00:30 +03:00
nbykov0
fceba58cd0 capi-operator example for airgapped installation 2024-06-19 18:59:15 +03:00
Andrei Kvapil
b30a9a6fcf fix: dependsOn kubeovn and cilium in -hosted bundles (#161) 2024-05-30 23:54:39 +03:00
Andrei Kvapil
8019256dfc Fix: clickhouse user login (#160) 2024-05-29 17:57:03 +02:00
Andrei Kvapil
d7cfa53cd4 Prepare release v0.7.0 (#156) 2024-05-29 10:04:22 +02:00
Andrei Kvapil
d7147c7fe1 kube-ovn: disable cozystack image tag (#153)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-05-27 22:47:12 +02:00
Andrei Kvapil
6211f9d876 cilium: enforce device detection and enable image building (#151)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-05-27 19:40:57 +02:00
Marian Koreniuk
b5f8006f3c Merge pull request #150 from aenix-io/upd-cilium
Update Cilium v1.15.5
2024-05-27 08:27:35 +02:00
Andrei Kvapil
e89926cca6 Update kube-ovn v1.13.0-ge1310e17 and enable image building (#149)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-05-26 18:11:36 +02:00
Andrei Kvapil
3254cc784e Update Cilium v1.15.5
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-05-24 17:43:54 +02:00
Marian Koreniuk
48df98230f change hardcode for talos registry (#148)
without this fix can't build project localy
2024-05-24 12:44:56 +02:00
Andrei Kvapil
5f01f30fe7 kubernetes: specify correct dns address (#147) 2024-05-22 08:32:06 +02:00
Andrei Kvapil
2cf23364b4 kamaji: unhardcode cluster.local domain (#145)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-05-21 11:23:10 +02:00
Andrei Kvapil
f30f7be6cc Unhardcode cluster.local domain (#142)
Allow using other domains for the cluster

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-05-21 11:22:54 +02:00
Andrei Kvapil
6cae6ce8ce kubernetes: enable bpf masqurade and tunnel routing (#144) 2024-05-21 11:22:37 +02:00
Andrei Kvapil
4a97e297d4 postgres: fix users and roles (#138)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-05-21 02:29:49 +02:00
Marian Koreniuk
6abaf7c0fa switched place -maxdepth im Makefiles (#140) 2024-05-21 02:29:34 +02:00
Andrei Kvapil
2b00fcf8f9 etcd: enable autocompact and defrag (#137)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-05-20 20:53:19 +02:00
Andrei Kvapil
007d414f0e Prepare release v0.6.0 (#135) 2024-05-16 16:11:37 +02:00
Andrei Kvapil
6fc1cc7d5d etcd: Add quota-backend-bytes calculations (#133) 2024-05-16 14:04:10 +02:00
Andrei Kvapil
7caccec11d upd kubernetes (#134)
* Allow root login without password

* add ephemeral volumes for containerd and kubelet

* update kubernetes application
2024-05-16 14:04:00 +02:00
Andrei Kvapil
c0685f4318 Prepare release v0.5.0 (#126)
* Prepare release v0.5.0

* fix mariadb
2024-05-10 12:52:57 +02:00
Andrei Kvapil
a9c42c8ef0 Update mariadb-operator v0.28.1 (#124) 2024-05-09 11:18:40 +02:00
Andrei Kvapil
0ea9ef3ae3 Update Cilium v1.14.10 (#125) 2024-05-09 11:18:27 +02:00
Andrei Kvapil
4da8ac3b77 Add schema generation and remove default values (#110)
* Add schema generation and remove default values

* fix monitoring schema generation

* fix default values


Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-05-09 10:45:57 +02:00
Nikita
781a531f62 Installer rollout startegy tuned to allow downtime (#123) 2024-05-09 10:44:43 +02:00
Andrei Kvapil
9c5318641d Fix assets building (#121) 2024-05-08 20:44:32 +02:00
Andrei Kvapil
53f2365e79 Fix: kubernetes and etcd-operator issues (#119)
* Fix datastore creation depends on created secrets

* Add basic topologySpreadConstraints

* Fix kubernetes chart post-rendering

* Update release images
2024-05-06 13:59:43 +02:00
Marian Koreniuk
9145be14c1 Merge pull request #117 from aenix-io/release-0.1.0v2
Prepare release v0.4.0
2024-05-06 09:25:39 +02:00
Andrei Kvapil
fca349c641 Update Talos v1.7.1 2024-05-04 07:32:08 +02:00
Andrei Kvapil
0b38599394 Prepare release v0.4.0
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-05-03 23:12:35 +02:00
Andrei Kvapil
0a33950a40 Prepare release v0.4.0 (#115) 2024-05-03 23:02:41 +02:00
Andrei Kvapil
e3376a223e Fix tolerations in Kubernetes chart (#116) 2024-05-03 13:26:02 +02:00
Marian Koreniuk
dee190ad4f Merge pull request #95 from aenix-io/etcd-operator
Replace kamaji-etcd with aenix-io/etcd-operator
2024-05-02 22:42:52 +02:00
Marian Koreniuk
66f963bfd0 Merge pull request #104 from aenix-io/replicas
Introduce replicas options
2024-04-26 16:03:09 +02:00
Andrei Kvapil
7cd7de73ee Introduce replicas options
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-26 15:19:25 +02:00
Andrei Kvapil
4f2757731a Fix: dashboard colors for dark mode (#108)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-26 12:12:00 +02:00
Andrei Kvapil
372c3cbd17 Update Kamaji v0.5.0 (#99)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-26 11:00:06 +02:00
Andrei Kvapil
ff9ab5ba85 Fix older versions in dashboard (#102)
Workaround for https://github.com/vmware-tanzu/kubeapps/issues/7740

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-26 10:41:05 +02:00
Andrei Kvapil
c7568d2312 Update kubeapps-15.0.2 (#103)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-26 10:18:22 +02:00
Marian Koreniuk
f4778abb3f Merge pull request #105 from aenix-io/upd-linstor
Update LISNTOR v1.27.1
2024-04-25 20:49:14 +02:00
Andrei Kvapil
68a7cc52c3 Update LISNTOR v1.27.1
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-25 18:29:23 +02:00
Marian Koreniuk
be508fd107 Fix etcd-operator Makefile 2024-04-24 16:21:06 +03:00
Andrei Kvapil
a6d0f7cfd4 Add etcd-operator
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-24 12:29:05 +02:00
Andrei Kvapil
a95671391f fix: Flux does not tolerate kubectl edits (#101)
https://fluxcd.io/flux/faq/#why-are-kubectl-edits-rolled-back-by-flux

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-24 11:31:32 +02:00
Andrei Kvapil
20fcd25d64 Calculate tags and version automatically (#100)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-24 11:31:22 +02:00
Andrei Kvapil
ca79f725a3 Prepare release v0.3.1 (#97)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-23 12:55:45 +03:00
Marian Koreniuk
be0603f139 Merge pull request #96 from aenix-io/missing-makefile
fix: missing package-system.mk
2024-04-23 12:53:00 +03:00
Andrei Kvapil
f8b87197d0 fix: flux dependency
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-23 09:43:04 +02:00
Andrei Kvapil
5d58e5ce7d fix: missing package-system.mk 2024-04-23 09:32:32 +02:00
Andrei Kvapil
a1340c1839 fix: clickhouse-operator watch namespaces (#93) 2024-04-23 08:50:45 +02:00
Marian Koreniuk
b838ee5729 Merge pull request #91 from artarik/main
remove duplicated entry for creating sa
2024-04-18 11:54:57 +03:00
Artem Starik
2baf532e1f HOTFIX: byump chart version 2024-04-18 11:10:14 +03:00
Artem Starik
7713e7de6b HOTFIX: remove duplicated sa from template 2024-04-18 11:07:21 +03:00
Artem Starik
aef38b6dec Merge pull request #1 from artarik/artarik-patch-1
HOTFIX: remove duplicated entry for sa
2024-04-18 11:02:12 +03:00
Artem Starik
b02c608d6c HOTFIX: remove duplicated entry for sa 2024-04-18 11:00:06 +03:00
Andrei Kvapil
f7eaab0aaa Prepare release v0.3.0 (#90) 2024-04-18 09:00:22 +02:00
Marian Koreniuk
05813c06dd Fix incorrect path to include in Makefiles (#89)
fix regression introduced by https://github.com/aenix-io/cozystack/pull/86

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-17 23:58:56 +02:00
Andrei Kvapil
038b3c08f4 fix: remove plus in kamaji-etcd image tag (#87)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-17 22:59:15 +02:00
Andrei Kvapil
5dd8d41907 fix: clickhouse-operator watch namespaces (#88)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-17 22:59:05 +02:00
Andrei Kvapil
2d21ed6ac9 fix: grafana ingress class (#85)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-17 22:51:54 +02:00
Marian Koreniuk
fe5d607cad Merge pull request #86 from aenix-io/83-refactor-makefiles
Refactor Makefiles #83
2024-04-17 22:39:14 +02:00
Marian Koreniuk
12b70d8f26 Fix victoria-metrics-operator Makefile 2024-04-17 23:30:19 +03:00
Marian Koreniuk
bc414d648d Fix redis-operator Makefile 2024-04-17 23:29:40 +03:00
Marian Koreniuk
9d4aacc832 Fix metallb Makefile 2024-04-17 23:28:40 +03:00
Marian Koreniuk
23ce7480c2 Fix mariadb-operator Makefile 2024-04-17 23:27:47 +03:00
Marian Koreniuk
994b5d97bd Fix kubevirt-operator Makefile 2024-04-17 23:26:48 +03:00
Marian Koreniuk
871f053e00 Fix kamaji Makefile 2024-04-17 23:25:37 +03:00
Marian Koreniuk
d3485eb0a3 Fix ingress-nginx Makefile 2024-04-17 23:25:06 +03:00
Marian Koreniuk
f3f65e9f9c Fix dashboard Makefile 2024-04-17 23:24:02 +03:00
Marian Koreniuk
1ef7d219de Fix cilium Makefile 2024-04-17 23:22:00 +03:00
Marian Koreniuk
3d0f65ff98 Fix cert-manager Makefile 2024-04-17 23:20:41 +03:00
Marian Koreniuk
451e124c56 Update hack/package-system.mk
Co-authored-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-17 23:02:27 +03:00
Marian Koreniuk
d86c1269eb Update hack/package-system.mk
Co-authored-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-17 23:02:14 +03:00
Marian Koreniuk
f4cf1af349 Update hack/package-system.mk
Co-authored-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-17 23:01:47 +03:00
Marian Koreniuk
758079520c fix case tabs in package-system.mk 2024-04-17 22:36:13 +03:00
Marian Koreniuk
fcebfdff24 Refactor Makefiles #83 2024-04-17 22:24:59 +03:00
Andrei Kvapil
8a2ad90882 Update clickhouse app (#82)
* Add users management
* Remove logs volume

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-17 20:09:16 +02:00
Andrei Kvapil
760f86d2ce Add application for Kafka (#78)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-17 14:23:56 +02:00
Andrei Kvapil
ad7d65f471 Add application for Clickhouse (#81) 2024-04-17 11:21:51 +02:00
Andrei Kvapil
c42dbcafc3 Add NoCloud asset for Hetzner installation (#80) 2024-04-16 21:52:50 +02:00
Andrei Kvapil
238061efbc Add clickhouse-operator (#75)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-13 08:57:49 +02:00
Andrei Kvapil
83bdc3f537 Add kafka-operator (#74)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-13 08:56:07 +02:00
Andrei Kvapil
c24a103fda Update mysql helm chart (#67)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-04 16:47:36 +02:00
Andrei Kvapil
8b975ff0cc Fix mysql app (#66)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-04 16:23:53 +02:00
Andrei Kvapil
e245d541b2 release v0.2.0 (#54)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-04 15:55:58 +02:00
Andrei Kvapil
f03f083c1a Rename bundles (#65)
- paas-full
- paas-hosted
- distro-full
- distro-hosted

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-04 15:54:14 +02:00
Andrei Kvapil
d68c6c68f6 Enable versioning for cozy-* charts (#62)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-04 12:33:54 +02:00
Andrei Kvapil
d5eb4dd62e Move flux to core package and avoid Helm installation (#61)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-04 12:31:42 +02:00
Andrei Kvapil
97cf386fc6 Merge pull request #59 from aenix-io/fix-cilium
fix cilium installation
2024-04-04 12:31:05 +02:00
Andrei Kvapil
a3a049ce6a fix cilium for full-distro bundle
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-04-04 04:50:16 +02:00
Andrei Kvapil
9b47df4407 Revert cilium to v1.14 2024-04-04 04:11:26 +02:00
Andrei Kvapil
39667d69f1 fix: cilium installation 2024-04-04 03:35:42 +02:00
Andrei Kvapil
0d36f3ee6c fix: full-distro bundle installation (#58) 2024-04-03 09:01:36 +02:00
Andrei Kvapil
34b9676971 fix: tolerate node.cilium.io/agent-not-ready (#56) 2024-04-02 08:53:53 +02:00
Andrei Kvapil
2e3314b2dd fix: chicken and egg problem (#57) 2024-04-02 08:53:34 +02:00
Andrei Kvapil
c58db33712 fix: Automatically build helm charts when building cozystack image (#55) 2024-04-02 08:53:13 +02:00
Andrei Kvapil
33bc23cfca Introduce bundles (#53)
* bundles

* Allow overriding values by prividng values-<release>: <json|yaml> in cozystack-config

* match bundle-name from cozystack-config

* add extra bundles
2024-04-01 17:42:51 +02:00
Andrei Kvapil
c5ead1932f mariadb-operator v0.27.0 (#51) 2024-04-01 17:42:33 +02:00
Andrei Kvapil
a7d12c1430 update kubeapps and flux (#50)
* Update fluxcd 2.2.3

* Update kubeapps 14.7.2
2024-04-01 17:42:22 +02:00
Timur Tukaev
5e1380df76 Update README.md (#49)
Fix link to cozystack website
2024-03-23 22:00:44 +01:00
Andrei Kvapil
03fab7a831 Update Cilium v1.14.5 (#47) 2024-03-15 22:01:30 +01:00
Andrei Kvapil
e17dcaa65e Update CNPG to 1.22.2 (#46)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-03-15 21:15:36 +01:00
Andrei Kvapil
85d4ed251d Update piraeus-operator and LINSTOR v2.4.1 (#45) 2024-03-15 21:15:27 +01:00
Andrei Kvapil
f1c01a0fe8 Add link to roadmap (#41)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-03-15 21:15:17 +01:00
Andrei Kvapil
2cff181279 Preapre release v0.2.0 (#38)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-03-15 21:15:06 +01:00
Andrei Kvapil
2e3555600d Positioning Cozystack as framework for building clouds (#31)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2024-03-05 11:05:40 +01:00
George Gaál
98f488fcac Fix gitignore (#26)
Signed-off-by: George Gaál <gb12335@gmail.com>
2024-02-21 12:33:52 +01:00
666 changed files with 133883 additions and 22448 deletions

2
.gitignore vendored
View File

@@ -1 +1,3 @@
_out _out
.git
.idea

View File

@@ -3,6 +3,8 @@
build: build:
make -C packages/apps/http-cache image make -C packages/apps/http-cache image
make -C packages/apps/kubernetes image make -C packages/apps/kubernetes image
make -C packages/system/cilium image
make -C packages/system/kubeovn image
make -C packages/system/dashboard image make -C packages/system/dashboard image
make -C packages/core/installer image make -C packages/core/installer image
make manifests make manifests
@@ -20,4 +22,4 @@ repos:
make -C packages/extra repo make -C packages/extra repo
assets: assets:
make -C packages/core/talos/ assets make -C packages/core/installer/ assets

View File

@@ -10,7 +10,7 @@
# Cozystack # Cozystack
**Cozystack** is an open-source **PaaS platform** for cloud providers. **Cozystack** is a free PaaS platform and framework for building clouds.
With Cozystack, you can transform your bunch of servers into an intelligent system with a simple REST API for spawning Kubernetes clusters, Database-as-a-Service, virtual machines, load balancers, HTTP caching services, and other services with ease. With Cozystack, you can transform your bunch of servers into an intelligent system with a simple REST API for spawning Kubernetes clusters, Database-as-a-Service, virtual machines, load balancers, HTTP caching services, and other services with ease.
@@ -33,7 +33,7 @@ You can use Cozystack as Kubernetes distribution for Bare Metal
## Documentation ## Documentation
The documentation is located on official [cozystack.io](cozystack.io) website. The documentation is located on official [cozystack.io](https://cozystack.io) website.
Read [Get Started](https://cozystack.io/docs/get-started/) section for a quick start. Read [Get Started](https://cozystack.io/docs/get-started/) section for a quick start.
@@ -44,6 +44,8 @@ If you encounter any difficulties, start with the [troubleshooting guide](https:
Versioning adheres to the [Semantic Versioning](http://semver.org/) principles. Versioning adheres to the [Semantic Versioning](http://semver.org/) principles.
A full list of the available releases is available in the GitHub repository's [Release](https://github.com/aenix-io/cozystack/releases) section. A full list of the available releases is available in the GitHub repository's [Release](https://github.com/aenix-io/cozystack/releases) section.
- [Roadmap](https://github.com/orgs/aenix-io/projects/2)
## Contributions ## Contributions
Contributions are highly appreciated and very welcomed! Contributions are highly appreciated and very welcomed!

28
hack/build-images.sh Executable file
View File

@@ -0,0 +1,28 @@
#!/usr/bin/env bash
set -o pipefail
set -e
REGISTRY=$1
NAME=$2
TYPE=$3
PUSH=$4
LOAD=$5
# an example for packages/system/capi-operator, native image and transformed one
# registry.k8s.io/capi-operator/cluster-api-operator:v0.8.1
# ghcr.io/aenix-io/cozystack/system/capi-operator/cluster-api-operator:v0.8.1
find images -mindepth 1 -maxdepth 1 -type d | \
while read dockerfile_path; do
image_name=$(echo $dockerfile_path | awk -F/ '{print $2}')
tag=$(egrep -o "FROM .*$image_name.*" $dockerfile_path/Dockerfile | awk -F: '{print $NF}')
docker buildx build $dockerfile_path \
--provenance=false \
--tag=$REGISTRY/$TYPE/$image_name:$tag \
--cache-from=type=registry,ref=$REGISTRY/$TYPE/$image_name:latest \
--cache-to=type=inline \
--push=$PUSH \
--load=$LOAD
done

View File

@@ -20,10 +20,29 @@ miss_map=$(echo "$new_map" | awk 'NR==FNR { new_map[$1 " " $2] = $3; next } { if
resolved_miss_map=$( resolved_miss_map=$(
echo "$miss_map" | while read chart version commit; do echo "$miss_map" | while read chart version commit; do
if [ "$commit" = HEAD ]; then if [ "$commit" = HEAD ]; then
line=$(awk '/^version:/ {print NR; exit}' "./$chart/Chart.yaml")
change_commit=$(git --no-pager blame -L"$line",+1 -- "$chart/Chart.yaml" | awk '{print $1}')
if [ "$change_commit" = "00000000" ]; then
# Not commited yet, use previus commit
line=$(git show HEAD:"./$chart/Chart.yaml" | awk '/^version:/ {print NR; exit}')
commit=$(git --no-pager blame -L"$line",+1 HEAD -- "$chart/Chart.yaml" | awk '{print $1}')
if [ $(echo $commit | cut -c1) = "^" ]; then
# Previus commit not exists
commit=$(echo $commit | cut -c2-)
fi
else
# Commited, but version_map wasn't updated
line=$(git show HEAD:"./$chart/Chart.yaml" | awk '/^version:/ {print NR; exit}') line=$(git show HEAD:"./$chart/Chart.yaml" | awk '/^version:/ {print NR; exit}')
change_commit=$(git --no-pager blame -L"$line",+1 HEAD -- "$chart/Chart.yaml" | awk '{print $1}') change_commit=$(git --no-pager blame -L"$line",+1 HEAD -- "$chart/Chart.yaml" | awk '{print $1}')
if [ $(echo $change_commit | cut -c1) = "^" ]; then
# Previus commit not exists
commit=$(echo $change_commit | cut -c2-)
else
commit=$(git describe --always "$change_commit~1") commit=$(git describe --always "$change_commit~1")
fi fi
fi
fi
echo "$chart $version $commit" echo "$chart $version $commit"
done done
) )

View File

@@ -1,19 +0,0 @@
#!/bin/sh
set -e
if [ -e $1 ]; then
echo "Please pass version in the first argument"
echo "Example: $0 v0.0.2"
exit 1
fi
version=$1
talos_version=$(awk '/^version:/ {print $2}' packages/core/installer/images/talos/profiles/installer.yaml)
set -x
sed -i "/^TAG / s|=.*|= ${version}|" \
packages/apps/http-cache/Makefile \
packages/apps/kubernetes/Makefile \
packages/core/installer/Makefile \
packages/system/dashboard/Makefile

32
hack/update-dockerfiles.sh Executable file
View File

@@ -0,0 +1,32 @@
#!/usr/bin/env bash
set -o pipefail
set -e
function update_dockerfile() {
local image=$1
local image_name=$(echo $image | awk -F/ '{print $NF}' | awk -F: '{print $1}')
[[ -z $image_name ]] && { echo "image_name is empty for image: $image">&2; exit 1; }
mkdir -p images/$image_name
if [[ ! -f images/$image_name/Dockerfile ]];
then
echo "FROM $image" > images/$image_name/Dockerfile
else
sed -i "s|FROM .*$image_name.*|FROM $image|" images/$image_name/Dockerfile
fi
}
function with_helm() {
helm template . | awk '/^[ \t"-]*image["]*: [a-zA-Z0-9/:@"\.-]+$/{print $NF}' | sed 's/"//g' | \
while read image; do
update_dockerfile $image
done
}
function with_grep() {
}
[[ -z $1 ]] && with_helm || $1

View File

@@ -15,13 +15,6 @@ metadata:
namespace: cozy-system namespace: cozy-system
--- ---
# Source: cozy-installer/templates/cozystack.yaml # Source: cozy-installer/templates/cozystack.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: cozystack
namespace: cozy-system
---
# Source: cozy-installer/templates/cozystack.yaml
apiVersion: rbac.authorization.k8s.io/v1 apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding kind: ClusterRoleBinding
metadata: metadata:
@@ -61,6 +54,11 @@ spec:
selector: selector:
matchLabels: matchLabels:
app: cozystack app: cozystack
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 0
maxUnavailable: 1
template: template:
metadata: metadata:
labels: labels:
@@ -70,7 +68,7 @@ spec:
serviceAccountName: cozystack serviceAccountName: cozystack
containers: containers:
- name: cozystack - name: cozystack
image: "ghcr.io/aenix-io/cozystack/cozystack:v0.1.0" image: "ghcr.io/aenix-io/cozystack/cozystack:v0.7.0"
env: env:
- name: KUBERNETES_SERVICE_HOST - name: KUBERNETES_SERVICE_HOST
value: localhost value: localhost
@@ -89,7 +87,7 @@ spec:
fieldRef: fieldRef:
fieldPath: metadata.name fieldPath: metadata.name
- name: darkhttpd - name: darkhttpd
image: "ghcr.io/aenix-io/cozystack/cozystack:v0.1.0" image: "ghcr.io/aenix-io/cozystack/cozystack:v0.7.0"
command: command:
- /usr/bin/darkhttpd - /usr/bin/darkhttpd
- /cozystack/assets - /cozystack/assets
@@ -102,3 +100,6 @@ spec:
- key: "node.kubernetes.io/not-ready" - key: "node.kubernetes.io/not-ready"
operator: "Exists" operator: "Exists"
effect: "NoSchedule" effect: "NoSchedule"
- key: "node.cilium.io/agent-not-ready"
operator: "Exists"
effect: "NoSchedule"

View File

@@ -7,11 +7,11 @@ repo:
awk '$$3 != "HEAD" {print "mkdir -p $(TMP)/" $$1 "-" $$2}' versions_map | sh -ex awk '$$3 != "HEAD" {print "mkdir -p $(TMP)/" $$1 "-" $$2}' versions_map | sh -ex
awk '$$3 != "HEAD" {print "git archive " $$3 " " $$1 " | tar -xf- --strip-components=1 -C $(TMP)/" $$1 "-" $$2 }' versions_map | sh -ex awk '$$3 != "HEAD" {print "git archive " $$3 " " $$1 " | tar -xf- --strip-components=1 -C $(TMP)/" $$1 "-" $$2 }' versions_map | sh -ex
helm package -d "$(OUT)" $$(find . $(TMP) -mindepth 2 -maxdepth 2 -name Chart.yaml | awk 'sub("/Chart.yaml", "")' | sort -V) helm package -d "$(OUT)" $$(find . $(TMP) -mindepth 2 -maxdepth 2 -name Chart.yaml | awk 'sub("/Chart.yaml", "")' | sort -V)
cd "$(OUT)" && helm repo index . cd "$(OUT)" && helm repo index . --url http://cozystack.cozy-system.svc/repos/apps
rm -rf "$(TMP)" rm -rf "$(TMP)"
fix-chartnames: fix-chartnames:
find . -name Chart.yaml -maxdepth 2 | awk -F/ '{print $$2}' | while read i; do sed -i "s/^name: .*/name: $$i/" "$$i/Chart.yaml"; done find . -maxdepth 2 -name Chart.yaml | awk -F/ '{print $$2}' | while read i; do sed -i "s/^name: .*/name: $$i/" "$$i/Chart.yaml"; done
gen-versions-map: fix-chartnames gen-versions-map: fix-chartnames
../../hack/gen_versions_map.sh ../../hack/gen_versions_map.sh

View File

@@ -0,0 +1,25 @@
apiVersion: v2
name: clickhouse
description: Managed ClickHouse service
icon: https://cdn.worldvectorlogo.com/logos/clickhouse.svg
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.2.1
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "24.3.0"

View File

@@ -0,0 +1,2 @@
generate:
readme-generator -v values.yaml -s values.schema.json -r README.md

View File

@@ -0,0 +1,17 @@
# Managed Clickhouse Service
## Parameters
### Common parameters
| Name | Description | Value |
| ---------- | ----------------------------- | ------ |
| `size` | Persistent Volume size | `10Gi` |
| `shards` | Number of Clickhouse replicas | `1` |
| `replicas` | Number of Clickhouse shards | `2` |
### Configuration parameters
| Name | Description | Value |
| ------- | ------------------- | ----- |
| `users` | Users configuration | `{}` |

View File

@@ -0,0 +1,37 @@
apiVersion: "clickhouse.altinity.com/v1"
kind: "ClickHouseInstallation"
metadata:
name: "{{ .Release.Name }}"
spec:
{{- with .Values.size }}
defaults:
templates:
dataVolumeClaimTemplate: data-volume-template
{{- end }}
configuration:
{{- with .Values.users }}
users:
{{- range $name, $u := . }}
{{ $name }}/password_sha256_hex: {{ sha256sum $u.password }}
{{ $name }}/profile: {{ ternary "readonly" "default" (index $u "readonly" | default false) }}
{{ $name }}/networks/ip: ["::/0"]
{{- end }}
{{- end }}
profiles:
readonly/readonly: "1"
clusters:
- name: "clickhouse"
layout:
shardsCount: {{ .Values.shards }}
replicasCount: {{ .Values.replicas }}
{{- with .Values.size }}
templates:
volumeClaimTemplates:
- name: data-volume-template
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ . }}
{{- end }}

View File

@@ -0,0 +1,21 @@
{
"title": "Chart Values",
"type": "object",
"properties": {
"size": {
"type": "string",
"description": "Persistent Volume size",
"default": "10Gi"
},
"shards": {
"type": "number",
"description": "Number of Clickhouse replicas",
"default": 1
},
"replicas": {
"type": "number",
"description": "Number of Clickhouse shards",
"default": 2
}
}
}

View File

@@ -0,0 +1,22 @@
## @section Common parameters
## @param size Persistent Volume size
## @param shards Number of Clickhouse replicas
## @param replicas Number of Clickhouse shards
##
size: 10Gi
shards: 1
replicas: 2
## @section Configuration parameters
## @param users [object] Users configuration
## Example:
## users:
## user1:
## password: strongpassword
## user2:
## readonly: true
## password: hackme
##
users: {}

View File

@@ -16,10 +16,10 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes # This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version. # to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/) # Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0 version: 0.2.0
# This is the version number of the application being deployed. This version number should be # This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to # incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using. # follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes. # It is recommended to use it with quotes.
appVersion: "1.16.0" appVersion: "1.25.3"

View File

@@ -1,22 +1,23 @@
PUSH := 1
LOAD := 0
REGISTRY := ghcr.io/aenix-io/cozystack
NGINX_CACHE_TAG = v0.1.0 NGINX_CACHE_TAG = v0.1.0
TAG := v0.1.0
include ../../../scripts/common-envs.mk
image: image-nginx image: image-nginx
image-nginx: image-nginx:
docker buildx build --platform linux/amd64 --build-arg ARCH=amd64 images/nginx-cache \ docker buildx build --platform linux/amd64 --build-arg ARCH=amd64 images/nginx-cache \
--provenance false \ --provenance false \
--tag $(REGISTRY)/nginx-cache:$(NGINX_CACHE_TAG) \ --tag $(REGISTRY)/nginx-cache:$(call settag,$(NGINX_CACHE_TAG)) \
--tag $(REGISTRY)/nginx-cache:$(NGINX_CACHE_TAG)-$(TAG) \ --tag $(REGISTRY)/nginx-cache:$(call settag,$(NGINX_CACHE_TAG)-$(TAG)) \
--cache-from type=registry,ref=$(REGISTRY)/nginx-cache:$(NGINX_CACHE_TAG) \ --cache-from type=registry,ref=$(REGISTRY)/nginx-cache:latest \
--cache-to type=inline \ --cache-to type=inline \
--metadata-file images/nginx-cache.json \ --metadata-file images/nginx-cache.json \
--push=$(PUSH) \ --push=$(PUSH) \
--load=$(LOAD) --load=$(LOAD)
echo "$(REGISTRY)/nginx-cache:$(NGINX_CACHE_TAG)" > images/nginx-cache.tag echo "$(REGISTRY)/nginx-cache:$(call settag,$(NGINX_CACHE_TAG))" > images/nginx-cache.tag
generate:
readme-generator -v values.yaml -s values.schema.json -r README.md
update: update:
tag=$$(git ls-remote --tags --sort="v:refname" https://github.com/chrislim2888/IP2Location-C-Library | awk -F'[/^]' 'END{print $$3}') && \ tag=$$(git ls-remote --tags --sort="v:refname" https://github.com/chrislim2888/IP2Location-C-Library | awk -F'[/^]' 'END{print $$3}') && \

View File

@@ -55,3 +55,20 @@ The deployment architecture is illustrated in the diagram below:
VTS module shows wrong upstream resonse time VTS module shows wrong upstream resonse time
- https://github.com/vozlt/nginx-module-vts/issues/198 - https://github.com/vozlt/nginx-module-vts/issues/198
## Parameters
### Common parameters
| Name | Description | Value |
| ------------------ | ----------------------------------------------- | ------- |
| `external` | Enable external access from outside the cluster | `false` |
| `size` | Persistent Volume size | `10Gi` |
| `haproxy.replicas` | Number of HAProxy replicas | `2` |
| `nginx.replicas` | Number of Nginx replicas | `2` |
### Configuration parameters
| Name | Description | Value |
| ----------- | ----------------------- | ----- |
| `endpoints` | Endpoints configuration | `[]` |

View File

@@ -1,4 +1,4 @@
{ {
"containerimage.config.digest": "sha256:318fd8d0d6f6127387042f6ad150e87023d1961c7c5059dd5324188a54b0ab4e", "containerimage.config.digest": "sha256:31dedc466b9f92131f3e0f35b47d1f3771b6895d5b9a6cc089786b76b00c3a25",
"containerimage.digest": "sha256:e3cf145238e6e45f7f13b9acaea445c94ff29f76a34ba9fa50828401a5a3cc68" "containerimage.digest": "sha256:86c7a8f2a11cbede492c778ffd67c759f722ab6958cab4a9df66af4035b1d7d9"
} }

View File

@@ -74,7 +74,7 @@ data:
option redispatch 1 option redispatch 1
default-server observe layer7 error-limit 10 on-error mark-down default-server observe layer7 error-limit 10 on-error mark-down
{{- range $i, $e := until (int $.Values.replicas) }} {{- range $i, $e := until (int $.Values.nginx.replicas) }}
server cache{{ $i }} {{ $.Release.Name }}-nginx-cache-{{ $i }}:80 check server cache{{ $i }} {{ $.Release.Name }}-nginx-cache-{{ $i }}:80 check
{{- end }} {{- end }}
{{- range $i, $e := $.Values.endpoints }} {{- range $i, $e := $.Values.endpoints }}

View File

@@ -7,7 +7,7 @@ metadata:
app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/managed-by: {{ .Release.Service }}
spec: spec:
replicas: 2 replicas: {{ .Values.haproxy.replicas }}
selector: selector:
matchLabels: matchLabels:
app: {{ .Release.Name }}-haproxy app: {{ .Release.Name }}-haproxy

View File

@@ -11,7 +11,7 @@ spec:
selector: selector:
matchLabels: matchLabels:
app: {{ $.Release.Name }}-nginx-cache app: {{ $.Release.Name }}-nginx-cache
{{- range $i := until 3 }} {{- range $i := until (int $.Values.nginx.replicas) }}
--- ---
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment

View File

@@ -0,0 +1,42 @@
{
"title": "Chart Values",
"type": "object",
"properties": {
"external": {
"type": "boolean",
"description": "Enable external access from outside the cluster",
"default": false
},
"size": {
"type": "string",
"description": "Persistent Volume size",
"default": "10Gi"
},
"haproxy": {
"type": "object",
"properties": {
"replicas": {
"type": "number",
"description": "Number of HAProxy replicas",
"default": 2
}
}
},
"nginx": {
"type": "object",
"properties": {
"replicas": {
"type": "number",
"description": "Number of Nginx replicas",
"default": 2
}
}
},
"endpoints": {
"type": "array",
"description": "Endpoints configuration",
"default": [],
"items": {}
}
}
}

View File

@@ -1,9 +1,28 @@
## @section Common parameters
## @param external Enable external access from outside the cluster
## @param size Persistent Volume size
## @param haproxy.replicas Number of HAProxy replicas
## @param nginx.replicas Number of Nginx replicas
##
external: false external: false
size: 10Gi size: 10Gi
endpoints: haproxy:
- 10.100.3.1:80 replicas: 2
- 10.100.3.11:80 nginx:
- 10.100.3.2:80 replicas: 2
- 10.100.3.12:80
- 10.100.3.3:80 ## @section Configuration parameters
- 10.100.3.13:80
## @param endpoints Endpoints configuration
## Example:
## endpoints:
## - 10.100.3.1:80
## - 10.100.3.11:80
## - 10.100.3.2:80
## - 10.100.3.12:80
## - 10.100.3.3:80
## - 10.100.3.13:80
##
endpoints: []

View File

@@ -0,0 +1,25 @@
apiVersion: v2
name: kafka
description: Managed Kafka service
icon: https://upload.wikimedia.org/wikipedia/commons/0/05/Apache_kafka.svg
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.2.0
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "3.7.0"

View File

@@ -0,0 +1,2 @@
generate:
readme-generator -v values.yaml -s values.schema.json -r README.md

View File

@@ -0,0 +1,19 @@
# Managed Kafka Service
## Parameters
### Common parameters
| Name | Description | Value |
| -------------------- | ----------------------------------------------- | ------- |
| `external` | Enable external access from outside the cluster | `false` |
| `kafka.size` | Persistent Volume size for Kafka | `10Gi` |
| `kafka.replicas` | Number of Kafka replicas | `3` |
| `zookeeper.size` | Persistent Volume size for ZooKeeper | `5Gi` |
| `zookeeper.replicas` | Number of ZooKeeper replicas | `3` |
### Configuration parameters
| Name | Description | Value |
| -------- | -------------------- | ----- |
| `topics` | Topics configuration | `[]` |

View File

@@ -0,0 +1,53 @@
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: {{ .Release.Name }}
labels:
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
kafka:
replicas: {{ .Values.kafka.replicas }}
listeners:
- name: plain
port: 9092
type: internal
tls: false
- name: tls
port: 9093
type: internal
tls: true
- name: external
port: 9094
{{- if .Values.external }}
type: loadbalancer
{{- else }}
type: internal
{{- end }}
tls: false
config:
offsets.topic.replication.factor: 3
transaction.state.log.replication.factor: 3
transaction.state.log.min.isr: 2
default.replication.factor: 3
min.insync.replicas: 2
storage:
type: jbod
volumes:
- id: 0
type: persistent-claim
{{- with .Values.kafka.size }}
size: {{ . }}
{{- end }}
deleteClaim: true
zookeeper:
replicas: {{ .Values.zookeeper.replicas }}
storage:
type: persistent-claim
{{- with .Values.zookeeper.size }}
size: {{ . }}
{{- end }}
deleteClaim: false
entityOperator:
topicOperator: {}
userOperator: {}

View File

@@ -0,0 +1,17 @@
{{- range $topic := .Values.topics }}
---
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaTopic
metadata:
name: "{{ $.Release.Name }}-{{ kebabcase $topic.name }}"
labels:
strimzi.io/cluster: "{{ $.Release.Name }}"
spec:
topicName: "{{ $topic.name }}"
partitions: 10
replicas: 3
{{- with $topic.config }}
config:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,47 @@
{
"title": "Chart Values",
"type": "object",
"properties": {
"external": {
"type": "boolean",
"description": "Enable external access from outside the cluster",
"default": false
},
"kafka": {
"type": "object",
"properties": {
"size": {
"type": "string",
"description": "Persistent Volume size for Kafka",
"default": "10Gi"
},
"replicas": {
"type": "number",
"description": "Number of Kafka replicas",
"default": 3
}
}
},
"zookeeper": {
"type": "object",
"properties": {
"size": {
"type": "string",
"description": "Persistent Volume size for ZooKeeper",
"default": "5Gi"
},
"replicas": {
"type": "number",
"description": "Number of ZooKeeper replicas",
"default": 3
}
}
},
"topics": {
"type": "array",
"description": "Topics configuration",
"default": [],
"items": {}
}
}
}

View File

@@ -0,0 +1,37 @@
## @section Common parameters
## @param external Enable external access from outside the cluster
## @param kafka.size Persistent Volume size for Kafka
## @param kafka.replicas Number of Kafka replicas
## @param zookeeper.size Persistent Volume size for ZooKeeper
## @param zookeeper.replicas Number of ZooKeeper replicas
##
external: false
kafka:
size: 10Gi
replicas: 3
zookeeper:
size: 5Gi
replicas: 3
## @section Configuration parameters
## @param topics Topics configuration
## Example:
## topics:
## - name: Results
## partitions: 1
## replicas: 3
## config:
## min.insync.replicas: 2
## - name: Orders
## config:
## cleanup.policy: compact
## segment.ms: 3600000
## max.compaction.lag.ms: 5400000
## min.insync.replicas: 2
## partitions: 1
## replicationFactor: 3
##
topics: []

View File

@@ -16,10 +16,10 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes # This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version. # to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/) # Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0 version: 0.4.0
# This is the version number of the application being deployed. This version number should be # This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to # incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using. # follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes. # It is recommended to use it with quotes.
appVersion: "1.16.0" appVersion: "1.19.4"

View File

@@ -1,19 +1,20 @@
PUSH := 1
LOAD := 0
REGISTRY := ghcr.io/aenix-io/cozystack
TAG := v0.1.0
UBUNTU_CONTAINER_DISK_TAG = v1.29.1 UBUNTU_CONTAINER_DISK_TAG = v1.29.1
include ../../../scripts/common-envs.mk
generate:
readme-generator -v values.yaml -s values.schema.json -r README.md
image: image-ubuntu-container-disk image: image-ubuntu-container-disk
image-ubuntu-container-disk: image-ubuntu-container-disk:
docker buildx build --platform linux/amd64 --build-arg ARCH=amd64 images/ubuntu-container-disk \ docker buildx build --platform linux/amd64 --build-arg ARCH=amd64 images/ubuntu-container-disk \
--provenance false \ --provenance false \
--tag $(REGISTRY)/ubuntu-container-disk:$(UBUNTU_CONTAINER_DISK_TAG) \ --tag $(REGISTRY)/ubuntu-container-disk:$(call settag,$(UBUNTU_CONTAINER_DISK_TAG)) \
--tag $(REGISTRY)/ubuntu-container-disk:$(UBUNTU_CONTAINER_DISK_TAG)-$(TAG) \ --tag $(REGISTRY)/ubuntu-container-disk:$(call settag,$(UBUNTU_CONTAINER_DISK_TAG)-$(TAG)) \
--cache-from type=registry,ref=$(REGISTRY)/ubuntu-container-disk:$(UBUNTU_CONTAINER_DISK_TAG) \ --cache-from type=registry,ref=$(REGISTRY)/ubuntu-container-disk:latest \
--cache-to type=inline \ --cache-to type=inline \
--metadata-file images/ubuntu-container-disk.json \ --metadata-file images/ubuntu-container-disk.json \
--push=$(PUSH) \ --push=$(PUSH) \
--load=$(LOAD) --load=$(LOAD)
echo "$(REGISTRY)/ubuntu-container-disk:$(UBUNTU_CONTAINER_DISK_TAG)" > images/ubuntu-container-disk.tag echo "$(REGISTRY)/ubuntu-container-disk:$(call settag,$(UBUNTU_CONTAINER_DISK_TAG))" > images/ubuntu-container-disk.tag

View File

@@ -26,3 +26,13 @@ How to access to deployed cluster:
``` ```
kubectl get secret -n <namespace> kubernetes-<clusterName>-admin-kubeconfig -o go-template='{{ printf "%s\n" (index .data "super-admin.conf" | base64decode) }}' > test kubectl get secret -n <namespace> kubernetes-<clusterName>-admin-kubeconfig -o go-template='{{ printf "%s\n" (index .data "super-admin.conf" | base64decode) }}' > test
``` ```
## Parameters
### Common parameters
| Name | Description | Value |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ----- |
| `host` | The hostname used to access the Kubernetes cluster externally (defaults to using the cluster name as a subdomain for the tenant host). | `""` |
| `controlPlane.replicas` | Number of replicas for Kubernetes contorl-plane components | `2` |
| `nodeGroups` | nodeGroups configuration | `{}` |

View File

@@ -1,4 +1,4 @@
{ {
"containerimage.config.digest": "sha256:ee8968be63c7c45621ec45f3687211e0875acb24e8d9784e8d2ebcbf46a3538c", "containerimage.config.digest": "sha256:24cee18d0bc9ed40e741412da86820dd99bdb9ffa4c794c81856725a4a10d86e",
"containerimage.digest": "sha256:16c3c07e74212585786dc1f1ae31d3ab90a575014806193e8e37d1d7751cb084" "containerimage.digest": "sha256:6a43369905e0630bb401e1cf73084bbef3060e960756f261676cd3bea4195e9a"
} }

View File

@@ -15,6 +15,12 @@ spec:
labels: labels:
app: {{ .Release.Name }}-cluster-autoscaler app: {{ .Release.Name }}-cluster-autoscaler
spec: spec:
tolerations:
- key: CriticalAddonsOnly
operator: Exists
- key: node-role.kubernetes.io/control-plane
operator: Exists
effect: "NoSchedule"
containers: containers:
- image: ghcr.io/kvaps/test:cluster-autoscaller - image: ghcr.io/kvaps/test:cluster-autoscaller
name: cluster-autoscaler name: cluster-autoscaler

View File

@@ -39,7 +39,9 @@ metadata:
spec: spec:
dataStoreName: "{{ $etcd }}" dataStoreName: "{{ $etcd }}"
addons: addons:
coreDNS: {} coreDNS:
dnsServiceIPs:
- 10.95.0.10
konnectivity: {} konnectivity: {}
kubelet: kubelet:
cgroupfs: systemd cgroupfs: systemd
@@ -55,7 +57,7 @@ spec:
className: "{{ $ingress }}" className: "{{ $ingress }}"
deployment: deployment:
replicas: 2 replicas: 2
version: 1.29.0 version: 1.29.4
--- ---
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1 apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1
kind: KubevirtCluster kind: KubevirtCluster
@@ -64,21 +66,37 @@ metadata:
cluster.x-k8s.io/managed-by: kamaji cluster.x-k8s.io/managed-by: kamaji
name: {{ .Release.Name }} name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
{{- range $groupName, $group := .Values.nodeGroups }}
--- ---
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1 apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
kind: KubeadmConfigTemplate kind: KubeadmConfigTemplate
metadata: metadata:
name: {{ .Release.Name }}-md-0 name: {{ $.Release.Name }}-{{ $groupName }}
namespace: {{ .Release.Namespace }} namespace: {{ $.Release.Namespace }}
spec: spec:
template: template:
spec: spec:
diskSetup:
filesystems:
- device: /dev/vdb
filesystem: xfs
label: containerd
partition: "none"
- device: /dev/vdc
filesystem: xfs
label: kubelet
partition: "none"
mounts:
- ["LABEL=containerd", "/var/lib/containerd"]
- ["LABEL=kubelet", "/var/lib/kubelet"]
preKubeadmCommands:
- sed -i 's|root:x:|root::|' /etc/passwd
joinConfiguration: joinConfiguration:
nodeRegistration: nodeRegistration:
kubeletExtraArgs: {} kubeletExtraArgs: {}
discovery: discovery:
bootstrapToken: bootstrapToken:
apiServerEndpoint: {{ .Release.Name }}.{{ .Release.Namespace }}.svc:6443 apiServerEndpoint: {{ $.Release.Name }}.{{ $.Release.Namespace }}.svc:6443
initConfiguration: initConfiguration:
skipPhases: skipPhases:
- addon/kube-proxy - addon/kube-proxy
@@ -86,8 +104,8 @@ spec:
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1 apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1
kind: KubevirtMachineTemplate kind: KubevirtMachineTemplate
metadata: metadata:
name: {{ .Release.Name }}-md-0 name: {{ $.Release.Name }}-{{ $groupName }}
namespace: {{ .Release.Namespace }} namespace: {{ $.Release.Namespace }}
spec: spec:
template: template:
spec: spec:
@@ -95,7 +113,7 @@ spec:
checkStrategy: ssh checkStrategy: ssh
virtualMachineTemplate: virtualMachineTemplate:
metadata: metadata:
namespace: {{ .Release.Namespace }} namespace: {{ $.Release.Namespace }}
spec: spec:
runStrategy: Always runStrategy: Always
template: template:
@@ -103,48 +121,62 @@ spec:
domain: domain:
cpu: cpu:
threads: 1 threads: 1
cores: 2 cores: {{ $group.resources.cpu }}
sockets: 1 sockets: 1
devices: devices:
disks: disks:
- disk: - name: system
disk:
bus: virtio bus: virtio
name: containervolume pciAddress: 0000:07:00.0
- name: containerd
disk:
bus: virtio
pciAddress: 0000:08:00.0
- name: kubelet
disk:
bus: virtio
pciAddress: 0000:09:00.0
networkInterfaceMultiqueue: true networkInterfaceMultiqueue: true
memory: memory:
guest: 1024Mi guest: {{ $group.resources.memory }}
evictionStrategy: External evictionStrategy: External
volumes: volumes:
- containerDisk: - name: system
containerDisk:
image: "{{ $.Files.Get "images/ubuntu-container-disk.tag" | trim }}@{{ index ($.Files.Get "images/ubuntu-container-disk.json" | fromJson) "containerimage.digest" }}" image: "{{ $.Files.Get "images/ubuntu-container-disk.tag" | trim }}@{{ index ($.Files.Get "images/ubuntu-container-disk.json" | fromJson) "containerimage.digest" }}"
name: containervolume - name: containerd
emptyDisk:
capacity: 20Gi
- name: kubelet
emptyDisk:
capacity: 20Gi
--- ---
apiVersion: cluster.x-k8s.io/v1beta1 apiVersion: cluster.x-k8s.io/v1beta1
kind: MachineDeployment kind: MachineDeployment
metadata: metadata:
name: {{ .Release.Name }}-md-0 name: {{ $.Release.Name }}-{{ $groupName }}
namespace: {{ .Release.Namespace }} namespace: {{ $.Release.Namespace }}
annotations: annotations:
cluster.x-k8s.io/cluster-api-autoscaler-node-group-max-size: "2" cluster.x-k8s.io/cluster-api-autoscaler-node-group-min-size: "{{ $group.minReplicas }}"
cluster.x-k8s.io/cluster-api-autoscaler-node-group-min-size: "0" cluster.x-k8s.io/cluster-api-autoscaler-node-group-max-size: "{{ $group.maxReplicas }}"
capacity.cluster-autoscaler.kubernetes.io/memory: "1024Mi" capacity.cluster-autoscaler.kubernetes.io/memory: "{{ $group.resources.memory }}"
capacity.cluster-autoscaler.kubernetes.io/cpu: "2" capacity.cluster-autoscaler.kubernetes.io/cpu: "{{ $group.resources.cpu }}"
spec: spec:
clusterName: {{ .Release.Name }} clusterName: {{ $.Release.Name }}
selector:
matchLabels: null
template: template:
spec: spec:
bootstrap: bootstrap:
configRef: configRef:
apiVersion: bootstrap.cluster.x-k8s.io/v1beta1 apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
kind: KubeadmConfigTemplate kind: KubeadmConfigTemplate
name: {{ .Release.Name }}-md-0 name: {{ $.Release.Name }}-{{ $groupName }}
namespace: default namespace: default
clusterName: {{ .Release.Name }} clusterName: {{ $.Release.Name }}
infrastructureRef: infrastructureRef:
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1 apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1
kind: KubevirtMachineTemplate kind: KubevirtMachineTemplate
name: {{ .Release.Name }}-md-0 name: {{ $.Release.Name }}-{{ $groupName }}
namespace: default namespace: default
version: v1.23.10 version: v1.29.4
{{- end }}

View File

@@ -16,12 +16,10 @@ spec:
spec: spec:
serviceAccountName: {{ .Release.Name }}-kcsi serviceAccountName: {{ .Release.Name }}-kcsi
priorityClassName: system-cluster-critical priorityClassName: system-cluster-critical
nodeSelector:
node-role.kubernetes.io/control-plane: ""
tolerations: tolerations:
- key: CriticalAddonsOnly - key: CriticalAddonsOnly
operator: Exists operator: Exists
- key: node-role.kubernetes.io/master - key: node-role.kubernetes.io/control-plane
operator: Exists operator: Exists
effect: "NoSchedule" effect: "NoSchedule"
containers: containers:

View File

@@ -26,7 +26,9 @@ spec:
values: values:
cilium: cilium:
tunnel: disabled tunnel: disabled
autoDirectNodeRoutes: true autoDirectNodeRoutes: false
bpf:
masquerade: true
cgroup: cgroup:
autoMount: autoMount:
enabled: true enabled: true
@@ -38,9 +40,9 @@ spec:
chainingMode: ~ chainingMode: ~
customConf: false customConf: false
configMap: "" configMap: ""
routingMode: native routingMode: tunnel
enableIPv4Masquerade: true enableIPv4Masquerade: true
ipv4NativeRoutingCIDR: "10.244.0.0/16" ipv4NativeRoutingCIDR: ""
dependsOn: dependsOn:
- name: {{ .Release.Name }} - name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}

View File

@@ -12,6 +12,12 @@ spec:
spec: spec:
serviceAccountName: {{ .Release.Name }}-flux-teardown serviceAccountName: {{ .Release.Name }}-flux-teardown
restartPolicy: Never restartPolicy: Never
tolerations:
- key: CriticalAddonsOnly
operator: Exists
- key: node-role.kubernetes.io/control-plane
operator: Exists
effect: "NoSchedule"
containers: containers:
- name: kubectl - name: kubectl
image: docker.io/clastix/kubectl:v1.29.1 image: docker.io/clastix/kubectl:v1.29.1

View File

@@ -14,6 +14,12 @@ spec:
labels: labels:
k8s-app: {{ .Release.Name }}-kccm k8s-app: {{ .Release.Name }}-kccm
spec: spec:
tolerations:
- key: CriticalAddonsOnly
operator: Exists
- key: node-role.kubernetes.io/control-plane
operator: Exists
effect: "NoSchedule"
containers: containers:
- name: kubevirt-cloud-controller-manager - name: kubevirt-cloud-controller-manager
args: args:
@@ -44,6 +50,4 @@ spec:
- secret: - secret:
secretName: {{ .Release.Name }}-admin-kubeconfig secretName: {{ .Release.Name }}-admin-kubeconfig
name: kubeconfig name: kubeconfig
tolerations:
- operator: Exists
serviceAccountName: {{ .Release.Name }}-kccm serviceAccountName: {{ .Release.Name }}-kccm

View File

@@ -1,11 +1,21 @@
{ {
"$schema": "http://json-schema.org/schema#", "title": "Chart Values",
"type": "object", "type": "object",
"properties": { "properties": {
"host": { "host": {
"type": "string", "type": "string",
"title": "Domain name for this kubernetes cluster", "description": "The hostname used to access the Kubernetes cluster externally (defaults to using the cluster name as a subdomain for the tenant host).",
"description": "This host will be used for all apps deployed in this tenant" "default": ""
},
"controlPlane": {
"type": "object",
"properties": {
"replicas": {
"type": "number",
"description": "Number of replicas for Kubernetes contorl-plane components",
"default": 2
}
}
} }
} }
} }

View File

@@ -1 +1,18 @@
## @section Common parameters
## @param host The hostname used to access the Kubernetes cluster externally (defaults to using the cluster name as a subdomain for the tenant host).
## @param controlPlane.replicas Number of replicas for Kubernetes contorl-plane components
##
host: "" host: ""
controlPlane:
replicas: 2
## @param nodeGroups [object] nodeGroups configuration
##
nodeGroups:
md0:
minReplicas: 0
maxReplicas: 10
resources:
cpu: 2
memory: 1024Mi

View File

@@ -16,10 +16,10 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes # This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version. # to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/) # Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0 version: 0.3.0
# This is the version number of the application being deployed. This version number should be # This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to # incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using. # follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes. # It is recommended to use it with quotes.
appVersion: "1.16.0" appVersion: "11.0.2"

View File

@@ -0,0 +1,2 @@
generate:
readme-generator -v values.yaml -s values.schema.json -r README.md

View File

@@ -62,3 +62,34 @@ more details:
mysqldump -h <slave> -P 3306 -u<user> -p<password> --column-statistics=0 <database> <table> ~/tmp/fix-table.sql mysqldump -h <slave> -P 3306 -u<user> -p<password> --column-statistics=0 <database> <table> ~/tmp/fix-table.sql
mysql -h <master> -P 3306 -u<user> -p<password> <database> < ~/tmp/fix-table.sql mysql -h <master> -P 3306 -u<user> -p<password> <database> < ~/tmp/fix-table.sql
``` ```
## Parameters
### Common parameters
| Name | Description | Value |
| ---------- | ----------------------------------------------- | ------- |
| `external` | Enable external access from outside the cluster | `false` |
| `size` | Persistent Volume size | `10Gi` |
| `replicas` | Number of MariaDB replicas | `2` |
### Configuration parameters
| Name | Description | Value |
| ----------- | ----------------------- | ----- |
| `users` | Users configuration | `{}` |
| `databases` | Databases configuration | `[]` |
### Backup parameters
| Name | Description | Value |
| ------------------------ | ---------------------------------------------- | ------------------------------------------------------ |
| `backup.enabled` | Enable pereiodic backups | `false` |
| `backup.s3Region` | The AWS S3 region where backups are stored | `us-east-1` |
| `backup.s3Bucket` | The S3 bucket used for storing backups | `s3.example.org/postgres-backups` |
| `backup.schedule` | Cron schedule for automated backups | `0 2 * * *` |
| `backup.cleanupStrategy` | The strategy for cleaning up old backups | `--keep-last=3 --keep-daily=3 --keep-within-weekly=1m` |
| `backup.s3AccessKey` | The access key for S3, used for authentication | `oobaiRus9pah8PhohL1ThaeTa4UVa7gu` |
| `backup.s3SecretKey` | The secret key for S3, used for authentication | `ju3eum4dekeich9ahM1te8waeGai0oog` |
| `backup.resticPassword` | The password for Restic backup encryption | `ChaXoveekoh6eigh4siesheeda2quai0` |

View File

@@ -1,7 +1,7 @@
{{- range $name := .Values.databases }} {{- range $name := .Values.databases }}
{{ $dnsName := replace "_" "-" $name }} {{ $dnsName := replace "_" "-" $name }}
--- ---
apiVersion: mariadb.mmontes.io/v1alpha1 apiVersion: k8s.mariadb.com/v1alpha1
kind: Database kind: Database
metadata: metadata:
name: {{ $.Release.Name }}-{{ $dnsName }} name: {{ $.Release.Name }}-{{ $dnsName }}

View File

@@ -1,18 +1,20 @@
--- ---
apiVersion: mariadb.mmontes.io/v1alpha1 apiVersion: k8s.mariadb.com/v1alpha1
kind: MariaDB kind: MariaDB
metadata: metadata:
name: {{ .Release.Name }} name: {{ .Release.Name }}
spec: spec:
{{- if (and .Values.users.root .Values.users.root.password) }}
rootPasswordSecretKeyRef: rootPasswordSecretKeyRef:
name: {{ .Release.Name }} name: {{ .Release.Name }}
key: root-password key: root-password
{{- end }}
image: "mariadb:11.0.2" image: "mariadb:11.0.2"
port: 3306 port: 3306
replicas: 2 replicas: {{ .Values.replicas }}
affinity: affinity:
podAntiAffinity: podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution: requiredDuringSchedulingIgnoredDuringExecution:
@@ -28,15 +30,18 @@ spec:
- {{ .Release.Name }} - {{ .Release.Name }}
topologyKey: "kubernetes.io/hostname" topologyKey: "kubernetes.io/hostname"
{{- if gt (int .Values.replicas) 1 }}
replication: replication:
enabled: true enabled: true
#primary: #primary:
# podIndex: 0 # podIndex: 0
# automaticFailover: true # automaticFailover: true
{{- end }}
metrics: metrics:
enabled: true
exporter: exporter:
image: prom/mysqld-exporter:v0.14.0 image: prom/mysqld-exporter:v0.15.1
resources: resources:
requests: requests:
cpu: 50m cpu: 50m
@@ -53,14 +58,10 @@ spec:
name: {{ .Release.Name }}-my-cnf name: {{ .Release.Name }}-my-cnf
key: config key: config
volumeClaimTemplate: storage:
resources: size: {{ .Values.size }}
requests: resizeInUseVolumes: true
storage: {{ .Values.size }} waitForVolumeResize: true
accessModes:
- ReadWriteOnce
{{- if .Values.external }} {{- if .Values.external }}
primaryService: primaryService:

View File

@@ -2,7 +2,7 @@
{{ if not (eq $name "root") }} {{ if not (eq $name "root") }}
{{ $dnsName := replace "_" "-" $name }} {{ $dnsName := replace "_" "-" $name }}
--- ---
apiVersion: mariadb.mmontes.io/v1alpha1 apiVersion: k8s.mariadb.com/v1alpha1
kind: User kind: User
metadata: metadata:
name: {{ $.Release.Name }}-{{ $dnsName }} name: {{ $.Release.Name }}-{{ $dnsName }}
@@ -15,7 +15,7 @@ spec:
key: {{ $name }}-password key: {{ $name }}-password
maxUserConnections: {{ $u.maxUserConnections }} maxUserConnections: {{ $u.maxUserConnections }}
--- ---
apiVersion: mariadb.mmontes.io/v1alpha1 apiVersion: k8s.mariadb.com/v1alpha1
kind: Grant kind: Grant
metadata: metadata:
name: {{ $.Release.Name }}-{{ $dnsName }} name: {{ $.Release.Name }}-{{ $dnsName }}

View File

@@ -0,0 +1,72 @@
{
"title": "Chart Values",
"type": "object",
"properties": {
"external": {
"type": "boolean",
"description": "Enable external access from outside the cluster",
"default": false
},
"size": {
"type": "string",
"description": "Persistent Volume size",
"default": "10Gi"
},
"replicas": {
"type": "number",
"description": "Number of MariaDB replicas",
"default": 2
},
"databases": {
"type": "array",
"description": "Databases configuration",
"default": [],
"items": {}
},
"backup": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"description": "Enable pereiodic backups",
"default": false
},
"s3Region": {
"type": "string",
"description": "The AWS S3 region where backups are stored",
"default": "us-east-1"
},
"s3Bucket": {
"type": "string",
"description": "The S3 bucket used for storing backups",
"default": "s3.example.org/postgres-backups"
},
"schedule": {
"type": "string",
"description": "Cron schedule for automated backups",
"default": "0 2 * * *"
},
"cleanupStrategy": {
"type": "string",
"description": "The strategy for cleaning up old backups",
"default": "--keep-last=3 --keep-daily=3 --keep-within-weekly=1m"
},
"s3AccessKey": {
"type": "string",
"description": "The access key for S3, used for authentication",
"default": "oobaiRus9pah8PhohL1ThaeTa4UVa7gu"
},
"s3SecretKey": {
"type": "string",
"description": "The secret key for S3, used for authentication",
"default": "ju3eum4dekeich9ahM1te8waeGai0oog"
},
"resticPassword": {
"type": "string",
"description": "The password for Restic backup encryption",
"default": "ChaXoveekoh6eigh4siesheeda2quai0"
}
}
}
}
}

View File

@@ -1,24 +1,50 @@
## @section Common parameters
## @param external Enable external access from outside the cluster
## @param size Persistent Volume size
## @param replicas Number of MariaDB replicas
##
external: false external: false
size: 10Gi size: 10Gi
replicas: 2
users: ## @section Configuration parameters
root:
password: strongpassword
user1:
privileges: ['ALL']
maxUserConnections: 1000
password: hackme
user2:
privileges: ['SELECT']
maxUserConnections: 1000
password: hackme
databases: ## @param users [object] Users configuration
- wordpress1 ## Example:
- wordpress2 ## users:
- wordpress3 ## root:
- wordpress4 ## password: strongpassword
## user1:
## privileges: ['ALL']
## maxUserConnections: 1000
## password: hackme
## user2:
## privileges: ['SELECT']
## maxUserConnections: 1000
## password: hackme
##
users: {}
## @param databases Databases configuration
## Example:
## databases:
## - wordpress1
## - wordpress2
## - wordpress3
## - wordpress4
databases: []
## @section Backup parameters
## @param backup.enabled Enable pereiodic backups
## @param backup.s3Region The AWS S3 region where backups are stored
## @param backup.s3Bucket The S3 bucket used for storing backups
## @param backup.schedule Cron schedule for automated backups
## @param backup.cleanupStrategy The strategy for cleaning up old backups
## @param backup.s3AccessKey The access key for S3, used for authentication
## @param backup.s3SecretKey The secret key for S3, used for authentication
## @param backup.resticPassword The password for Restic backup encryption
backup: backup:
enabled: false enabled: false
s3Region: us-east-1 s3Region: us-east-1

View File

@@ -16,10 +16,10 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes # This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version. # to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/) # Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0 version: 0.2.1
# This is the version number of the application being deployed. This version number should be # This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to # incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using. # follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes. # It is recommended to use it with quotes.
appVersion: "1.16.0" appVersion: "16.2"

View File

@@ -0,0 +1,2 @@
generate:
readme-generator -v values.yaml -s values.schema.json -r README.md

View File

@@ -30,3 +30,35 @@ restic -r s3:s3.example.org/postgres-backups/database_name restore latest --targ
more details: more details:
- https://itnext.io/restic-effective-backup-from-stdin-4bc1e8f083c1 - https://itnext.io/restic-effective-backup-from-stdin-4bc1e8f083c1
## Parameters
### Common parameters
| Name | Description | Value |
| ---------- | ----------------------------------------------- | ------- |
| `external` | Enable external access from outside the cluster | `false` |
| `size` | Persistent Volume size | `10Gi` |
| `replicas` | Number of MariaDB replicas | `2` |
### Configuration parameters
| Name | Description | Value |
| ----------- | ----------------------- | ----- |
| `users` | Users configuration | `{}` |
| `databases` | Databases configuration | `{}` |
### Backup parameters
| Name | Description | Value |
| ------------------------ | ---------------------------------------------- | ------------------------------------------------------ |
| `backup.enabled` | Enable pereiodic backups | `false` |
| `backup.s3Region` | The AWS S3 region where backups are stored | `us-east-1` |
| `backup.s3Bucket` | The S3 bucket used for storing backups | `s3.example.org/postgres-backups` |
| `backup.schedule` | Cron schedule for automated backups | `0 2 * * *` |
| `backup.cleanupStrategy` | The strategy for cleaning up old backups | `--keep-last=3 --keep-daily=3 --keep-within-weekly=1m` |
| `backup.s3AccessKey` | The access key for S3, used for authentication | `oobaiRus9pah8PhohL1ThaeTa4UVa7gu` |
| `backup.s3SecretKey` | The secret key for S3, used for authentication | `ju3eum4dekeich9ahM1te8waeGai0oog` |
| `backup.resticPassword` | The password for Restic backup encryption | `ChaXoveekoh6eigh4siesheeda2quai0` |

View File

@@ -4,7 +4,7 @@ kind: Cluster
metadata: metadata:
name: {{ .Release.Name }} name: {{ .Release.Name }}
spec: spec:
instances: 2 instances: {{ .Values.replicas }}
enableSuperuserAccess: true enableSuperuserAccess: true
postgresql: postgresql:

View File

@@ -100,13 +100,13 @@ stringData:
echo "== assign roles to users" echo "== assign roles to users"
psql -v ON_ERROR_STOP=1 --echo-all <<\EOT psql -v ON_ERROR_STOP=1 --echo-all <<\EOT
{{- range $database, $d := .Values.databases }} {{- range $database, $d := .Values.databases }}
{{- range $user, $u := $.Values.roles }} {{- range $user, $u := $.Values.users }}
{{- if has $user $d.users.admin }} {{- if has $user $d.roles.admin }}
GRANT {{ $database }}_admin TO {{ $user }}; GRANT {{ $database }}_admin TO {{ $user }};
{{- else }} {{- else }}
REVOKE {{ $database }}_admin FROM {{ $user }}; REVOKE {{ $database }}_admin FROM {{ $user }};
{{- end }} {{- end }}
{{- if has $user $d.users.readonly }} {{- if has $user $d.roles.readonly }}
GRANT {{ $database }}_readonly TO {{ $user }}; GRANT {{ $database }}_readonly TO {{ $user }};
{{- else }} {{- else }}
REVOKE {{ $database }}_readonly FROM {{ $user }}; REVOKE {{ $database }}_readonly FROM {{ $user }};

View File

@@ -0,0 +1,71 @@
{
"title": "Chart Values",
"type": "object",
"properties": {
"external": {
"type": "boolean",
"description": "Enable external access from outside the cluster",
"default": false
},
"size": {
"type": "string",
"description": "Persistent Volume size",
"default": "10Gi"
},
"replicas": {
"type": "number",
"description": "Number of MariaDB replicas",
"default": 2
},
"databases": {
"type": "object",
"description": "Databases configuration",
"default": {}
},
"backup": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"description": "Enable pereiodic backups",
"default": false
},
"s3Region": {
"type": "string",
"description": "The AWS S3 region where backups are stored",
"default": "us-east-1"
},
"s3Bucket": {
"type": "string",
"description": "The S3 bucket used for storing backups",
"default": "s3.example.org/postgres-backups"
},
"schedule": {
"type": "string",
"description": "Cron schedule for automated backups",
"default": "0 2 * * *"
},
"cleanupStrategy": {
"type": "string",
"description": "The strategy for cleaning up old backups",
"default": "--keep-last=3 --keep-daily=3 --keep-within-weekly=1m"
},
"s3AccessKey": {
"type": "string",
"description": "The access key for S3, used for authentication",
"default": "oobaiRus9pah8PhohL1ThaeTa4UVa7gu"
},
"s3SecretKey": {
"type": "string",
"description": "The secret key for S3, used for authentication",
"default": "ju3eum4dekeich9ahM1te8waeGai0oog"
},
"resticPassword": {
"type": "string",
"description": "The password for Restic backup encryption",
"default": "ChaXoveekoh6eigh4siesheeda2quai0"
}
}
}
}
}

View File

@@ -1,33 +1,57 @@
## @section Common parameters
## @param external Enable external access from outside the cluster
## @param size Persistent Volume size
## @param replicas Number of MariaDB replicas
##
external: false external: false
size: 10Gi size: 10Gi
replicas: 2
users: ## @section Configuration parameters
user1:
password: strongpassword
user2:
password: hackme
airflow:
password: qwerty123
debezium:
replication: true
databases: ## @param users [object] Users configuration
## Example:
## users:
## user1:
## password: strongpassword
## user2:
## password: hackme
## airflow:
## password: qwerty123
## debezium:
## replication: true
##
users: {}
myapp: ## @param databases Databases configuration
roles: ## Example:
admin: ## databases:
- user1 ## myapp:
- debezium ## roles:
readonly: ## admin:
- user2 ## - user1
## - debezium
## readonly:
## - user2
## airflow:
## roles:
## admin:
## - airflow
## extensions:
## - hstore
databases: {}
airflow: ## @section Backup parameters
roles:
admin:
- airflow
extensions:
- hstore
## @param backup.enabled Enable pereiodic backups
## @param backup.s3Region The AWS S3 region where backups are stored
## @param backup.s3Bucket The S3 bucket used for storing backups
## @param backup.schedule Cron schedule for automated backups
## @param backup.cleanupStrategy The strategy for cleaning up old backups
## @param backup.s3AccessKey The access key for S3, used for authentication
## @param backup.s3SecretKey The secret key for S3, used for authentication
## @param backup.resticPassword The password for Restic backup encryption
backup: backup:
enabled: false enabled: false
s3Region: us-east-1 s3Region: us-east-1

View File

@@ -16,10 +16,10 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes # This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version. # to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/) # Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0 version: 0.2.0
# This is the version number of the application being deployed. This version number should be # This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to # incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using. # follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes. # It is recommended to use it with quotes.
appVersion: "1.16.0" appVersion: "3.12.2"

View File

@@ -0,0 +1,2 @@
generate:
readme-generator -v values.yaml -s values.schema.json -r README.md

View File

@@ -8,3 +8,12 @@ The service utilizes official RabbitMQ operator. This ensures the reliability an
- Github: https://github.com/rabbitmq/cluster-operator/ - Github: https://github.com/rabbitmq/cluster-operator/
- Docs: https://www.rabbitmq.com/kubernetes/operator/operator-overview.html - Docs: https://www.rabbitmq.com/kubernetes/operator/operator-overview.html
## Parameters
### Common parameters
| Name | Description | Value |
| ---------- | ----------------------------------------------- | ------- |
| `external` | Enable external access from outside the cluster | `false` |
| `replicas` | Number of RabbitMQ replicas | `3` |

View File

@@ -6,7 +6,7 @@ metadata:
app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/managed-by: {{ .Release.Service }}
spec: spec:
replicas: 3 replicas: {{ .Values.replicas }}
{{- if .Values.external }} {{- if .Values.external }}
service: service:
type: LoadBalancer type: LoadBalancer

View File

@@ -1,10 +1,16 @@
{ {
"$schema": "http://json-schema.org/schema#", "title": "Chart Values",
"type": "object", "type": "object",
"properties": { "properties": {
"external": { "external": {
"type": "boolean", "type": "boolean",
"title": "Enable external Access" "description": "Enable external access from outside the cluster",
"default": false
},
"replicas": {
"type": "number",
"description": "Number of RabbitMQ replicas",
"default": 3
} }
} }
} }

View File

@@ -1 +1,7 @@
## @section Common parameters
## @param external Enable external access from outside the cluster
## @param replicas Number of RabbitMQ replicas
##
external: false external: false
replicas: 3

View File

@@ -16,10 +16,10 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes # This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version. # to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/) # Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.1 version: 0.2.0
# This is the version number of the application being deployed. This version number should be # This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to # incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using. # follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes. # It is recommended to use it with quotes.
appVersion: "1.16.0" appVersion: "6.2.6"

View File

@@ -0,0 +1,2 @@
generate:
readme-generator -v values.yaml -s values.schema.json -r README.md

View File

@@ -8,3 +8,15 @@ Service utilizes the Spotahome Redis Operator for efficient management and orche
- Docs: https://redis.io/docs/ - Docs: https://redis.io/docs/
- GitHub: https://github.com/spotahome/redis-operator - GitHub: https://github.com/spotahome/redis-operator
## Parameters
### Common parameters
| Name | Description | Value |
| ---------- | ----------------------------------------------- | ------- |
| `external` | Enable external access from outside the cluster | `false` |
| `size` | Persistent Volume size | `1Gi` |
| `replicas` | Number of Redis replicas | `2` |

View File

@@ -14,7 +14,7 @@ spec:
limits: limits:
memory: 100Mi memory: 100Mi
redis: redis:
replicas: 3 replicas: {{ .Values.replicas }}
resources: resources:
requests: requests:
cpu: 150m cpu: 150m

View File

@@ -1,14 +1,21 @@
{ {
"$schema": "http://json-schema.org/schema#", "title": "Chart Values",
"type": "object", "type": "object",
"properties": { "properties": {
"external": { "external": {
"type": "boolean", "type": "boolean",
"title": "Enable external Access" "description": "Enable external access from outside the cluster",
"default": false
}, },
"size": { "size": {
"type": "string", "type": "string",
"title": "Disk Size" "description": "Persistent Volume size",
"default": "1Gi"
},
"replicas": {
"type": "number",
"description": "Number of Redis replicas",
"default": 2
} }
} }
} }

View File

@@ -1,2 +1,9 @@
## @section Common parameters
## @param external Enable external access from outside the cluster
## @param size Persistent Volume size
## @param replicas Number of Redis replicas
##
external: false external: false
size: 5Gi size: 1Gi
replicas: 2

View File

@@ -16,10 +16,10 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes # This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version. # to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/) # Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0 version: 0.2.0
# This is the version number of the application being deployed. This version number should be # This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to # incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using. # follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes. # It is recommended to use it with quotes.
appVersion: "1.16.0" appVersion: "2.9.7"

View File

@@ -0,0 +1,4 @@
generate:
readme-generator -v values.yaml -s values.schema.json.tmp -r README.md
cat values.schema.json.tmp | jq '.properties.httpAndHttps.properties.mode.enum = ["tcp","tcp-with-proxy"]' > values.schema.json
rm -f values.schema.json.tmp

View File

@@ -7,3 +7,23 @@ The Managed TCP Load Balancer Service simplifies the deployment and management o
Managed TCP Load Balancer Service efficiently utilizes HAProxy for load balancing purposes. HAProxy is a well-established and reliable solution for distributing incoming TCP traffic across multiple backend servers, ensuring high availability and efficient resource utilization. This deployment choice guarantees the seamless and dependable operation of your load balancing infrastructure. Managed TCP Load Balancer Service efficiently utilizes HAProxy for load balancing purposes. HAProxy is a well-established and reliable solution for distributing incoming TCP traffic across multiple backend servers, ensuring high availability and efficient resource utilization. This deployment choice guarantees the seamless and dependable operation of your load balancing infrastructure.
- Docs: https://www.haproxy.com/documentation/ - Docs: https://www.haproxy.com/documentation/
## Parameters
### Common parameters
| Name | Description | Value |
| ---------- | ----------------------------------------------- | ------- |
| `external` | Enable external access from outside the cluster | `false` |
| `replicas` | Number of HAProxy replicas | `2` |
### Configuration parameters
| Name | Description | Value |
| -------------------------------- | ------------------------------------------------------------- | ------- |
| `httpAndHttps.mode` | Mode for balancer. Allowed values: `tcp` and `tcp-with-proxy` | `tcp` |
| `httpAndHttps.targetPorts.http` | HTTP port number. | `80` |
| `httpAndHttps.targetPorts.https` | HTTPS port number. | `443` |
| `httpAndHttps.endpoints` | Endpoint addresses list | `[]` |
| `whitelistHTTP` | Secure HTTP by enabling client networks whitelisting | `false` |
| `whitelist` | List of client networks | `[]` |

View File

@@ -7,7 +7,7 @@ metadata:
app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/managed-by: {{ .Release.Service }}
spec: spec:
replicas: 2 replicas: {{ .Values.replicas }}
selector: selector:
matchLabels: matchLabels:
app: {{ .Release.Name }}-haproxy app: {{ .Release.Name }}-haproxy

View File

@@ -0,0 +1,62 @@
{
"title": "Chart Values",
"type": "object",
"properties": {
"external": {
"type": "boolean",
"description": "Enable external access from outside the cluster",
"default": false
},
"replicas": {
"type": "number",
"description": "Number of HAProxy replicas",
"default": 2
},
"httpAndHttps": {
"type": "object",
"properties": {
"mode": {
"type": "string",
"description": "Mode for balancer. Allowed values: `tcp` and `tcp-with-proxy`",
"default": "tcp",
"enum": [
"tcp",
"tcp-with-proxy"
]
},
"targetPorts": {
"type": "object",
"properties": {
"http": {
"type": "number",
"description": "HTTP port number.",
"default": 80
},
"https": {
"type": "number",
"description": "HTTPS port number.",
"default": 443
}
}
},
"endpoints": {
"type": "array",
"description": "Endpoint addresses list",
"default": [],
"items": {}
}
}
},
"whitelistHTTP": {
"type": "boolean",
"description": "Secure HTTP by enabling client networks whitelisting",
"default": false
},
"whitelist": {
"type": "array",
"description": "List of client networks",
"default": [],
"items": {}
}
}
}

View File

@@ -1,18 +1,45 @@
## @section Common parameters
## @param external Enable external access from outside the cluster
## @param replicas Number of HAProxy replicas
##
external: false external: false
replicas: 2
## @section Configuration parameters
## @param httpAndHttps.mode Mode for balancer. Allowed values: `tcp` and `tcp-with-proxy`
## @param httpAndHttps.targetPorts.http HTTP port number.
## @param httpAndHttps.targetPorts.https HTTPS port number.
## @param httpAndHttps.endpoints Endpoint addresses list
## Example:
## httpAndHttps:
## mode: tcp
## targetPorts:
## http: 80
## https: 443
## endpoints:
## - 10.100.3.1
## - 10.100.3.11
## - 10.100.3.2
## - 10.100.3.12
## - 10.100.3.3
## - 10.100.3.13
httpAndHttps: httpAndHttps:
mode: tcp mode: tcp
targetPorts: targetPorts:
http: 80 http: 80
https: 443 https: 443
endpoints: endpoints: []
- 10.100.3.1
- 10.100.3.11
- 10.100.3.2
- 10.100.3.12
- 10.100.3.3
- 10.100.3.13
## @param whitelistHTTP Secure HTTP by enabling client networks whitelisting
## @param whitelist List of client networks
## Example:
## whitelistHTTP: true
## whitelist:
## - "1.2.3.4"
## - "10.100.0.0/16"
##
whitelistHTTP: false whitelistHTTP: false
whitelist: whitelist: []
- "1.2.3.4"
- "10.100.0.0/16"

View File

@@ -1,7 +1,7 @@
apiVersion: v2 apiVersion: v2
name: tenant name: tenant
description: Additional tenant namespace description: Separated tenant namespace
icon: https://upload.wikimedia.org/wikipedia/commons/0/04/User_icon_1.svg icon: https://upload.wikimedia.org/wikipedia/commons/0/04/User_icon_1.svg
type: application type: application
version: 1.0.0 version: 1.1.0

View File

@@ -0,0 +1,2 @@
generate:
readme-generator -v values.yaml -s values.schema.json -r README.md

View File

@@ -45,3 +45,14 @@ tenant-u1
├── kubernetes-cluster1 ├── kubernetes-cluster1
└── postgres-db1 └── postgres-db1
``` ```
## Parameters
### Common parameters
| Name | Description | Value |
| ------------ | --------------------------------------------------------------------------------------------------------------------------- | ------- |
| `host` | The hostname used to access tenant services (defaults to using the tenant name as a subdomain for it's parent tenant host). | `""` |
| `etcd` | Deploy own Etcd cluster | `false` |
| `monitoring` | Deploy own Monitoring Stack | `false` |
| `ingress` | Deploy own Ingress Controller | `false` |

View File

@@ -1,27 +1,26 @@
{ {
"$schema": "http://json-schema.org/schema#", "title": "Chart Values",
"type": "object", "type": "object",
"properties": { "properties": {
"host": { "host": {
"type": "string", "type": "string",
"form": true, "description": "The hostname used to access tenant services (defaults to using the tenant name as a subdomain for it's parent tenant host).",
"title": "Domain name for this tenant", "default": ""
"description": "This host will be used for all apps deployed in this tenant"
}, },
"etcd": { "etcd": {
"type": "boolean", "type": "boolean",
"title": "Deploy own Etcd cluster", "description": "Deploy own Etcd cluster",
"form": true "default": false
}, },
"monitoring": { "monitoring": {
"type": "boolean", "type": "boolean",
"title": "Deploy own Monitoring Stack", "description": "Deploy own Monitoring Stack",
"form": true "default": false
}, },
"ingress": { "ingress": {
"type": "boolean", "type": "boolean",
"title": "Deploy own Ingress Controller", "description": "Deploy own Ingress Controller",
"form": true "default": false
} }
} }
} }

View File

@@ -1,3 +1,9 @@
## @section Common parameters
## @param host The hostname used to access tenant services (defaults to using the tenant name as a subdomain for it's parent tenant host).
## @param etcd Deploy own Etcd cluster
## @param monitoring Deploy own Monitoring Stack
## @param ingress Deploy own Ingress Controller
host: "" host: ""
etcd: false etcd: false
monitoring: false monitoring: false

View File

@@ -1,14 +1,33 @@
http-cache 0.1.0 HEAD clickhouse 0.1.0 ca79f72
kubernetes 0.1.0 HEAD clickhouse 0.2.0 7cd7de73
mysql 0.1.0 HEAD clickhouse 0.2.1 HEAD
postgres 0.1.0 HEAD http-cache 0.1.0 a956713
rabbitmq 0.1.0 HEAD http-cache 0.2.0 HEAD
redis 0.1.1 HEAD kafka 0.1.0 760f86d2
tcp-balancer 0.1.0 HEAD kafka 0.2.0 HEAD
kubernetes 0.1.0 f642698
kubernetes 0.2.0 7cd7de73
kubernetes 0.3.0 7caccec1
kubernetes 0.4.0 HEAD
mysql 0.1.0 f642698
mysql 0.2.0 8b975ff0
mysql 0.3.0 HEAD
postgres 0.1.0 f642698
postgres 0.2.0 7cd7de73
postgres 0.2.1 HEAD
rabbitmq 0.1.0 f642698
rabbitmq 0.2.0 HEAD
redis 0.1.1 f642698
redis 0.2.0 HEAD
tcp-balancer 0.1.0 f642698
tcp-balancer 0.2.0 HEAD
tenant 0.1.3 3d1b86c tenant 0.1.3 3d1b86c
tenant 0.1.4 d200480 tenant 0.1.4 d200480
tenant 0.1.5 e3ab858 tenant 0.1.5 e3ab858
tenant 1.0.0 HEAD tenant 1.0.0 7cd7de7
tenant 1.1.0 HEAD
virtual-machine 0.1.4 f2015d6 virtual-machine 0.1.4 f2015d6
virtual-machine 0.1.5 HEAD virtual-machine 0.1.5 7cd7de7
vpn 0.1.0 HEAD virtual-machine 0.2.0 HEAD
vpn 0.1.0 f642698
vpn 0.2.0 HEAD

View File

@@ -17,7 +17,7 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes # This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version. # to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/) # Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.5 version: 0.2.0
# This is the version number of the application being deployed. This version number should be # This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to # incremented each time you make changes to the application. Versions are not expected to

View File

@@ -0,0 +1,7 @@
generate:
readme-generator -v values.yaml -s values.schema.json.tmp -r README.md
cat values.schema.json.tmp | \
jq '.properties.image.enum = ["ubuntu", "cirros", "alpine", "fedora"]' | \
jq '.properties.resources.properties.memory["x-display"] = "slider"' \
> values.schema.json
rm -f values.schema.json.tmp

View File

@@ -8,3 +8,17 @@ The virtual machine is managed and hosted through KubeVirt, allowing you to harn
- Docs: https://kubevirt.io/user-guide/ - Docs: https://kubevirt.io/user-guide/
- GitHub: https://github.com/kubevirt/kubevirt - GitHub: https://github.com/kubevirt/kubevirt
## Parameters
### Common parameters
| Name | Description | Value |
| ------------------ | ------------------------------------------------------------------------------------------------- | -------- |
| `external` | Enable external access from outside the cluster | `false` |
| `running` | Determines if the virtual machine should be running | `true` |
| `password` | The default password for the virtual machine | `hackme` |
| `image` | The base image for the virtual machine. Allowed values: `ubuntu`, `cirros`, `alpine` and `fedora` | `ubuntu` |
| `disk` | The size of the disk allocated for the virtual machine | `5Gi` |
| `resources.cpu` | The number of CPU cores allocated to the virtual machine | `1` |
| `resources.memory` | The amount of memory allocated to the virtual machine | `1024M` |

View File

@@ -1,44 +1,51 @@
{ {
"$schema": "http://json-schema.org/schema#", "title": "Chart Values",
"type": "object", "type": "object",
"properties": { "properties": {
"running": {
"type": "boolean",
"title": "Running"
},
"external": { "external": {
"type": "boolean", "type": "boolean",
"title": "Enable external Access" "description": "Enable external access from outside the cluster",
"default": false
}, },
"image": { "running": {
"type": "string", "type": "boolean",
"form": true, "description": "Determines if the virtual machine should be running",
"enum": ["ubuntu", "cirros", "alpine", "fedora"], "default": true
"title": "Choose image"
}, },
"password": { "password": {
"type": "string", "type": "string",
"title": "Password" "description": "The default password for the virtual machine",
"default": "hackme"
},
"image": {
"type": "string",
"description": "The base image for the virtual machine. Allowed values: `ubuntu`, `cirros`, `alpine` and `fedora`",
"default": "ubuntu",
"enum": [
"ubuntu",
"cirros",
"alpine",
"fedora"
]
}, },
"disk": { "disk": {
"type": "string", "type": "string",
"title": "Disk Size" "description": "The size of the disk allocated for the virtual machine",
"default": "5Gi"
}, },
"resources": { "resources": {
"type": "object", "type": "object",
"properties": { "properties": {
"cpu": {
"type": "number",
"description": "The number of CPU cores allocated to the virtual machine",
"default": 1
},
"memory": { "memory": {
"type": "string", "type": "string",
"x-display": "slider", "description": "The amount of memory allocated to the virtual machine",
"title": "Memory", "default": "1024M",
"minimum": 10, "x-display": "slider"
"maximum": 2048
},
"cpu": {
"type": "integer",
"title": "CPU",
"minimum": 1,
"maximum": 4
} }
} }
} }

View File

@@ -1,3 +1,13 @@
## @section Common parameters
## @param external Enable external access from outside the cluster
## @param running Determines if the virtual machine should be running
## @param password The default password for the virtual machine
## @param image The base image for the virtual machine. Allowed values: `ubuntu`, `cirros`, `alpine` and `fedora`
## @param disk The size of the disk allocated for the virtual machine
## @param resources.cpu The number of CPU cores allocated to the virtual machine
## @param resources.memory The amount of memory allocated to the virtual machine
external: false external: false
running: true running: true
password: hackme password: hackme

View File

@@ -1,6 +1,6 @@
apiVersion: v2 apiVersion: v2
name: vpn name: vpn
description: Establish a connection from your computer description: Managed VPN service
icon: https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Outline_VPN_icon.png/600px-Outline_VPN_icon.png icon: https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Outline_VPN_icon.png/600px-Outline_VPN_icon.png
# A chart can be either an 'application' or a 'library' chart. # A chart can be either an 'application' or a 'library' chart.
@@ -16,10 +16,10 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes # This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version. # to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/) # Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0 version: 0.2.0
# This is the version number of the application being deployed. This version number should be # This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to # incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using. # follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes. # It is recommended to use it with quotes.
appVersion: "1.16.0" appVersion: "1.8.1"

View File

@@ -0,0 +1,2 @@
generate:
readme-generator -v values.yaml -s values.schema.json -r README.md

View File

@@ -10,3 +10,18 @@ The VPN Service is powered by the Outline Server, an advanced and user-friendly
- Docs: https://shadowsocks.org/ - Docs: https://shadowsocks.org/
- Docs: https://github.com/Jigsaw-Code/outline-server/tree/master/src/shadowbox - Docs: https://github.com/Jigsaw-Code/outline-server/tree/master/src/shadowbox
## Parameters
### Common parameters
| Name | Description | Value |
| ---------- | ----------------------------------------------- | ------- |
| `external` | Enable external access from outside the cluster | `false` |
| `replicas` | Number of VPN-server replicas | `2` |
### Configuration parameters
| Name | Description | Value |
| ------- | ------------------- | ----- |
| `users` | Users configuration | `{}` |

View File

@@ -4,7 +4,7 @@ kind: Deployment
metadata: metadata:
name: {{ .Release.Name }}-vpn name: {{ .Release.Name }}-vpn
spec: spec:
replicas: 2 replicas: {{ .Values.replicas }}
selector: selector:
matchLabels: matchLabels:
app: {{ .Release.Name }}-vpn app: {{ .Release.Name }}-vpn

View File

@@ -0,0 +1,16 @@
{
"title": "Chart Values",
"type": "object",
"properties": {
"external": {
"type": "boolean",
"description": "Enable external access from outside the cluster",
"default": false
},
"replicas": {
"type": "number",
"description": "Number of VPN-server replicas",
"default": 2
}
}
}

View File

@@ -1,7 +1,18 @@
external: false ## @section Common parameters
users: ## @param external Enable external access from outside the cluster
user1: ## @param replicas Number of VPN-server replicas
password: hackme ##
user2: external: false
password: tttt replicas: 2
## @section Configuration parameters
## @param users [object] Users configuration
## Example:
## users:
## user1:
## password: hackme
## user2:
## password: tttt
users: {}

View File

@@ -1,4 +0,0 @@
gen: fix-chartnames
fix-chartnames:
find . -name Chart.yaml -maxdepth 2 | awk -F/ '{print $$2}' | while read i; do printf "name: cozy-%s\nversion: 1.0.0\n" "$$i" > "$$i/Chart.yaml"; done

View File

@@ -0,0 +1,3 @@
apiVersion: v2
name: cozy-fluxcd
version: 0.0.0 # Placeholder, the actual version will be automatically set during the build process

View File

@@ -0,0 +1,20 @@
NAME=fluxcd
NAMESPACE=cozy-$(NAME)
API_VERSIONS_FLAGS=$(addprefix -a ,$(shell kubectl api-versions))
show:
helm template -n $(NAMESPACE) $(NAME) . --no-hooks --dry-run=server $(API_VERSIONS_FLAGS)
apply:
helm template -n $(NAMESPACE) $(NAME) . --no-hooks --dry-run=server $(API_VERSIONS_FLAGS) | kubectl apply -n $(NAMESPACE) -f-
diff:
helm template -n $(NAMESPACE) $(NAME) . --no-hooks --dry-run=server $(API_VERSIONS_FLAGS) | kubectl diff -n $(NAMESPACE) -f-
update:
rm -rf charts
helm repo add fluxcd-community https://fluxcd-community.github.io/helm-charts
helm repo update fluxcd-community
helm pull fluxcd-community/flux2 --untar --untardir charts
sed -i 's/\.{{ \.Values\.clusterDomain | default "cluster\.local" }}\.//g' `grep -rl '.{{ .Values.clusterDomain | default "cluster.local" }}.' charts`

View File

@@ -1,11 +1,11 @@
annotations: annotations:
artifacthub.io/changes: | artifacthub.io/changes: |
- "feat: adding CRD and RBAC annotation option" - "[Chore]: Update App Version to upstream 2.2.3"
apiVersion: v2 apiVersion: v2
appVersion: 2.1.2 appVersion: 2.2.3
description: A Helm chart for flux2 description: A Helm chart for flux2
name: flux2 name: flux2
sources: sources:
- https://github.com/fluxcd-community/helm-charts - https://github.com/fluxcd-community/helm-charts
type: application type: application
version: 2.11.1 version: 2.12.4

View File

@@ -1,6 +1,6 @@
# flux2 # flux2
![Version: 2.11.0](https://img.shields.io/badge/Version-2.11.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.1.2](https://img.shields.io/badge/AppVersion-2.1.2-informational?style=flat-square) ![Version: 2.12.4](https://img.shields.io/badge/Version-2.12.4-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.2.3](https://img.shields.io/badge/AppVersion-2.2.3-informational?style=flat-square)
A Helm chart for flux2 A Helm chart for flux2
@@ -19,7 +19,7 @@ This helm chart is maintained and released by the fluxcd-community on a best eff
| cli.image | string | `"ghcr.io/fluxcd/flux-cli"` | | | cli.image | string | `"ghcr.io/fluxcd/flux-cli"` | |
| cli.nodeSelector | object | `{}` | | | cli.nodeSelector | object | `{}` | |
| cli.serviceAccount.automount | bool | `true` | | | cli.serviceAccount.automount | bool | `true` | |
| cli.tag | string | `"v2.1.2"` | | | cli.tag | string | `"v2.2.3"` | |
| cli.tolerations | list | `[]` | | | cli.tolerations | list | `[]` | |
| clusterDomain | string | `"cluster.local"` | | | clusterDomain | string | `"cluster.local"` | |
| crds.annotations | object | `{}` | Add annotations to all CRD resources, e.g. "helm.sh/resource-policy": keep | | crds.annotations | object | `{}` | Add annotations to all CRD resources, e.g. "helm.sh/resource-policy": keep |
@@ -41,7 +41,7 @@ This helm chart is maintained and released by the fluxcd-community on a best eff
| helmController.serviceAccount.annotations | object | `{}` | | | helmController.serviceAccount.annotations | object | `{}` | |
| helmController.serviceAccount.automount | bool | `true` | | | helmController.serviceAccount.automount | bool | `true` | |
| helmController.serviceAccount.create | bool | `true` | | | helmController.serviceAccount.create | bool | `true` | |
| helmController.tag | string | `"v0.36.2"` | | | helmController.tag | string | `"v0.37.4"` | |
| helmController.tolerations | list | `[]` | | | helmController.tolerations | list | `[]` | |
| imageAutomationController.affinity | object | `{}` | | | imageAutomationController.affinity | object | `{}` | |
| imageAutomationController.annotations."prometheus.io/port" | string | `"8080"` | | | imageAutomationController.annotations."prometheus.io/port" | string | `"8080"` | |
@@ -60,7 +60,7 @@ This helm chart is maintained and released by the fluxcd-community on a best eff
| imageAutomationController.serviceAccount.annotations | object | `{}` | | | imageAutomationController.serviceAccount.annotations | object | `{}` | |
| imageAutomationController.serviceAccount.automount | bool | `true` | | | imageAutomationController.serviceAccount.automount | bool | `true` | |
| imageAutomationController.serviceAccount.create | bool | `true` | | | imageAutomationController.serviceAccount.create | bool | `true` | |
| imageAutomationController.tag | string | `"v0.36.1"` | | | imageAutomationController.tag | string | `"v0.37.1"` | |
| imageAutomationController.tolerations | list | `[]` | | | imageAutomationController.tolerations | list | `[]` | |
| imagePullSecrets | list | `[]` | contents of pod imagePullSecret in form 'name=[secretName]'; applied to all controllers | | imagePullSecrets | list | `[]` | contents of pod imagePullSecret in form 'name=[secretName]'; applied to all controllers |
| imageReflectionController.affinity | object | `{}` | | | imageReflectionController.affinity | object | `{}` | |
@@ -80,7 +80,7 @@ This helm chart is maintained and released by the fluxcd-community on a best eff
| imageReflectionController.serviceAccount.annotations | object | `{}` | | | imageReflectionController.serviceAccount.annotations | object | `{}` | |
| imageReflectionController.serviceAccount.automount | bool | `true` | | | imageReflectionController.serviceAccount.automount | bool | `true` | |
| imageReflectionController.serviceAccount.create | bool | `true` | | | imageReflectionController.serviceAccount.create | bool | `true` | |
| imageReflectionController.tag | string | `"v0.30.0"` | | | imageReflectionController.tag | string | `"v0.31.2"` | |
| imageReflectionController.tolerations | list | `[]` | | | imageReflectionController.tolerations | list | `[]` | |
| installCRDs | bool | `true` | | | installCRDs | bool | `true` | |
| kustomizeController.affinity | object | `{}` | | | kustomizeController.affinity | object | `{}` | |
@@ -105,7 +105,7 @@ This helm chart is maintained and released by the fluxcd-community on a best eff
| kustomizeController.serviceAccount.annotations | object | `{}` | | | kustomizeController.serviceAccount.annotations | object | `{}` | |
| kustomizeController.serviceAccount.automount | bool | `true` | | | kustomizeController.serviceAccount.automount | bool | `true` | |
| kustomizeController.serviceAccount.create | bool | `true` | | | kustomizeController.serviceAccount.create | bool | `true` | |
| kustomizeController.tag | string | `"v1.1.1"` | | | kustomizeController.tag | string | `"v1.2.2"` | |
| kustomizeController.tolerations | list | `[]` | | | kustomizeController.tolerations | list | `[]` | |
| logLevel | string | `"info"` | | | logLevel | string | `"info"` | |
| multitenancy.defaultServiceAccount | string | `"default"` | All Kustomizations and HelmReleases which dont have spec.serviceAccountName specified, will use the default account from the tenants namespace. Tenants have to specify a service account in their Flux resources to be able to deploy workloads in their namespaces as the default account has no permissions. | | multitenancy.defaultServiceAccount | string | `"default"` | All Kustomizations and HelmReleases which dont have spec.serviceAccountName specified, will use the default account from the tenants namespace. Tenants have to specify a service account in their Flux resources to be able to deploy workloads in their namespaces as the default account has no permissions. |
@@ -130,7 +130,7 @@ This helm chart is maintained and released by the fluxcd-community on a best eff
| notificationController.serviceAccount.annotations | object | `{}` | | | notificationController.serviceAccount.annotations | object | `{}` | |
| notificationController.serviceAccount.automount | bool | `true` | | | notificationController.serviceAccount.automount | bool | `true` | |
| notificationController.serviceAccount.create | bool | `true` | | | notificationController.serviceAccount.create | bool | `true` | |
| notificationController.tag | string | `"v1.1.0"` | | | notificationController.tag | string | `"v1.2.4"` | |
| notificationController.tolerations | list | `[]` | | | notificationController.tolerations | list | `[]` | |
| notificationController.webhookReceiver.ingress.annotations | object | `{}` | | | notificationController.webhookReceiver.ingress.annotations | object | `{}` | |
| notificationController.webhookReceiver.ingress.create | bool | `false` | | | notificationController.webhookReceiver.ingress.create | bool | `false` | |
@@ -169,6 +169,6 @@ This helm chart is maintained and released by the fluxcd-community on a best eff
| sourceController.serviceAccount.annotations | object | `{}` | | | sourceController.serviceAccount.annotations | object | `{}` | |
| sourceController.serviceAccount.automount | bool | `true` | | | sourceController.serviceAccount.automount | bool | `true` | |
| sourceController.serviceAccount.create | bool | `true` | | | sourceController.serviceAccount.create | bool | `true` | |
| sourceController.tag | string | `"v1.1.2"` | | | sourceController.tag | string | `"v1.2.4"` | |
| sourceController.tolerations | list | `[]` | | | sourceController.tolerations | list | `[]` | |
| watchAllNamespaces | bool | `true` | | | watchAllNamespaces | bool | `true` | |

Some files were not shown because too many files have changed in this diff Show More