Deployment
Kubernetes Deployment
Prerequisites
Teable Images
- Application image:
ghcr.io/teableio/teable-ee:latest
- Database initialization image:
ghcr.io/teableio/teable-db-migrate-ee:latest
Runtime Environment
- Running Kubernetes cluster
Required External Services
Database Service
- PostgreSQL database: postgres:15.4 (version > 12)
- PG image:
postgres:15.4
- PG image:
Cache Service
- Redis cache service: redis:7.2.4 (version > 5)
- Redis image:
redis:7.2.4
- Redis image:
Object Storage Service
- MinIO object storage service:
minio:latest
Required Tools
- kubectl command-line tool
Dependency Component Configuration
File Storage (MinIO)
File storage service must be accessible from the public internet (directly accessible by end users)
- Public readable bucket, configured with public read permissions
- Private bucket, no special permission configuration needed
Teable MinIO Environment Variables Overview
Database
Create a database account with administrative privileges, a database, and set a password. Environment variables example:
- Database name: teable
- Password: your-password
- Username: postgres
- Port: 5432
Redis Cache
Teable only needs the internal network address for Redis cache configuration. (Note: Redis manages both cache and queues, it’s essential. Data should be backed up regularly) Environment variables example:
Create Configuration Files
teable-config.yaml (Non-sensitive configuration)
secrets.yaml (Sensitive information)
job.yaml
deployment.yaml
service.yaml
ingress.yaml (Optional)
Deployment Steps
- Create configuration and secrets:
- Deploy application:
- Verify deployment:
Configuration Notes
- Sensitive Information Management
- All password, secret-related information should be managed through Secrets
- Database Configuration
- Ensure that the teable database exists in the database
- The database user needs to have appropriate permissions
- It’s recommended to use a connection pool to manage database connections
- MinIO Configuration
- Ensure that the storage bucket exists and the permissions are correct, one public bucket, one private bucket
- The public bucket needs to be completely publicly readable
- The internal and external access address configuration is correct
- Redis Configuration
- It’s recommended to enable Redis persistence
- Configure appropriate memory limits
- Consider using Redis cluster to improve availability
- Security Recommendations
- Use strong passwords and secrets
- Enable TLS/SSL encryption
- Regularly update certificates
- Limit network access scope
- Resource Configuration
- Adjust resource limits based on actual load
- Monitor resource usage
- Configure appropriate health check parameters
Troubleshooting
- Check Pod status:
- View application logs:
- Verify configuration:
- Check network connection: