From SCADA Giants to Cloud Simplicity: Running Ignition on Civo in Minutes

Back when I was at Honeywell, I had the privilege of being involved in some massive projects — including OpenVEP and Experion Elevate SCADA. These were enterprise-grade control systems that took entire teams months to scope, configure, deploy, and integrate. I remember the time, cost, and sheer coordination it took to stand something up in a data center.

Fast forward to today, and I’m blown away that I can spin up a demo SCADA environment in just minutes using containers and a Kubernetes cluster on Civo. Of course, this is just for demonstration purposes — a production deployment would require persistent volumes and hardened security — but the fact that it’s even possible this quickly is remarkable.

This post walks you through how I deployed Inductive Automation’s Ignition platform to a Civo Kubernetes cluster using nothing more than the CLI, a few YAML files, and Docker Hub.

Step 1: Create the Kubernetes Cluster

I used the Civo web dashboard to create a new Kubernetes cluster. The process is straightforward:

  • Choose your cluster name, size, and node count (I used 3 nodes).
  • Under networking, select “default” or create a new network.
  • Let Civo auto-create a firewall or configure one manually if needed.
  • Hit Create Cluster and within a few minutes, your cluster is ready.

Civo even gives you an estimated time to completion and notifies you when everything is live.

Step 2: Set Up the CLI

Although the web UI is great, I prefer using the command line — especially when scripting deployments.

To install the Civo CLI on Windows:

choco install civo-cli

Once installed, link your CLI to your Civo account:

civo apikey save

You’ll need your API key, which you can find under Account Settings > Security in the Civo dashboard.

Step 3: Connect kubectl to Your Cluster

Get the kubeconfig for your cluster with:

civo kubernetes config <your_cluster_id> –save

This will merge the config with your existing kubeconfig file, allowing you to run:

kubectl config use-context ignitiondemo
kubectl get nodes

Step 4: Deploy Ignition

Ignition is available on Docker Hub under inductiveautomation/ignition. For this demo, I used version 8.1.41.

a) Create a Namespace

Save this to IgnitionNS.yaml:

Apply it with:

apiVersion: v1
kind: Namespace
metadata:
name: ignition-demo

kubectl apply -f IgnitionNS.yaml

b) Create the Deployment

Here’s the deployment YAML (IgnitionDeploy.yaml):

apiVersion: apps/v1
kind: Deployment
metadata:
name: ignition
namespace: ignition-demo
spec:
replicas: 1
selector:
matchLabels:
app: ignition
template:
metadata:
labels:
app: ignition
spec:
containers:
– name: ignition
image: inductiveautomation/ignition:8.1.41
ports:
– containerPort: 8088

Apply it with:

kubectl apply -f IgnitionDeploy.yaml

Step 5: Expose the Deployment

To make Ignition accessible externally, we’ll use a LoadBalancer service. Save this as IgnitionLB.yaml:

apiVersion: v1
kind: Service
metadata:
name: ignition-lb
namespace: ignition-demo
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 8088
protocol: TCP
selector:
app: ignition

Apply it:

kubectl apply -f IgnitionLB.yaml

To get the public IP:

kubectl get service ignition-lb -n ignition-demo

You’ll see something like:

NAME           TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE
ignition-lb LoadBalancer 10.43.194.211 212.2.247.184 80:32013/TCP 2m

Now you can access Ignition from your browser:
http://212.2.247.184 (This demo is no longer online)

Final Thoughts

This deployment is meant for demonstration only. In a real production environment, you’d want:

  • Persistent storage for project and tag data
  • Secrets management for credentials
  • Network security policies
  • Backup and monitoring tools

But still — seeing Ignition up and running on a public IP in under 30 minutes is impressive, especially when I think about the months-long projects of the past.

Civo, containers, and Kubernetes are reshaping the landscape. For those of us with a background in traditional industrial automation, it’s an exciting time to bridge the old with the new.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top