{"id":20118502,"url":"https://github.com/flowfuse/driver-k8s","last_synced_at":"2026-04-09T11:15:14.000Z","repository":{"id":38201448,"uuid":"444437635","full_name":"FlowFuse/driver-k8s","owner":"FlowFuse","description":"Kubernetes container driver for FlowFuse","archived":false,"fork":false,"pushed_at":"2025-04-10T09:16:53.000Z","size":775,"stargazers_count":2,"open_issues_count":11,"forks_count":3,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-10T10:45:31.421Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FlowFuse.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-04T13:53:56.000Z","updated_at":"2025-04-10T09:16:46.000Z","dependencies_parsed_at":"2023-09-28T17:58:22.744Z","dependency_job_id":"89b53dfb-7d36-4290-8cae-d79ecdc1645b","html_url":"https://github.com/FlowFuse/driver-k8s","commit_stats":{"total_commits":267,"total_committers":17,"mean_commits":"15.705882352941176","dds":"0.49063670411985016","last_synced_commit":"0cf48859ba13d3db3ed2ef848448a041241c2638"},"previous_names":["flowfuse/flowforge-driver-k8s","flowfuse/driver-k8s"],"tags_count":50,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlowFuse%2Fdriver-k8s","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlowFuse%2Fdriver-k8s/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlowFuse%2Fdriver-k8s/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlowFuse%2Fdriver-k8s/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FlowFuse","download_url":"https://codeload.github.com/FlowFuse/driver-k8s/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252703345,"owners_count":21790872,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T19:11:17.430Z","updated_at":"2026-04-09T11:15:13.992Z","avatar_url":"https://github.com/FlowFuse.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FlowForge Docker Container Driver\n\nFlowForge driver to create projects as docker containers\n\n## Configuration\n\nIn the `flowforge.yml` file\n\n```yaml\n...\ndriver:\n  type: kubernetes\n  options:\n    registry: containers.flowforge.com\n    projectSelector:\n      role: projects\n    projectNamespace: flowforge\n    projectLabels:\n      environment: production\n      team: alpha\n    cloudProvider: aws\n    privateCA: ff-ca-certs\n    certManagerIssuer: lets-encrypt\n    k8sDelay: 1000\n    k8sRetries: 10\n    logPassthrough: true\n    customHostname:\n      enabled: true\n      cnameTarget: custom-loadbalancer.example.com\n      certManagerIssuer: lets-encrypt\n      ingressClass: custom-nginx\n    storage:\n      enabled: true\n      storageClass: nfs-storage\n      accessMode: ReadWriteMany\n      size: 5Gi\n    podSecurityContext:\n      runAsUser: 1000\n      runAsGroup: 1000\n      fsGroup: 1000\n```\n\n- `registry` is the Docker Registry to load Stack Containers from\n- `projectNamespace` the namespace Project pods should run in\n- `projectSelector` a list of labels that should be used to select which nodes Project Pods\nshould run on\n- `projectLabels` a list of custom labels that should be applied to all resources created for Projects (Pods, Services, Ingresses, PVCs)\n- `projectProbes` optional configuration for liveness, readiness and startup probes for project containers\n- `projectProbes.livenessProbe` custom liveness probe configuration (default not set)\n- `projectProbes.readinessProbe` custom readiness probe configuration (default not set)\n- `projectProbes.startupProbe` custom startup probe configuration (default not set)\n- `cloudProvider` normally not set, but can be `aws` This triggers the adding of\nAWS EKS specific annotation for ALB Ingress. or `openshift` to allow running on OpenShift (Enterprise license only)\n- `privateCA` name of ConfigMap holding PEM CA Cert Bundle (file name `certs.pem`) Optional\n- `certManagerIssuer` name of the ClusterIssuer to use to create HTTPS certs for instances (default not set)\n- `k8sRetries` how many times to retry actions against the K8s API\n- `k8sDelay` how long to wait (in ms) between retries to the K8s API\n- `logPassthrough` Have Node-RED logs printed in JSON format to container stdout (default false)\n- `customHostname` Settings linked to allowing instances to have a second hostname\n- `customHostname.enabled` (default false)\n- `customHostname.cnameTarget` The hostname users should configure their DNS entries to point at. Required. (default not set)\n- `customHostname.certManagerIssuer` Name of the Cluster issuer to use to create HTTPS certs for the custom hostname (default not set)\n- `customHostname.ingressClass` Name of the IngressClass to use to expose the custom hostname (default not set)\n- `storage.enabled` Mounts a persistent volume on `/data/storage` (default false)\n- `storage.storageClass` Name of StorageClass to use to allocate the volume (default not set)\n- `storage.storageClassEFSTag` Used instead of `storage.storageClass` when needing to shard across multiple EFS file systems (default not set)\n- `storage.accessMode` PersistentVolumeClaim access mode. Allowed values: `ReadWriteOnce`, `ReadWriteMany`, `ReadWriteOncePod` (default `ReadWriteMany`). Important note: selecting different access mode affects the High Availability capabilities of Hosted Instances (projects). Change this parameter with caution and refer to Kubernetes documentation for details on access modes and their implications.\n- `storage.size` Size of the volume to request (default not set)\n- `podSecurityContext` Settings linked to the [security context of the pod](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)\n- `containerSecurityContext` Settings linked to the [security context of the container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)\n- `service.type` Type of service to create for the editor (allowed `ClusterIP` or `NodePort`, default `ClusterIP`)\n- `schedulerName` name of the custom Kubernetes scheduler to use for Project Pods and MQTT agent Pods (default not set, uses default Kubernetes scheduler)\n\nExpects to pick up K8s credentials from the environment\n\n### Configuration via environment variables\n\nNext variables are read from flowforge process environment in runtime:\n\n* `INGRESS_CLASS_NAME` - `Ingress` class name for editor instances\n* `INGRESS_ANNOTATIONS` - `Ingress` annotations for editor instances as JSON-encoded object\n* `DEPLOYMENT_TOLERATIONS` - Editor `Deployment` tolerations as JSON-encoded object\n* `EDITOR_SERVICE_ACCOUNT` - Editor service account. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflowfuse%2Fdriver-k8s","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflowfuse%2Fdriver-k8s","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflowfuse%2Fdriver-k8s/lists"}