Skip to main content

vekil-reverse-proxy-deploy

Deploy or update Vekil from github.com/sozercan/vekil as a Kubernetes or local reverse proxy for Anthropic, Gemini, OpenAI Chat Completions, and OpenAI Responses-compatible clients. Use when the user asks to install, redeploy, configure provider routing for, expose, port-forward, validate, or troubleshoot Vekil reverse proxy deployments.

소스 정보

저장소
orka-agents/orka
최근 소스 활동
2026년 7월 28일 22:08
감지된 SKILL.md 언어
영어
스타
31
포크
24

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
3 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
vekil-reverse-proxy-deploy
description
Deploy or update Vekil from github.com/sozercan/vekil as a Kubernetes or local reverse proxy for Anthropic, Gemini, OpenAI Chat Completions, and OpenAI Responses-compatible clients. Use when the user asks to install, redeploy, configure provider routing for, expose, port-forward, validate, or troubleshoot Vekil reverse proxy deployments.
# Vekil Reverse Proxy Deploy Deploy Vekil as the single reverse-proxy endpoint for Claude/Anthropic, Gemini, OpenAI-compatible, and Codex clients. Prefer the bundled Kubernetes script for repeatable cluster deployments; use Docker only for quick local runs. ## Standard Kubernetes Workflow 1. Confirm the target before changing anything: - `kubectl config current-context` - `kubectl cluster-info` - For remote/shared clusters, state the context and ask before exposing `LoadBalancer` or `NodePort` services. 2. Deploy the default zero-config Copilot-backed proxy: - `scripts/deploy_vekil_reverse_proxy.sh --context <kubectl-context>` - Default namespace: `vekil-system`; default service: `ClusterIP`; default image: `ghcr.io/sozercan/vekil:latest`; default port: `1337`. 3. If explicit provider routing is required, write or locate a JSON/YAML providers file that uses secret env references, then pass it with existing Kubernetes secrets: ```bash scripts/deploy_vekil_reverse_proxy.sh \ --context <kubectl-context> \ --providers-config /path/to/providers.yaml \ --env-secret AZURE_OPENAI_API_KEY=azure-openai:key ``` 4. For non-interactive Copilot auth in Kubernetes, either wire an existing Secret or let the script create/update one from an explicitly exported `COPILOT_GITHUB_TOKEN`. Prefer existing Secrets for production clusters that use a secret manager. ```bash # Existing Secret scripts/deploy_vekil_reverse_proxy.sh \ --env-secret COPILOT_GITHUB_TOKEN=copilot-github-token:token # Script-created Secret; the token is not printed or embedded in the rendered workload. export COPILOT_GITHUB_TOKEN=... scripts/deploy_vekil_reverse_proxy.sh \ --create-copilot-token-secret copilot-github-token:token ``` 5. Wait for rollout, then verify through a port-forward: ```bash kubectl -n vekil-system port-forward svc/vekil 1337:1337 curl http://127.0.0.1:1337/healthz curl http://127.0.0.1:1337/readyz curl http://127.0.0.1:1337/v1/models ``` ## Provider and Auth Notes - Zero-config mode uses Vekil's built-in GitHub Copilot upstream. In Kubernetes, device-code login can work from pod logs; use `--skip-wait`, watch `kubectl -n <namespace> logs deploy/<name>`, complete the login, then verify `/readyz`. `COPILOT_GITHUB_TOKEN` via `--env-secret` or `--create-copilot-token-secret` is better for non-interactive deployments; `--create-copilot-token-secret` requires local `COPILOT_GITHUB_TOKEN` and does not fall back to GitHub CLI OAuth tokens. If the script-created Secret changes, the script restarts the Deployment so the Secret-backed env var is reloaded. - Explicit provider configs should use `api_key_env`, not inline `api_key`, because the bundled script stores the config as a ConfigMap and refuses inline API keys by default. When the script creates or updates the providers ConfigMap, it restarts the Deployment so Vekil reloads provider routing read at startup. - OpenAI Codex providers need `auth.json` from `codex login`. If needed, mount an existing secret with `--codex-auth-secret <secret>[:auth.json]` and verify whether the deployment needs a writable token source for refresh behavior. - Vekil token cache defaults to an `emptyDir`; use `--token-pvc <claim>` if preserving Vekil-managed cached auth across pod restarts matters. ## Common Commands Render the manifest without applying: ```bash scripts/deploy_vekil_reverse_proxy.sh --print ``` Create/update a Copilot token Secret from an explicit local environment token and deploy: ```bash export COPILOT_GITHUB_TOKEN=... scripts/deploy_vekil_reverse_proxy.sh \ --create-copilot-token-secret copilot-github-token:token ``` Deploy to a custom namespace and expose inside the cluster: ```bash scripts/deploy_vekil_reverse_proxy.sh --namespace ai-proxy --name vekil ``` Expose for a local kind/minikube workflow with an explicit context: ```bash scripts/deploy_vekil_reverse_proxy.sh --context kind-orka --namespace vekil-system kubectl --context kind-orka -n vekil-system port-forward svc/vekil 1337:1337 ``` Use the local Docker quick-start instead of Kubernetes when the user only needs a workstation proxy: ```bash docker run -p 1337:1337 \ -v ~/.config/vekil:/home/nonroot/.config/vekil \ ghcr.io/sozercan/vekil:latest ``` ## Client Smoke Tests Run these only after `/readyz` succeeds and the requested model appears in `/v1/models`. ```bash env ANTHROPIC_BASE_URL=http://127.0.0.1:1337 \ ANTHROPIC_API_KEY=dummy \ claude --model claude-sonnet-4 --print --output-format text "Reply with exactly PROXY_OK" ``` ```bash env OPENAI_API_KEY=dummy \ OPENAI_BASE_URL=http://127.0.0.1:1337/v1 \ codex exec --skip-git-repo-check -m gpt-5.5 "Reply with exactly PROXY_OK" ``` ```bash env GEMINI_API_KEY=dummy \ GOOGLE_GEMINI_BASE_URL=http://127.0.0.1:1337 \ GOOGLE_GENAI_API_VERSION=v1beta \ GEMINI_CLI_NO_RELAUNCH=true \ gemini -m gemini-2.5-pro -p "Reply with exactly PROXY_OK" -o json ``` ## Troubleshooting - If rollout fails: `kubectl -n <namespace> describe deploy/<name>` and `kubectl -n <namespace> logs deploy/<name>`. - If an existing Secret used with `--env-secret` changes outside this script, restart the Deployment so env vars reload: `kubectl -n <namespace> rollout restart deploy/<name>`. - If `/healthz` works but `/readyz` fails, focus on provider auth, provider config model ownership, upstream reachability, or missing secret env vars. - If clients cannot connect, verify the base URL path: Anthropic/Gemini use `http://host:1337`; OpenAI/Codex use `http://host:1337/v1`. - Do not paste secrets into prompts, commit provider files with inline credentials, or expose a public service without confirming the user's intended security boundary. - When zero-config mode falls back to GitHub Copilot device-code login, surface the login code and URL to the user and wait for their confirmation before continuing. Never complete the login on their behalf.
GitHub에서 보기