garm-provider-edge-connect/README.md
Waldemar d3afdab31f
Some checks failed
Go Tests / go-tests (push) Failing after 1m0s
feat(provider): Add configurable PodSpec support via ExtraSpecs
Enable users to customize Kubernetes PodSpec through ExtraSpecs JSON configuration. This allows fine-grained control over resource limits, volumes, security contexts, and other pod-level settings while maintaining backward compatibility with default configuration.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 12:12:31 +02:00

107 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Prerequisites
Use this project in conjunction with the DevFW-CICD/garm project. (It is assumed that project is cloned to the folder 'garm'.)
Edit the credentials for access to Telekom Edge Cloud and set new Tag:
In the garm project edit the file deploy.yaml:
- Edit the credentials inside the Secret with name 'edge-connect-creds' by setting values (inside stringData.creds.toml) for username and password.
- Edit the Deployment with name 'garm' by setting a new value (inside spec.template.spec.containers[0]) for the image (tag) of the form garm:provider-ec-[new_number].
# Build and deploy the project
Use these commands in the current project.
´´´bash
docker buildx build -t edp.buildth.ing/devfw-cicd/garm:provider-ec-[new_number] --push .
kubectl apply -f ../garm/deploy.yaml
´´´
# Configuration
## Extra Specs
You can configure runner behavior by passing extra specifications as JSON in the pool's `extra_specs` field.
### Available Parameters
| Parameter | Type | Default Value | Description |
|-----------|------|---------------|-------------|
| `runner_workdir` | string | `/runner/_work/` | The working directory for the runner |
| `disable_runner_update` | boolean | `true` | Whether to disable automatic runner updates |
| `runner_ephemeral` | boolean | `true` | Whether the runner should be ephemeral (single-use) |
| `pod_spec` | object | See default below | Custom Kubernetes PodSpec configuration |
### Basic Example
```json
{
"runner_workdir": "/custom/path/",
"disable_runner_update": false,
"runner_ephemeral": false
}
```
### Custom PodSpec Example
You can provide a complete custom PodSpec to configure resource limits, additional containers, volumes, security contexts, etc:
```json
{
"runner_workdir": "/runner/_work/",
"pod_spec": {
"restartPolicy": "Never",
"containers": [
{
"name": "runner",
"image": "edp.buildth.ing/devfw-cicd/garm-act-runner:1",
"imagePullPolicy": "Always",
"env": [],
"resources": {
"requests": {
"memory": "2Gi",
"cpu": "1000m"
},
"limits": {
"memory": "4Gi",
"cpu": "2000m"
}
},
"volumeMounts": [
{
"name": "runner-dir",
"mountPath": "/runner"
}
]
}
],
"volumes": [
{
"name": "runner-dir",
"emptyDir": {}
}
]
}
}
```
**Note:** When providing a custom `pod_spec`, the environment variables required for the runner (such as `RUNNER_TOKEN`, `METADATA_URL`, etc.) are automatically injected into the first container if not already present in the custom spec. If you provide a custom PodSpec without environment variables, make sure the container configuration is compatible with the runner requirements.
### Default PodSpec
If no `pod_spec` is provided, the following default configuration is used:
```yaml
restartPolicy: Never
containers:
- name: runner
image: edp.buildth.ing/devfw-cicd/garm-act-runner:1
imagePullPolicy: Always
env: [auto-generated environment variables]
volumeMounts:
- name: runner-dir
mountPath: /runner
volumes:
- name: runner-dir
emptyDir: {}
```