|
| 1 | +# Firmirror Helm Chart |
| 2 | + |
| 3 | +This Helm chart deploys Firmirror as a Kubernetes CronJob to periodically sync firmware from hardware vendor sources (Dell and HPE) and create an LVFS-compatible firmware repository. |
| 4 | + |
| 5 | +## Prerequisites |
| 6 | + |
| 7 | +- Kubernetes 1.19+ |
| 8 | +- Helm 3.0+ |
| 9 | +- PersistentVolume provisioner support (optional, but recommended) |
| 10 | +- Container image with firmirror binary and fwupdtool |
| 11 | + |
| 12 | +## Installing the Chart |
| 13 | + |
| 14 | +### Basic Installation |
| 15 | + |
| 16 | +```bash |
| 17 | +# Install with default configuration (no vendors enabled by default) |
| 18 | +helm install firmirror ./chart |
| 19 | + |
| 20 | +# Install with custom values |
| 21 | +helm install firmirror ./chart \ |
| 22 | + --set vendors.dell.enabled=true \ |
| 23 | + --set vendors.dell.machinesId="0C60,0C61" \ |
| 24 | + --set vendors.hpe.enabled=true \ |
| 25 | + --set vendors.hpe.gens="gen10,gen11" |
| 26 | +``` |
| 27 | + |
| 28 | +## Configuration |
| 29 | + |
| 30 | +The following table lists the configurable parameters of the Firmirror chart and their default values. |
| 31 | + |
| 32 | +### Settings |
| 33 | + |
| 34 | +| Parameter | Description | Default | |
| 35 | +|-----------|-------------|---------| |
| 36 | +| `schedule` | Cron schedule for the job | `"0 2 * * *"` (2 AM daily) | |
| 37 | +| `nameOverride` | Override the chart name | `""` | |
| 38 | +| `fullnameOverride` | Override the full release name | `""` | |
| 39 | +| `image.repository` | Container image repository | `ghcr.io/criteo/firmirror` | |
| 40 | +| `image.tag` | Container image tag | `""` (Chart appVersion) | |
| 41 | +| `image.pullPolicy` | Image pull policy | `IfNotPresent` | |
| 42 | +| `imagePullSecrets` | Image pull secrets | `[]` | |
| 43 | +| `vendors.dell.enabled` | Enable Dell firmware sync | `false` | |
| 44 | +| `vendors.dell.machinesId` | Comma-separated Dell machine System IDs | `""` | |
| 45 | +| `vendors.hpe.enabled` | Enable HPE firmware sync | `false` | |
| 46 | +| `vendors.hpe.gens` | Comma-separated HPE generations (gen10,gen11,gen12) | `""` | |
| 47 | +| `outputDir` | Output directory inside container | `/data/firmirror` | |
| 48 | +| `persistence.enabled` | Enable persistent storage | `false` | |
| 49 | +| `persistence.existingClaim` | Use existing PVC | `""` | |
| 50 | +| `persistence.storageClass` | Storage class name | `""` (default class) | |
| 51 | +| `persistence.accessMode` | PVC access mode | `ReadWriteOnce` | |
| 52 | +| `persistence.size` | PVC size | `50Gi` | |
| 53 | +| `cronjob.successfulJobsHistoryLimit` | Number of successful jobs to keep | `3` | |
| 54 | +| `cronjob.failedJobsHistoryLimit` | Number of failed jobs to keep | `3` | |
| 55 | +| `cronjob.restartPolicy` | Pod restart policy | `OnFailure` | |
| 56 | +| `cronjob.backoffLimit` | Number of retries before marking job as failed | `2` | |
| 57 | +| `cronjob.activeDeadlineSeconds` | Maximum job runtime in seconds | `7200` (2 hours) | |
| 58 | +| `cronjob.ttlSecondsAfterFinished` | Time to keep finished jobs | `86400` (24 hours) | |
| 59 | +| `resources.limits.cpu` | CPU limit | `2000m` | |
| 60 | +| `resources.limits.memory` | Memory limit | `4Gi` | |
| 61 | +| `resources.requests.cpu` | CPU request | `500m` | |
| 62 | +| `resources.requests.memory` | Memory request | `1Gi` | |
| 63 | +| `podSecurityContext.fsGroup` | Pod fsGroup | `1000` | |
| 64 | +| `podSecurityContext.runAsUser` | Pod user ID | `1000` | |
| 65 | +| `podSecurityContext.runAsNonRoot` | Run as non-root | `true` | |
| 66 | +| `securityContext.allowPrivilegeEscalation` | Allow privilege escalation | `false` | |
| 67 | +| `securityContext.capabilities.drop` | Dropped capabilities | `["ALL"]` | |
| 68 | +| `securityContext.readOnlyRootFilesystem` | Read-only root filesystem | `false` | |
| 69 | +| `securityContext.runAsNonRoot` | Run as non-root | `true` | |
| 70 | +| `securityContext.runAsUser` | Container user ID | `1000` | |
| 71 | +| `env` | Additional environment variables | `[]` | |
| 72 | +| `serviceAccount.create` | Create service account | `false` | |
| 73 | +| `serviceAccount.annotations` | Service account annotations | `{}` | |
| 74 | +| `serviceAccount.name` | Service account name | `""` | |
| 75 | + |
| 76 | +## License |
| 77 | + |
| 78 | +See the main project repository for license information. |
0 commit comments