Some checks failed
Go Tests / go-tests (push) Failing after 1m0s
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>
107 lines
3.2 KiB
Markdown
107 lines
3.2 KiB
Markdown
# 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: {}
|
||
```
|