Operator
The Operator (v3.8.0) runs on Kubernetes and reconciles ControlPlane custom resources. When you apply or update a ControlPlane CR, the Operator creates and maintains Controller, Router, NATS, Services, Ingresses, Secrets, and related cluster objects.
The Operator does not deploy application workloads. After the Control Plane is up, deploy applications with potctl, the REST API, EdgeOps Console, or the ioFog Go SDK.
Version and image
| Item | Value |
|---|---|
| Operator release | v3.8.0 |
| Default image | ghcr.io/datasance/operator:3.8.0 |
| Kubernetes | 1.22+ |
| CRD scope | ControlPlane only (Application CRD removed in v3.8) |
Override the image in spec.images.operator on your ControlPlane CR. See Control Plane YAML.
Greenfield release
Platform train v3.8.0 is a greenfield release. Uninstall the legacy operator and delete v3.7 CRDs before installing v3.8. Rewrite ControlPlane manifests for embedded or external OIDC. Redeploy application workloads with potctl or the Go SDK.
See Migrating to v3.8.0 for the full checklist.
Removed in v3.8:
- Application CRD and reconciler
- Keycloak auth fields on ControlPlane
- ECN Viewer-related Controller fields
Helm install (optional)
Charts publish from this repository to each mirror's gh-pages index. The legacy standalone repo Datasance/helm is deprecated.
helm repo add iofog-operator https://datasance.github.io/iofog-operator
helm repo update
helm install iofog-operator iofog-operator/iofog-operator \
--namespace iofog-system --create-namespace \
--version 3.8.0
For a full Control Plane install with embedded OIDC, replicas, and database settings, see Kubernetes Helm deployment.
Manifest tarballs
GitHub Releases attach flavor-specific tarballs: manifests-iofog-<version>.tar.gz and manifests-datasance-<version>.tar.gz.
VERSION=3.8.0
FLAVOR=datasance
curl -fsSL -o manifests.tar.gz \
"https://github.com/eclipse-iofog/iofog-operator/releases/download/v${VERSION}/manifests-${FLAVOR}-${VERSION}.tar.gz"
tar xzf manifests.tar.gz
kubectl apply -f "manifests-${FLAVOR}-${VERSION}/crds/"
kubectl apply -f "manifests-${FLAVOR}-${VERSION}/operator/install.yaml"
Adapt and apply the sample ControlPlane from the tarball for your cluster.
OLM
OLM bundles publish as container images (operator-bundle:<version>). Package iofog-operator, channel stable.
VERSION=3.8.0
operator-sdk run bundle "ghcr.io/datasance/operator-bundle:${VERSION}" \
--namespace iofog-system --timeout 5m
What the Operator manages
When you create a ControlPlane CR, the Operator:
- Deploys Controller pods with auth, database, and console settings from
spec - Deploys Router and NATS when enabled in the spec
- Creates Services and optional Ingresses for external access
- Rotates Secrets when auth or database credentials change
- Restarts Controller pods when auth configuration changes
Example fragment (full schema in Control Plane YAML):
spec:
images:
operator: ghcr.io/datasance/operator:3.8.0
controller: ghcr.io/datasance/controller:v3.8.0
router: ghcr.io/datasance/router:3.8.0
nats: ghcr.io/datasance/nats:2.14.3
Application workloads
v3.8 removed the Application CRD from the Operator. Deploy and update applications outside the Operator:
- potctl
deploywith Application and Microservice YAML - Controller REST API or EdgeOps Console
- ioFog Go SDK
pkg/apps
The Operator watches ControlPlane resources only.
Related docs
| Document | Description |
|---|---|
| Kubernetes Helm deployment | End-to-end Control Plane install |
| Control Plane YAML | CR fields, replicas, images, NATS, ingress |
| Embedded OIDC | Default auth mode for greenfield installs |
| Architecture | How Operator fits in the ECN |
Source: Datasance/iofog-operator (mirror of eclipse-iofog/iofog-operator).