fix(karrot): fix nginx DNS resolver for Kubernetes and add README

The karrot-frontend nginx template hardcodes Docker's DNS resolver
(127.0.0.11) which doesn't exist in Kubernetes. Added a ConfigMap to
override the template, removing the Docker DNS resolver by using a
direct proxy_pass with no nginx variable (which would force runtime
resolution). Also adds a README with usage instructions.

Documents lessons learned in ADDING-APPS-NOTES.md:
- Note 24: nginx Docker DNS resolver doesn't work in Kubernetes; any
  nginx variable in proxy_pass (including $request_uri) forces runtime
  DNS resolution requiring a resolver directive
- Note 25: ConfigMap changes don't restart pods; subPath mounts never
  auto-update; always follow with kubectl rollout restart
- Note 26: includeSelectors mismatch affects every deployment in an
  app — check all endpoints, not just the web-facing one

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-22 04:08:04 +00:00
parent 7aa3e04829
commit 74570413fc
5 changed files with 270 additions and 6 deletions

View File

@@ -0,0 +1,35 @@
# Karrot
Karrot is a community platform for sharing resources, coordinating food-saving activities, and organizing volunteers. Groups can manage pickups, track saved food, and communicate through a shared feed.
## Dependencies
- **PostgreSQL** - Database for storing groups, users, and activity data
- **SMTP** - For account verification and notifications
## Configuration
Key settings in `config.yaml`:
- **domain** - Where Karrot will be accessible (default: `karrot.{your-cloud-domain}`)
- **storage** - Persistent volume size for uploaded files (default: `2Gi`)
- **redis.host** - Redis instance for caching and background jobs (default: app-local `karrot-redis`)
- **smtp** - Email settings inherited from your Wild Cloud SMTP service
## First-Time Setup
1. Add and deploy the app:
```bash
wild app add karrot
wild app deploy karrot
```
2. Visit `https://karrot.{your-cloud-domain}` and register an account. The first user to register becomes the site admin.
3. Log in and create your first group to start coordinating.
## Notes
- Karrot supports federation — groups can connect with other Karrot instances
- The `secretKey` and `dbPassword` are auto-generated in `secrets.yaml`
- Uploaded files (photos, attachments) are stored in the persistent volume and shared between the frontend and backend pods