Docs: Added K3s deployment README
This commit is contained in:
parent
a46e130be9
commit
6a55f95f9e
1 changed files with 64 additions and 0 deletions
64
k3s/README.md
Normal file
64
k3s/README.md
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
# PicoClaw K3s Deployment
|
||||
|
||||
This directory contains the Kubernetes manifests for deploying the PicoClaw agent on a K3s cluster. The deployment is hardened with workspace isolation and secure secret management.
|
||||
|
||||
## 📁 Manifests
|
||||
|
||||
- **[deployment.yaml](deployment.yaml)**: Defines the PicoClaw agent deployment, including an init container for configuration syncing and volume mounts for secrets and persistent storage.
|
||||
- **[configmap.yaml](configmap.yaml)**: The main agent configuration (Syncs to `config.json`).
|
||||
- **[secrets.yaml](secrets.yaml)**: Template for sensitive API keys (Telegram, NVIDIA, Azure, etc.).
|
||||
- **[pvc.yaml](pvc.yaml)**: Persistent Volume Claim for agent workspaces and chat history.
|
||||
- **[service.yaml](service.yaml)**: Internal service for MCP server communication.
|
||||
|
||||
## 🚀 Deployment Steps
|
||||
|
||||
### 1. Configure Secrets
|
||||
Open **[secrets.yaml](secrets.yaml)** and replace the placeholders with your actual API keys. Then apply it to your cluster:
|
||||
|
||||
```bash
|
||||
kubectl apply -f secrets.yaml
|
||||
```
|
||||
|
||||
### 2. Prepare Storage
|
||||
Ensure your K3s cluster has a default storage class or configure the **[pvc.yaml](pvc.yaml)** to match your storage provider:
|
||||
|
||||
```bash
|
||||
kubectl apply -f pvc.yaml
|
||||
```
|
||||
|
||||
### 3. Deploy the Agent
|
||||
Apply the configuration and the deployment:
|
||||
|
||||
```bash
|
||||
kubectl apply -f configmap.yaml
|
||||
kubectl apply -f deployment.yaml
|
||||
kubectl apply -f service.yaml
|
||||
```
|
||||
|
||||
## 🔒 Security Features
|
||||
|
||||
### Workspace Isolation
|
||||
The agent is configured to restrict all filesystem tools to its respective workspace. The `deployment.yaml` ensures the correct directory structure is initialized before the agent starts.
|
||||
|
||||
### Secret Management
|
||||
API keys are never stored in the `ConfigMap`. Instead, they are mounted as files from a Kubernetes Secret into `/etc/picoclaw/secrets/`. The agent reads these using the `file://` scheme:
|
||||
|
||||
```json
|
||||
"token": "file:///etc/picoclaw/secrets/telegram-token"
|
||||
```
|
||||
|
||||
### Safe Command Execution
|
||||
Standard high-risk shell commands are blocked by the `exec` tool's safety guard. Targeted relaxations (e.g., for `git push`) are explicitly added to `custom_allow_patterns` in `configmap.yaml`.
|
||||
|
||||
## 🛠️ Management
|
||||
|
||||
### Logs
|
||||
To view the agent logs:
|
||||
```bash
|
||||
kubectl logs -f deployment/picoclaw-agent
|
||||
```
|
||||
|
||||
### Updating Configuration
|
||||
1. Modify **[configmap.yaml](configmap.yaml)**.
|
||||
2. Apply the change: `kubectl apply -f configmap.yaml`.
|
||||
3. Restart the pod: `kubectl rollout restart deployment/picoclaw-agent`.
|
||||
Loading…
Add table
Reference in a new issue