43 lines
1.5 KiB
Markdown
43 lines
1.5 KiB
Markdown
|
|
# CLAUDE.md
|
||
|
|
|
||
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||
|
|
|
||
|
|
## Project Overview
|
||
|
|
|
||
|
|
A Kubernetes controller that automatically creates `LimitRange` resources (named `extreme-request-defaults`) in all non-excluded namespaces to set default memory requests for containers. Runs as a loop checking every 10 seconds.
|
||
|
|
|
||
|
|
## Build Commands
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Run tests
|
||
|
|
go test -race -coverprofile=coverage.txt ./...
|
||
|
|
|
||
|
|
# Check for vulnerabilities
|
||
|
|
go install golang.org/x/vuln/cmd/govulncheck@latest
|
||
|
|
govulncheck ./...
|
||
|
|
|
||
|
|
# Build binary
|
||
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o release/default-request-adder -ldflags '-w -s'
|
||
|
|
|
||
|
|
# Build Docker image (uses build-tools, not buildx)
|
||
|
|
docker build -t default-request-adder .
|
||
|
|
```
|
||
|
|
|
||
|
|
## Architecture
|
||
|
|
|
||
|
|
Single-file Go application (`main.go`) that:
|
||
|
|
- Uses in-cluster Kubernetes client configuration (`rest.InClusterConfig()`)
|
||
|
|
- Loops through all namespaces every 10 seconds
|
||
|
|
- Creates `LimitRange` named `extreme-request-defaults` in non-excluded namespaces
|
||
|
|
- Deletes the `LimitRange` from excluded namespaces if present
|
||
|
|
|
||
|
|
### CLI Flags
|
||
|
|
- `-excluded-ns`: Comma-separated list of namespaces to exclude (default: `kube-system`). Use `*` to exclude all.
|
||
|
|
- `-memory`: Default memory request value (default: `1Ti`)
|
||
|
|
|
||
|
|
## CI/CD
|
||
|
|
|
||
|
|
- **Gitea Actions**: `.gitea/workflows/ci.yaml` - runs tests and vulnerability checks
|
||
|
|
- **GitLab CI**: `.gitlab-ci.yml` - uses `buildtool/build-tools` for builds
|
||
|
|
- **Releases**: Uses git-cliff for changelog generation (see `cliff.toml`)
|