{"id":47951395,"url":"https://github.com/roadrunner-server/k8s-examples","last_synced_at":"2026-04-04T09:05:31.962Z","repository":{"id":338103060,"uuid":"1156375794","full_name":"roadrunner-server/k8s-examples","owner":"roadrunner-server","description":"RoadRunner k8s examples (argocd, k8s)","archived":false,"fork":false,"pushed_at":"2026-02-12T21:24:15.000Z","size":23,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-02-13T04:24:05.891Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go Template","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/roadrunner-server.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-12T15:24:31.000Z","updated_at":"2026-02-12T21:24:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/roadrunner-server/k8s-examples","commit_stats":null,"previous_names":["roadrunner-server/k8s-examples"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/roadrunner-server/k8s-examples","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roadrunner-server%2Fk8s-examples","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roadrunner-server%2Fk8s-examples/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roadrunner-server%2Fk8s-examples/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roadrunner-server%2Fk8s-examples/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/roadrunner-server","download_url":"https://codeload.github.com/roadrunner-server/k8s-examples/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roadrunner-server%2Fk8s-examples/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31393783,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T04:26:24.776Z","status":"ssl_error","status_checked_at":"2026-04-04T04:23:34.147Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-04T09:05:30.724Z","updated_at":"2026-04-04T09:05:31.954Z","avatar_url":"https://github.com/roadrunner-server.png","language":"Go Template","funding_links":[],"categories":[],"sub_categories":[],"readme":"# k8s-examples\n\nKubernetes deployment examples for RoadRunner, including Helm chart templates and Argo CD manifests.\n\n\u003cimg width=\"3234\" height=\"1428\" alt=\"image\" src=\"https://github.com/user-attachments/assets/ca17a0a2-998e-4018-b99f-cd5c554afbe4\" /\u003e\n\n\n## Included Assets\n\n- `deploy/charts/roadrunner`: Helm chart for RoadRunner deployment.\n- `deploy/argocd`: Argo CD Application and values example.\n- `examples/php-worker`: Minimal RR PHP worker app, Dockerfile, and local run guide.\n- `.github/workflows/charts.yml`: CI validation for chart rendering and Gateway/Ingress checks.\n- `.github/workflows/example-image.yml`: CI build/publish of multi-arch RR PHP worker example image.\n\n## Kubernetes and Argo CD\n\nThis repository includes a Helm chart and Argo CD example manifests for GitOps-based deployments.\n\n- Chart: `deploy/charts/roadrunner`\n- Argo CD example: `deploy/argocd`\n- PHP worker image source: `examples/php-worker`\n\n### Prerequisites\n\n- Kubernetes `\u003e= 1.26`\n- Gateway API CRDs installed\n- Cilium Gateway controller with `GatewayClass` `cilium`\n- Argo CD installed (if using Argo)\n- A container image that includes:\n  - your PHP application code\n  - required PHP extensions\n  - RoadRunner binary (`rr`)\n\n### Example image\n\nThis repo includes a minimal example image at `examples/php-worker`:\n\n- Worker routes:\n  - `GET /` -\u003e `hello from roadrunner`\n  - `GET /health` -\u003e `{\"status\":\"ok\"}`\n  - all other routes -\u003e `404`\n- Default RR config in the image: `/etc/rr/.rr.yaml`\n- CI publish target: `ghcr.io/roadrunner-server/rr-php-worker-example`\n\nBuild locally:\n\n```bash\ndocker build -t rr-php-worker-example:local ./examples/php-worker\n```\n\nRun locally:\n\n```bash\ndocker run --rm -p 8080:8080 -p 2114:2114 rr-php-worker-example:local\ncurl -sS http://127.0.0.1:8080/\ncurl -sS http://127.0.0.1:8080/health\ncurl -sS 'http://127.0.0.1:2114/ready?plugin=http'\ncurl -sS 'http://127.0.0.1:2114/health?plugin=http'\n```\n\n### Helm install\n\n```bash\nhelm upgrade --install roadrunner ./deploy/charts/roadrunner -n roadrunner --create-namespace\n```\n\n### Argo CD sync\n\n1. Edit `deploy/argocd/application.yaml` (`repoURL`, `targetRevision`) if needed.\n2. Edit `deploy/argocd/values.yaml` (image, worker command, exposure mode, metrics settings).\n3. Apply:\n\n```bash\nkubectl apply -f deploy/argocd/application.yaml\n```\n\nThe Argo CD example values are preconfigured for:\n\n- image: `ghcr.io/roadrunner-server/rr-php-worker-example:latest`\n- Service type: `LoadBalancer` (MetalLB-friendly)\n- `gateway.enabled: false`\n- `ingress.enabled: false`\n\n### MetalLB profile (no Gateway controller)\n\nIf your cluster uses MetalLB and does not run a Gateway API controller, use:\n\n```yaml\nservice:\n  type: LoadBalancer\n\ngateway:\n  enabled: false\n\ningress:\n  enabled: false\n```\n\nThen sync ArgoCD and check:\n\n```bash\nkubectl -n roadrunner get svc roadrunner -w\ncurl -sS http://\u003cexternal-ip\u003e/\ncurl -sS http://\u003cexternal-ip\u003e/health\n```\n\n### Probe and metrics defaults\n\n- Command: `rr serve -c /etc/rr/.rr.yaml -w /app`\n- Readiness probe: `/ready?plugin=http` on status port\n- Liveness probe: `/health?plugin=http` on status port\n- Config file is mounted at `/etc/rr/.rr.yaml`\n- Config changes trigger pod rollout via checksum annotation\n\nThe chart mounts `/etc/rr/.rr.yaml` from a ConfigMap by default. This can override the image-baked RR config at runtime.\n\n### Gateway API default\n\n- Gateway API is the default north-south exposure model.\n- Default `GatewayClass` is `cilium`.\n- The chart renders `Gateway` and `HTTPRoute` by default.\n- Ingress remains available as fallback (`ingress.enabled=true` with `gateway.enabled=false`).\n\n### Troubleshooting\n\n- ArgoCD `Progressing` with health details `Waiting for controller` means Gateway resources are enabled but no Gateway controller is reconciling them.\n- `kubectl get gatewayclass` returning no resources indicates Gateway API objects will not become `Healthy` until a controller/GatewayClass is installed.\n- If ArgoCD still applies old values after local edits, ensure changes are committed and pushed to the revision ArgoCD tracks.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froadrunner-server%2Fk8s-examples","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froadrunner-server%2Fk8s-examples","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froadrunner-server%2Fk8s-examples/lists"}