diff --git a/docs/assets/scripts/developer/k3d-dev.sh b/docs/assets/scripts/developer/k3d-dev.sh
index 631b08ea39246350d81e46d7f246d5c44a2b398b..0523cd8878ed9af060a8325441bd554138358821 100755
--- a/docs/assets/scripts/developer/k3d-dev.sh
+++ b/docs/assets/scripts/developer/k3d-dev.sh
@@ -206,8 +206,46 @@ VolumeSize=120
 echo "Using AMI image id ${AMI_ID}"
 ImageId="${AMI_ID}"
 
+# Create userdata.txt
+cat << EOF > ~/aws/userdata.txt
+MIME-Version: 1.0
+Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="
+
+--==MYBOUNDARY==
+Content-Type: text/x-shellscript; charset="us-ascii"
+
+#!/bin/bash
+sudo -- bash -c 'sysctl -w vm.max_map_count=524288; \
+  echo "vm.max_map_count=524288" > /etc/sysctl.d/vm-max_map_count.conf; \
+  sysctl -w fs.nr_open=13181252; \
+  echo "fs.nr_open=13181252" > /etc/sysctl.d/fs-nr_open.conf; \
+  sysctl -w fs.file-max=13181250; \
+  echo "fs.file-max=13181250" > /etc/sysctl.d/fs-file-max.conf; \
+  echo "fs.inotify.max_user_instances=1024" > /etc/sysctl.d/fs-inotify-max_user_instances.conf; \
+  sysctl -w fs.inotify.max_user_instances=1024; \
+  echo "fs.inotify.max_user_watches=1048576" > /etc/sysctl.d/fs-inotify-max_user_watches.conf; \
+  sysctl -w fs.inotify.max_user_watches=1048576; \
+  echo "fs.may_detach_mounts=1" >> /etc/sysctl.d/fs-may_detach_mounts.conf; \
+  sysctl -w fs.may_detach_mounts=1; \
+  sysctl -p; \
+  echo "* soft nofile 13181250" >> /etc/security/limits.d/ulimits.conf; \
+  echo "* hard nofile 13181250" >> /etc/security/limits.d/ulimits.conf; \
+  echo "* soft nproc  13181250" >> /etc/security/limits.d/ulimits.conf; \
+  echo "* hard nproc  13181250" >> /etc/security/limits.d/ulimits.conf; \
+  modprobe br_netfilter; \
+  modprobe nf_nat_redirect; \
+  modprobe xt_REDIRECT; \
+  modprobe xt_owner; \
+  modprobe xt_statistic; \
+  echo "br_netfilter" >> /etc/modules-load.d/istio-iptables.conf; \
+  echo "nf_nat_redirect" >> /etc/modules-load.d/istio-iptables.conf; \
+  echo "xt_REDIRECT" >> /etc/modules-load.d/istio-iptables.conf; \
+  echo "xt_owner" >> /etc/modules-load.d/istio-iptables.conf; \
+  echo "xt_statistic" >> /etc/modules-load.d/istio-iptables.conf'
+EOF
+
 # Create the launch spec
-echo -n Creating launch_spec.json ...
+echo Creating launch_spec.json ...
 mkdir -p ~/aws
 ##notworking line.  "InstanceInitiatedShutdownBehavior":"Terminate",
 cat << EOF > ~/aws/launch_spec.json
@@ -225,54 +263,11 @@ cat << EOF > ~/aws/launch_spec.json
         "VolumeSize": ${VolumeSize}
       }
     }
-  ]
+  ],
+  "UserData": "$(base64 $HOME/aws/userdata.txt | tr -d \\n)"
 }
 EOF
 
-# TODO: can spot instances be created with userdata?
-# Create userdata.txt
-# https://aws.amazon.com/premiumsupport/knowledge-center/execute-user-data-ec2/
-cat << EOF > ~/aws/userdata.txt
-MIME-Version: 1.0
-Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="
-
---==MYBOUNDARY==
-Content-Type: text/x-shellscript; charset="us-ascii"
-
-#!/bin/bash
-sysctl -w vm.max_map_count=524288
-echo "vm.max_map_count=524288" > /etc/sysctl.d/vm-max_map_count.conf
-sysctl -w fs.nr_open=13181252
-echo "fs.nr_open=13181252" > /etc/sysctl.d/fs-nr_open.conf
-sysctl -w fs.file-max=13181250
-echo "fs.file-max=13181250" > /etc/sysctl.d/fs-file-max.conf
-echo "fs.inotify.max_user_instances=1024" > /etc/sysctl.d/fs-inotify-max_user_instances.conf
-sysctl -w fs.inotify.max_user_instances=1024
-echo "fs.inotify.max_user_watches=1048576" > /etc/sysctl.d/fs-inotify-max_user_watches.conf
-sysctl -w fs.inotify.max_user_watches=1048576
-echo "fs.may_detach_mounts=1" >> /etc/sysctl.d/fs-may_detach_mounts.conf
-sysctl -w fs.may_detach_mounts=1
-sysctl -p
-ulimit -n 131072
-ulimit -u 8192
-# ulimits/modprobes for Istio
-echo "* soft nofile 13181250" >> /etc/security/limits.d/ulimits.conf
-echo "* hard nofile 13181250" >> /etc/security/limits.d/ulimits.conf
-echo "* soft nproc  13181250" >> /etc/security/limits.d/ulimits.conf
-echo "* hard nproc  13181250" >> /etc/security/limits.d/ulimits.conf
-modprobe br_netfilter 
-modprobe nf_nat_redirect
-modprobe xt_REDIRECT
-modprobe xt_owner
-modprobe xt_statistic
-echo "br_netfilter" >> /etc/modules-load.d/istio-iptables.conf
-echo "nf_nat_redirect" >> /etc/modules-load.d/istio-iptables.conf
-echo "xt_REDIRECT" >> /etc/modules-load.d/istio-iptables.conf
-echo "xt_owner" >> /etc/modules-load.d/istio-iptables.conf
-echo "xt_statistic" >> /etc/modules-load.d/istio-iptables.conf
-EOF
-
-
 #### Request a Spot Instance
 # Location of your private SSH key created during setup
 PEM=~/.ssh/${KeyName}.pem