FME Flow: 2026.2
Deploying to Amazon Elastic Kubernetes Service Using Elastic File System
- Launch the Cluster and Connect
- NodeAutoScalingGroupMinSize: 3
- NodeAutoScalingGroupDesiredSize: 3
- NodeAutoScalingGroupMaxSize: 4
- NodeInstanceType: t3.large
- Disk size: 40 GB
- Install Helm and an NGINX Ingress Controller
- Check if Helm is already installed. Run:
- Give Helm deploy permissions.
- Install the official NGINX Ingress Controller:
- Configure Shared Storage Using Amazon Elastic File System
- From the AWS Management Console, navigate to EFS.
- Click Create file system.
- Select the new VPC created for the Kubernetes cluster.
- Click Customize.
- Add any tags as desired. Everything can be left as default. Click Next.
- The subnets should change to the EKS subnets. Add the EKS Node security group to the list of security groups so that our nodes have permissions to mount them.
- Click Next and then Create.
- Create Access Point. We recommend the following settings:
- Root directory path: /data/fmeflowdata
- POSIX user
- User ID: 1363
- Group ID: 1363
- Root directory creation permissions
- Owner user ID: 1363
- Owner group ID: 1363
- Permissions: 0755
- Install the Amazon EFS CSI Driver for your region.
-
To create the EFS storage class, save the following .yaml snippet and apply with kubectl:
- Create the persistent volume using the following yaml file as an example. You will need to replace the volumeHandle with your File system ID and Access point ID from the EFS.
- Add the Amazon EBS CSI driver add-on to your cluster.
- Deploy FME Flow
- Add the Safe Software Helm repository:
- Get the external IP or hostname of the NGINX Ingress Controller:
- Create a namespace in which to deploy. Run:
- Create a values.yaml file that will pass user-supplied parameter values into the Helm chart.
- (Optional) Update parameters in values.yaml.
- Install FME Flow.
- To access FME Flow after it deploys, invoke the external IP in your browser.Note If you are using the external IP address, and not a DNS, to access the deployment, you must update the URLs for each of the FME Flow Web Services to that address. To update, see Services.
To launch and connect to a cluster in Amazon Elastic Kubernetes Service (EKS), follow the instructions in the Getting Started with Amazon EKS documentation. You must configure some prerequisite resources such as an Amazon Virtual Private Cloud (VPC) and Identity and Access Management (IAM) role for the cluster.
To deploy an FME Flow to the cluster for test purposes, we recommend the following settings:
You can skip the step to "Launch a Guest Book Application."
helm version
If not installed, install Helm.
Run:
kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default
helm install nginx-ingress oci://ghcr.io/nginx/charts/nginx-ingress
For full installation options and prerequisites, see the NGINX Ingress Controller Helm installation guide.
To deploy FME Flow across multiple nodes, configure storage for the FME Flow System Share using Amazon Elastic File System (EFS).
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: efs-sc
provisioner: efs.csi.aws.com
parameters:
provisioningMode: efs-ap
fileSystemId: fs-<file-system-id>
directoryPerms: "700"
Replace <file-system-id> with the File System ID for your EFS.
apiVersion: v1
kind: PersistentVolume
metadata:
name: fmeflow-data
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: efs-sc
csi:
driver: efs.csi.aws.com
volumeHandle: fs-<file-system-id>::fsap-<access-point-id>
helm repo add safesoftware https://safesoftware.github.io/helm-charts/
kubectl get services nginx-ingress-nginx-ingress-controller
Note the value under "EXTERNAL-IP". You must set deployment.hostname to a DNS hostname; a raw IP address is not supported. Create a DNS record pointing to this external IP address and use that DNS name as deployment.hostname.
kubectl create namespace <namespace_name>
For example:
kubectl create namespace fmeflow
To get the default Helm chart values file, run:
helm show values <chart>
For example:
helm show values safesoftware/fmeflow
To write the values to a file:
helm show values safesoftware/fmeflow >> values.yaml
For more information on value files, see the Helm Docs.
A current list of supported parameters for FME Flow can be found on GitHub.
The following are parameters you may want to change in the values.yaml file:
|
Parameter |
Example or Possible Value |
Description |
|---|---|---|
| fmeflow.image.tag | 2024.0 | Set to the FME Flow major release version you want to deploy, such as 2024.0 or 2024.1. |
| fmeflow.engines[].name | “standard-group” | The name of the engine group. This can be changed, particularly if creating multiple engine groups. |
| fmeflow.engines[].engines | 2 | Controls the number of engine pods to start. |
| fmeflow.engines[].type | STANDARD | DYNAMIC | Controls the type of engine to start. |
| deployment.hostname | Set to a DNS hostname (for example, fmeflow.example.com). Do not set to a raw IP address. | |
| deployment.numCores | 2 | Starts two FME Flow Core pods for fault tolerance and load balancing. |
| deployment.useHostnameIngress | true | false | When true, traffic is only routed to FME Flow if the request hostname matches deployment.hostname. This must remain true when using the official NGINX Ingress Controller. Set to false only if using a different ingress controller that does not require hostname-based routing. |
| storage.fmeflow.class | efs-sc | Uses the EFS storage class set up previously. To verify the name, run kubectl get sc |
helm install <name> <chart> -f values.yaml -n <namespace>
For example:
helm install fmeflow safesoftware/fmeflow -f values.yaml -n fmeflow
If you make changes to the values.yaml file after FME Flow is installed (such as to scale FME Flow engines), use the helm upgrade command:
helm upgrade <name> <chart> -f values.yaml -n <namespace>
For example:
helm upgrade fmeflow safesoftware/fmeflow -f values.yaml -n fmeflow