Skip to content

General fixes and updates#2

Merged
ServerSideHannes merged 39 commits intomainfrom
docker-workflow-fixes
Jan 22, 2026
Merged

General fixes and updates#2
ServerSideHannes merged 39 commits intomainfrom
docker-workflow-fixes

Conversation

@ServerSideHannes
Copy link
Owner

No description provided.

- Add gateway-service.yaml: ExternalName service pointing to ingress controller
- Add ingress.yaml: Auto-generates host from gateway.serviceName + namespace
- Update tests to use http://s3-gateway.s3proxy endpoint
- Enable gateway + ingress in e2e tests for load balancing verification
- Default gateway/ingress to disabled for safer defaults

Internal access: gateway.enabled=true, ingress.enabled=true
  -> endpoint: http://s3-gateway.<namespace>

External access: gateway.enabled=false, ingress.enabled=true, hosts=[...]
  -> endpoint: http://your-domain.com
- Reduce Makefile from 17 targets to 7 essential ones
- Rename helm-* targets to cluster-* for clarity
- Add trap for EXIT/INT/TERM in test-helm-with-load.sh
- cluster-test now auto-cleans on exit or Ctrl+C
- Remove benchmarks folder (tests didn't prove claims)
- Rename e2e files from helm-* to cluster-* naming
- Add encryption verification to load test (validates AES-GCM format)
- Add cluster-test GitHub Action with Docker/Helm caching
- Simplify Makefile targets: test, e2e, cluster-test, cluster-up, cluster-load, clean
- Remove embedded MinIO from production Helm chart
- Deploy MinIO separately in cluster tests only
- Update README: remove performance claims, use Makefile targets
- Clean up values.yaml, configmap.yaml, secret.yaml
- Add ListBuckets, ListObjectsV1, object tagging, UploadPartCopy
- Move multipart metadata to .s3proxy-internal/ prefix (hidden from list)
- Add backwards compatibility for legacy .s3proxy-meta suffix
- Fix cluster test shell quoting (cut -c1-32 instead of cut -d' ')
- Add comprehensive tests for all new operations
- Add in-memory storage fallback for single-instance deployments
- Redis now only required for HA/multi-replica deployments
- Rewrite README with clearer Quick Start and How It Works sections
- Add comprehensive Kubernetes/Helm production deployment docs
- Document credential model and why proxy needs credentials
Use separate columns for gateway and ingress settings instead of
combining them in a "Setup" column for better clarity.
The gateway creates an internal Kubernetes DNS name (s3-gateway.<namespace>)
for convenience when you don't want to set up external DNS. Removed
incorrect claims about request-level load balancing.
Merge Configuration and Configuration Reference into one unified table
showing both environment variables and Helm values. Remove redundant
documentation and streamline the Production Deployment section.
- Add helm-install-test.yml: daily smoke test using published GHCR image
- Update docker-publish.yml: trigger on main (latest) and tags (versioned)
- Add Helm Install status badge to README
- Replace hardcoded username with ${{ github.repository_owner }}
- Add lowercase conversion for GHCR compatibility
- Remove helm --wait flag that caused silent hangs
- Add custom wait loop with 30s status updates
- Reduce redis-ha replicas (2) and haproxy replicas (1) for faster CI
- Show kubectl describe pods on timeout for debugging
- Increase wait timeout from 600s to 1200s (20 min)
- Reduce redis-ha.replicas from 2 to 1 for faster initialization
- GitHub Actions ubuntu-latest runners (2 vCPU) are slow for Kind + Redis-HA
- Set min-replicas-to-write=0 (no replicas to wait for with 1 node)
- Increase timeout to 1800s (30 min) for slow runners
- This should fix split-brain-fix init container hanging
- Deploy standalone redis:7-alpine instead of redis-ha chart
- redis-ha takes 18+ min to initialize on slow CI runners
- Simple Redis starts in seconds
- Reduce timeout from 30min to 5min
- Update status checks to 15s intervals
- Check CI env var to switch between modes
- CI: simple redis:7-alpine pod (fast startup)
- Local: full redis-ha with --wait (complete HA testing)
- GitHub Actions sets CI=true automatically
- Deploy simple Redis pod for CI
- Set replicaCount=3 for proper multi-pod testing
- Verify all 3 pods are running before smoke test
- Pass CI env var to docker-compose container
- Reduce CPU from 500m to 100m limit / 50m request for CI
- Fixes "Insufficient cpu" scheduling failures on 2-core runners
- Remove -t flag from kubectl run (no TTY in CI)
- Add exit code check to fail if load test pod errors
- Fixes false positive "Tests passed" when uploads actually failed
- 3x512MB concurrent uploads overwhelm 100m CPU pods
- 10MB files still test full upload/download/encryption flow
- Prevents 503 Service Unavailable errors on resource-constrained runners
CI (cluster-test.yml):
- Self-contained like helm-install-test.yml
- Uses helm/kind-action directly
- Simple Redis, 3 replicas, low CPU limits
- Full load test with encryption verification

Local (docker-compose.cluster.yml):
- Kept for local development with full redis-ha
- Removed CI-specific conditional code
- Uses --wait for helm install
@ServerSideHannes ServerSideHannes merged commit 5e4e915 into main Jan 22, 2026
2 checks passed
@ServerSideHannes ServerSideHannes deleted the docker-workflow-fixes branch January 22, 2026 09:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant