Production checklist
What to confirm before an environment takes real traffic - one page, one pass.
Work through this before the environment takes real traffic. Every item is one decision, and each links to the page that explains it.
Network
- Turn TLS on for every port that clients reach - SSL/TLS
- Leave the plaintext load balancer and Dashboard ports unpublished - default ports
- Put the Dashboard behind a firewall that limits who can reach it - a VPN, an office range or an allow-list - Dashboard authentication
- Confirm outbound access exists for the systems your alerts are delivered to - notifications
Limit who can reach the Dashboard. A Dashboard login has full administrative rights over the environment, so, at most, a firewall should restrict access to the Dashboard port to a limited set of addresses.
Credentials
- Change the default API credentials that the environment was created with - security defaults
- Rotate the SSH password, or close port 22 entirely if you use
docker exec- changing passwords - Set a password on the metrics endpoint - monitoring with Prometheus
- Change the Dashboard's own administrative password - changing passwords
Databases
- Decide whether the ODB keeps its SQLite default or uses MySQL or PostgreSQL - ODB configuration
- Decide the same for the audit log's database - audit log
- If you use an external database for either, encrypt its connection with TLS - audit log
- Decide the audit log retention window and, if payloads are sensitive, a shorter one for content - audit log
Observability
- Ship the logs off the container, rather than relying on
docker logs- logging - Scrape the metrics endpoint - monitoring with Prometheus
- Fill in the alert notification targets and activate the connections they use - notifications
- Deliver one alert end to end, so you know the path works before you need it - notifications
- Review the alert thresholds against what your traffic actually looks like - alert rules
- Turn on health checks for the outgoing connections that matter, particularly the ones used rarely - health checks
Configuration
- Keep the project, including its enmasse YAML, in git - enmasse
Traffic control
- Rate limit every channel exposed to the public - rate limiting
- Assign quota tiers to the consumers that need different limits - quota tiers
- Set timeouts on outgoing connections, so a slow remote system does not become your outage - outgoing connections
Backups
- Confirm the SQL databases you run outside the container are covered by your existing backup arrangements - backup
Note: Nothing inside the container needs backing up. It is rebuilt from the image plus the project - see backup.