diff --git a/mininet/.helmignore b/mininet/.helmignore
new file mode 100644
index 0000000..f0c1319
--- /dev/null
+++ b/mininet/.helmignore
@@ -0,0 +1,21 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
diff --git a/mininet/Chart.yaml b/mininet/Chart.yaml
new file mode 100644
index 0000000..c35d2e3
--- /dev/null
+++ b/mininet/Chart.yaml
@@ -0,0 +1,20 @@
+---
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: v1
+appVersion: "1.0"
+description: A Helm chart for Mininet
+name: mininet
+version: 0.1.0
diff --git a/mininet/templates/_helpers.tpl b/mininet/templates/_helpers.tpl
new file mode 100644
index 0000000..31212af
--- /dev/null
+++ b/mininet/templates/_helpers.tpl
@@ -0,0 +1,48 @@
+{{- /*
+ Copyright 2017-present Open Networking Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */ -}}
+
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "mininet.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "mininet.fullname" -}}
+{{- if .Values.fullnameOverride -}}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .Chart.Name .Values.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "mininet.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
diff --git a/mininet/templates/configmap.yaml b/mininet/templates/configmap.yaml
new file mode 100644
index 0000000..2f0833e
--- /dev/null
+++ b/mininet/templates/configmap.yaml
@@ -0,0 +1,21 @@
+---
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ .Release.Name }}-configmap
+data:
+{{ (.Files.Glob "toposcripts/*").AsConfig | indent 2 }}
\ No newline at end of file
diff --git a/mininet/templates/deployment.yaml b/mininet/templates/deployment.yaml
new file mode 100644
index 0000000..f75041e
--- /dev/null
+++ b/mininet/templates/deployment.yaml
@@ -0,0 +1,71 @@
+---
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: apps/v1beta2
+kind: Deployment
+metadata:
+  name: {{ template "mininet.fullname" . }}
+  labels:
+    app: {{ template "mininet.name" . }}
+    chart: {{ template "mininet.chart" . }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  selector:
+    matchLabels:
+      app: {{ template "mininet.name" . }}
+      release: {{ .Release.Name }}
+  template:
+    metadata:
+      labels:
+        app: {{ template "mininet.name" . }}
+        release: {{ .Release.Name }}
+    {{- with .Values.annotations }}
+      annotations:
+{{ toYaml . | indent 8 }}
+    {{- end }}
+    spec:
+      containers:
+        - name: {{ .Chart.Name }}
+          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
+          imagePullPolicy: {{ .Values.image.pullPolicy }}
+          args: ["/toposcripts/topo.py"]
+          stdin: true
+          tty: true
+          securityContext:
+            privileged: true
+          volumeMounts:
+          - name: "topo-config"
+            mountPath: "/toposcripts"
+          resources:
+{{ toYaml .Values.resources | indent 12 }}
+      volumes:
+        - name: "topo-config"
+          configMap:
+            name: "{{ .Release.Name }}-configmap"
+            defaultMode: 0755
+    {{- with .Values.nodeSelector }}
+      nodeSelector:
+{{ toYaml . | indent 8 }}
+    {{- end }}
+    {{- with .Values.affinity }}
+      affinity:
+{{ toYaml . | indent 8 }}
+    {{- end }}
+    {{- with .Values.tolerations }}
+      tolerations:
+{{ toYaml . | indent 8 }}
+    {{- end }}
diff --git a/mininet/toposcripts/topo.py b/mininet/toposcripts/topo.py
new file mode 100644
index 0000000..7dd6070
--- /dev/null
+++ b/mininet/toposcripts/topo.py
@@ -0,0 +1,63 @@
+#!/usr/bin/python
+
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import re
+import sys
+import socket
+
+from mininet.cli import CLI
+from mininet.log import setLogLevel, info, error
+from mininet.net import Mininet
+from mininet.link import Intf
+from mininet.topo import SingleSwitchTopo
+from mininet.node import OVSSwitch, RemoteController
+from functools import partial
+from mininet.util import quietRun
+
+if __name__ == '__main__':
+    setLogLevel( 'info' )
+
+    info( '*** Installing required software' )
+    print quietRun( 'apt-get update' )
+    print quietRun( 'apt-get -y install dnsmasq ethtool' )
+
+    info( '*** Creating network\n' )
+    OVSSwitch13 = partial( OVSSwitch, protocols='OpenFlow13' )
+    controllerIp = socket.gethostbyname( 'onos-openflow.default.svc.cluster.local' )
+    net = Mininet( topo=SingleSwitchTopo(1),
+                   controller=lambda name: RemoteController( name, ip=controllerIp, port=6653 ),
+                   switch=OVSSwitch13
+    )
+
+    switch = net.switches[ 0 ]
+    info( '*** Adding hardware interface eth1 to switch', switch.name, '\n' )
+    _intf = Intf( 'eth1', node=switch )
+
+    info( '*** Turning off checksum offloading for eth1\n' )
+    print quietRun( 'ethtool -K eth1 tx off rx off' )
+
+    bgphost = net.hosts [ 0 ]
+    info( '*** Adding VLAN interface to host\n')
+    bgphost.cmd( 'ip link add link h1-eth0 name h1-eth0.222 type vlan id 222' )
+    bgphost.cmd( 'ip link add link h1-eth0.222 name h1-eth0.222.111 type vlan id 111' )
+    bgphost.cmd( 'ifconfig h1-eth0.222 up' )
+    bgphost.cmd( 'ifconfig h1-eth0.222.111 up' )
+    bgphost.cmd( 'ifconfig h1-eth0.222.111 172.18.0.10/24' )
+    bgphost.cmd( 'dnsmasq --dhcp-range=172.18.0.50,172.18.0.150,12h' )
+
+    net.start()
+    CLI( net )
+    net.stop()
diff --git a/mininet/values.yaml b/mininet/values.yaml
new file mode 100644
index 0000000..68d914d
--- /dev/null
+++ b/mininet/values.yaml
@@ -0,0 +1,49 @@
+---
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Put Mininet topology scripts in the toposcripts directory.
+# They will be mounted inside the container in /toposcripts
+
+replicaCount: 1
+
+nameOverride: ""
+fullnameOverride: ""
+
+image:
+  repository: ciena/mininet
+  tag: latest
+  pullPolicy: IfNotPresent
+
+resources: {}
+
+nodeSelector: {}
+
+tolerations: []
+
+affinity:
+  podAffinity:
+    preferredDuringSchedulingIgnoredDuringExecution:
+    - weight: 100
+      podAffinityTerm:
+        labelSelector:
+          matchExpressions:
+          - key: app
+            operator: In
+            values:
+            - olt
+        topologyKey: kubernetes.io/hostname
+
+annotations:
+  cni: "calico,pon1"
\ No newline at end of file
