|
|
3 달 전 | |
|---|---|---|
| .. | ||
| Dockerfile.s3 | 3 달 전 | |
| Makefile | 3 달 전 | |
| Makefile.docker | 3 달 전 | |
| README-Docker.md | 3 달 전 | |
| README.md | 3 달 전 | |
| STS_DISTRIBUTED.md | 3 달 전 | |
| docker-compose-simple.yml | 3 달 전 | |
| docker-compose.test.yml | 3 달 전 | |
| docker-compose.yml | 3 달 전 | |
| go.mod | 3 달 전 | |
| go.sum | 3 달 전 | |
| iam_config.github.json | 3 달 전 | |
| iam_config.json | 3 달 전 | |
| iam_config.local.json | 3 달 전 | |
| iam_config_distributed.json | 3 달 전 | |
| iam_config_docker.json | 3 달 전 | |
| run_all_tests.sh | 3 달 전 | |
| run_performance_tests.sh | 3 달 전 | |
| run_stress_tests.sh | 3 달 전 | |
| s3_iam_distributed_test.go | 3 달 전 | |
| s3_iam_framework.go | 3 달 전 | |
| s3_iam_integration_test.go | 3 달 전 | |
| s3_keycloak_integration_test.go | 3 달 전 | |
| setup_all_tests.sh | 3 달 전 | |
| setup_keycloak.sh | 3 달 전 | |
| setup_keycloak_docker.sh | 3 달 전 | |
| test_config.json | 3 달 전 | |
This directory contains a complete Docker Compose setup for testing SeaweedFS S3 IAM integration with Keycloak OIDC authentication.
Build local SeaweedFS image:
make -f Makefile.docker docker-build
Start the environment:
make -f Makefile.docker docker-up
Run the tests:
make -f Makefile.docker docker-test
Stop the environment:
make -f Makefile.docker docker-down
The Docker Compose setup includes:
After starting with docker-up, services are available at:
| Service | URL | Credentials |
|---|---|---|
| 🔐 Keycloak Admin | http://localhost:8080 | admin/admin |
| 📊 S3 API | http://localhost:8333 | JWT tokens |
| 📁 Filer | http://localhost:8888 | - |
| 🎯 Master | http://localhost:9333 | - |
The setup automatically creates test users in Keycloak:
| Username | Password | Role | Permissions |
|---|---|---|---|
| admin-user | adminuser123 | s3-admin | Full S3 access |
| read-user | readuser123 | s3-read-only | Read-only access |
| write-user | writeuser123 | s3-read-write | Read and write |
| write-only-user | writeonlyuser123 | s3-write-only | Write only |
make -f Makefile.docker docker-test
# Authentication tests only
make -f Makefile.docker docker-test-auth
# Role mapping tests only
make -f Makefile.docker docker-test-roles
# S3 operations tests only
make -f Makefile.docker docker-test-s3ops
make -f Makefile.docker docker-test-single TEST_NAME=TestKeycloakAuthentication
# Build, start, test, and clean up
make -f Makefile.docker docker-build
make -f Makefile.docker docker-dev
This runs: build → down → up → test
If you want to use published Docker Hub images instead of building locally:
export SEAWEEDFS_IMAGE=chrislusf/seaweedfs:latest
make -f Makefile.docker docker-up
# Build image (required first time, or after code changes)
make -f Makefile.docker docker-build
# Start services
make -f Makefile.docker docker-up
# Watch logs
make -f Makefile.docker docker-logs
# Check status
make -f Makefile.docker docker-status
# Run tests
make -f Makefile.docker docker-test
# Stop services
make -f Makefile.docker docker-down
# All services
make -f Makefile.docker docker-logs
# S3 service only (includes role mapping debug)
make -f Makefile.docker docker-logs-s3
# Keycloak only
make -f Makefile.docker docker-logs-keycloak
# S3 container
make -f Makefile.docker docker-shell-s3
# Keycloak container
make -f Makefile.docker docker-shell-keycloak
seaweedfs/test/s3/iam/
├── docker-compose.yml # Main Docker Compose configuration
├── Makefile.docker # Docker-specific Makefile
├── setup_keycloak_docker.sh # Keycloak setup for containers
├── README-Docker.md # This file
├── iam_config.json # IAM configuration (auto-generated)
├── test_config.json # S3 service configuration
└── *_test.go # Go integration tests
The setup_keycloak_docker.sh script automatically generates iam_config.json with:
{
"claim": "roles",
"value": "s3-admin",
"role": "arn:seaweed:iam::role/KeycloakAdminRole"
}
# Check service status
make -f Makefile.docker docker-status
# View logs for specific service
docker-compose -p seaweedfs-iam-test logs <service-name>
# Re-run Keycloak setup manually
make -f Makefile.docker docker-keycloak-setup
# Check Keycloak logs
make -f Makefile.docker docker-logs-keycloak
# Check S3 logs for role mapping debug messages
make -f Makefile.docker docker-logs-s3 | grep -i "role\|claim\|mapping"
If ports are already in use, modify docker-compose.yml:
ports:
- "8081:8080" # Change external port
# Stop containers and remove volumes
make -f Makefile.docker docker-down
# Complete cleanup (containers, volumes, images)
make -f Makefile.docker docker-clean
For automated testing:
# Build image, run tests with proper cleanup
make -f Makefile.docker docker-build
make -f Makefile.docker docker-up
make -f Makefile.docker docker-wait-healthy
make -f Makefile.docker docker-test
make -f Makefile.docker docker-down