-
Notifications
You must be signed in to change notification settings - Fork 60
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Release Notes - **New Features** - Introduced a new script for managing Helm releases in Kubernetes, including installation and status monitoring. - Added a configuration file for tenant settings, enabling monitoring and SeaweedFS. - Enhanced PostgreSQL initialization script to manage database roles and privileges dynamically. - Added a new local pre-commit hook for version map checks. - **Bug Fixes** - Updated pre-commit hooks for consistent formatting. - **Tests** - Improved testing capabilities for applications in a Kubernetes environment with new Makefile targets. - Enhanced Docker image with tools for YAML and JSON processing. - Updated testing image to the latest version for improved performance. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Andrei Kvapil <kvapss@gmail.com> Co-authored-by: Andrei Kvapil <kvapss@gmail.com>
- Loading branch information
Showing
9 changed files
with
170 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
#!/bin/bash | ||
|
||
RED='\033[0;31m' | ||
GREEN='\033[0;32m' | ||
RESET='\033[0m' | ||
YELLOW='\033[0;33m' | ||
|
||
|
||
ROOT_NS="tenant-root" | ||
TEST_TENANT="tenant-e2e" | ||
|
||
function clean() { | ||
kubectl delete helmrelease.helm.toolkit.fluxcd.io $TEST_TENANT -n $ROOT_NS | ||
if true; then | ||
echo -e "${GREEN}Cleanup successful!${RESET}" | ||
return 0 | ||
else | ||
echo -e "${RED}Cleanup failed!${RESET}" | ||
return 1 | ||
fi | ||
} | ||
|
||
function install_helmrelease() { | ||
local release_name="$1" | ||
local namespace="$2" | ||
local chart_path="$3" | ||
local repo_name="$4" | ||
local repo_ns="$5" | ||
local values_file="$6" | ||
|
||
if [[ -z "$release_name" ]]; then | ||
echo -e "${RED}Error: Release name is required.${RESET}" | ||
exit 1 | ||
fi | ||
|
||
if [[ -z "$namespace" ]]; then | ||
echo -e "${RED}Error: Namespace name is required.${RESET}" | ||
exit 1 | ||
fi | ||
|
||
if [[ -z "$chart_path" ]]; then | ||
echo -e "${RED}Error: Chart path name is required.${RESET}" | ||
exit 1 | ||
fi | ||
|
||
local helmrelease_file=$(mktemp /tmp/HelmRelease.XXXXXX.yaml) | ||
{ | ||
echo "apiVersion: helm.toolkit.fluxcd.io/v2" | ||
echo "kind: HelmRelease" | ||
echo "metadata:" | ||
echo " labels:" | ||
echo " cozystack.io/ui: \"true\"" | ||
echo " name: \"$release_name\"" | ||
echo " namespace: \"$namespace\"" | ||
echo "spec:" | ||
echo " chart:" | ||
echo " spec:" | ||
echo " chart: \"$chart_path\"" | ||
echo " reconcileStrategy: Revision" | ||
echo " sourceRef:" | ||
echo " kind: HelmRepository" | ||
echo " name: \"$repo_name\"" | ||
echo " namespace: \"$repo_ns\"" | ||
echo " version: '*'" | ||
echo " interval: 1m0s" | ||
echo " timeout: 5m0s" | ||
|
||
if [[ -n "$values_file" && -f "$values_file" ]]; then | ||
echo " values:" | ||
cat "$values_file" | sed 's/^/ /' | ||
fi | ||
} > "$helmrelease_file" | ||
|
||
kubectl apply -f "$helmrelease_file" | ||
|
||
rm -f "$helmrelease_file" | ||
} | ||
|
||
function install_tenant (){ | ||
local release_name="$1" | ||
local namespace="$2" | ||
local values_file="${3:-tenant.yaml}" | ||
local repo_name="cozystack-apps" | ||
local repo_ns="cozy-public" | ||
|
||
install_helmrelease "$release_name" "$namespace" "tenant" "$repo_name" "$repo_ns" "$values_file" | ||
} | ||
|
||
function check_helmrelease_status() { | ||
local release_name="$1" | ||
local namespace="$2" | ||
local timeout=300 # Timeout in seconds | ||
local interval=5 # Interval between checks in seconds | ||
local elapsed=0 | ||
|
||
while [[ $elapsed -lt $timeout ]]; do | ||
local status_output | ||
status_output=$(kubectl get helmrelease "$release_name" -n "$namespace" -o json | jq -r '.status.conditions[-1].reason') | ||
|
||
if [[ "$status_output" == "InstallSucceeded" ]]; then | ||
echo -e "${GREEN}Helm release '$release_name' is ready.${RESET}" | ||
return 0 | ||
elif [[ "$status_output" == "InstallFailed" ]]; then | ||
echo -e "${RED}Helm release '$release_name': InstallFailed${RESET}" | ||
exit 1 | ||
else | ||
echo -e "${YELLOW}Helm release '$release_name' is not ready. Current status: $status_output${RESET}" | ||
fi | ||
|
||
sleep "$interval" | ||
elapsed=$((elapsed + interval)) | ||
done | ||
|
||
echo -e "${RED}Timeout reached. Helm release '$release_name' is still not ready after $timeout seconds.${RESET}" | ||
exit 1 | ||
} | ||
|
||
chart_name="$1" | ||
|
||
if [ -z "$chart_name" ]; then | ||
echo -e "${RED}No chart name provided. Exiting...${RESET}" | ||
exit 1 | ||
fi | ||
|
||
echo "Running tests for chart: $chart_name" | ||
install_tenant $TEST_TENANT $ROOT_NS | ||
check_helmrelease_status $TEST_TENANT $ROOT_NS | ||
|
||
repo_name="cozystack-apps" | ||
repo_ns="cozy-public" | ||
|
||
release_name="$chart_name-e2e" | ||
install_helmrelease "$release_name" "$TEST_TENANT" "$chart_name" "$repo_name" "$repo_ns" | ||
|
||
check_helmrelease_status "$release_name" "$TEST_TENANT" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
host: "" | ||
etcd: false | ||
monitoring: false | ||
ingress: false | ||
seaweedfs: false | ||
isolated: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
e2e: | ||
image: ghcr.io/aenix-io/cozystack/e2e-sandbox:v0.17.1@sha256:c3390f0076f4a8445273d0cdeda7725ac6f5110ad35e1a286be4b158708c4402 | ||
image: ghcr.io/aenix-io/cozystack/e2e-sandbox:latest@sha256:1a26a511b9e269bcb607e2d80f878d7c2d993b7a2a7a3a2a1042470c8c56b061 |