81 lines
1.9 KiB
Markdown
81 lines
1.9 KiB
Markdown
# Kubernetes Deployment
|
|
|
|
## Quick Start
|
|
|
|
### Prerequisites
|
|
- Kubernetes cluster running
|
|
- `kubectl` configured to access your cluster
|
|
- Docker registry access (for GitLab CI)
|
|
|
|
### Deploy to Kubernetes
|
|
|
|
**Option 1: Use deployment script**
|
|
```bash
|
|
# Linux/Mac
|
|
chmod +x deploy.sh
|
|
./deploy.sh
|
|
|
|
# Windows
|
|
deploy.bat
|
|
```
|
|
|
|
**Option 2: Manual deployment**
|
|
```bash
|
|
# 1. Create secret for API key
|
|
kubectl apply -f k8s-secret.yaml
|
|
|
|
# 2. Deploy application
|
|
kubectl apply -f k8s-deployment.yaml
|
|
|
|
# 3. Optional: Deploy ingress for external access
|
|
kubectl apply -f k8s-ingress.yaml
|
|
```
|
|
|
|
### Test the deployment
|
|
```bash
|
|
# Port forward to test locally
|
|
kubectl port-forward service/proxy-detection-service 8080:80
|
|
|
|
# Test health endpoint (no auth required)
|
|
curl http://localhost:8080/health
|
|
|
|
# Test main endpoint (requires API key)
|
|
curl -H "X-API-Key: bd406bf53ddc6abe1d9de5907830a955" http://localhost:8080/
|
|
```
|
|
|
|
### Configuration
|
|
|
|
#### Update API Key
|
|
1. Generate base64 encoded API key:
|
|
```bash
|
|
echo -n "your-new-api-key" | base64
|
|
```
|
|
2. Update `k8s-secret.yaml` with the new value
|
|
3. Apply changes:
|
|
```bash
|
|
kubectl apply -f k8s-secret.yaml
|
|
kubectl rollout restart deployment/proxy-detection-api
|
|
```
|
|
|
|
#### Update Image
|
|
Update image in `k8s-deployment.yaml` or use kubectl:
|
|
```bash
|
|
kubectl set image deployment/proxy-detection-api proxy-detection-api=your-registry/proxy-detection-api:new-tag
|
|
```
|
|
|
|
### GitLab CI/CD
|
|
|
|
The `.gitlab-ci-simple.yml` provides:
|
|
- **Build stage**: Builds and pushes Docker image to GitLab registry
|
|
- **Deploy stage**: Updates Kubernetes deployment (manual trigger)
|
|
|
|
Replace `.gitlab-ci.yml` with `.gitlab-ci-simple.yml` for the minimal pipeline.
|
|
|
|
### Resources
|
|
|
|
The deployment is configured with minimal resources:
|
|
- **Requests**: 64Mi RAM, 50m CPU
|
|
- **Limits**: 128Mi RAM, 100m CPU
|
|
- **Replicas**: 2 (for basic high availability)
|
|
|
|
Adjust these values in `k8s-deployment.yaml` based on your needs.
|