86 lines
2.0 KiB
Markdown
86 lines
2.0 KiB
Markdown
# Cloud Services
|
|
|
|
Refactored cloud microservices from project-ai.
|
|
|
|
## Structure
|
|
|
|
```
|
|
cloud-services/
|
|
├── pkg/ # Shared Go packages
|
|
│ ├── kafka/ # Pure Go Kafka client (franz-go)
|
|
│ ├── dbc/ # CAN database signal definitions
|
|
│ ├── can-go/ # CAN protocol library
|
|
│ └── ... # Other shared modules
|
|
├── services/
|
|
│ └── gateway/ # API gateway service
|
|
├── deploy/
|
|
│ ├── base/ # Base k8s manifests
|
|
│ └── overlays/ # Environment-specific configs
|
|
└── scripts/ # Build and utility scripts
|
|
```
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
# Build all
|
|
go build ./...
|
|
|
|
# Build gateway
|
|
go build ./services/gateway
|
|
|
|
# Run tests
|
|
go test ./...
|
|
|
|
# Build Docker image
|
|
docker build -t gateway -f services/gateway/Dockerfile .
|
|
```
|
|
|
|
## Services
|
|
|
|
### Gateway
|
|
WebSocket gateway for TRex, HMI, and Mobile connections. Handles auth, message routing to Kafka.
|
|
|
|
- Port 8077: HTTP/WebSocket
|
|
- Port 11011: Health check
|
|
|
|
## Development
|
|
|
|
### Prerequisites
|
|
- Go 1.25+
|
|
- Docker (for container builds)
|
|
|
|
### Module Structure
|
|
Uses Go workspaces (`go.work`) for local development:
|
|
- `./pkg` - shared packages
|
|
- `./pkg/can-go` - CAN protocol library
|
|
- `./services/gateway` - gateway service
|
|
|
|
### Generating DBC Code
|
|
CAN signal definitions are generated from DBC files. See `pkg/dbc/README.md`.
|
|
|
|
```bash
|
|
./scripts/generate-dbc.sh /path/to/dbc/files
|
|
```
|
|
|
|
## Deployment
|
|
|
|
Kubernetes manifests in `deploy/` use Kustomize overlays:
|
|
|
|
```bash
|
|
# Development
|
|
kubectl apply -k deploy/overlays/development
|
|
|
|
# Or via ArgoCD
|
|
# See k8s-gitops-setup repo
|
|
```
|
|
|
|
## Environment Variables
|
|
|
|
| Variable | Default | Description |
|
|
|----------|---------|-------------|
|
|
| `KAFKA_HOSTS` | `localhost:9092` | Kafka brokers |
|
|
| `REDIS_HOST` | `localhost` | Redis host |
|
|
| `REDIS_PORT` | `6379` | Redis port |
|
|
| `JWK_URL` | - | JWKS endpoint for JWT validation |
|
|
| `LOG_LEVEL` | `info` | Log level |
|