ROBOX:Upload robox scripts for IEC release 6
[iec.git] / src / use_cases / robox / deploy_robox.sh
diff --git a/src/use_cases/robox/deploy_robox.sh b/src/use_cases/robox/deploy_robox.sh
new file mode 100644 (file)
index 0000000..e46e194
--- /dev/null
@@ -0,0 +1,154 @@
+#!/bin/bash
+
+INSTANCE_NUM=4
+ROBOX_TEMPLATE_YAML=$(cat <<EOF
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: anbox
+spec:
+  selector:
+    matchLabels:
+      app: android
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: android
+    spec:
+      containers:
+      - name: android
+        image: android:robox
+        resources:
+          requests:
+            cpu: 1
+            memory: 1024Mi
+          limits:
+            cpu: 4
+            memory: 4096Mi
+        env:
+        - name: ANDROID_NAME
+          value: "xbox"
+        - name: PATH
+          value: "/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin"
+        - name: ANDROID_ROOT
+          value: "/"
+        - name: ANDROID_DATA
+          value: "/data"
+        - name: DOWNLOAD_CACHE
+          value: "/data/cache"
+        - name: LOGNAME
+          value: "shell"
+        - name: HOME
+          value: "/"
+        - name: TERM
+          value: "screen-256color"
+        - name: SHELL
+          value: "/system/bin/sh"
+        - name: ANDROID_BOOTLOGO
+          value: "1"
+        - name: TMPDIR
+          value: "/data/local/tmp"
+        - name: ANDROID_ASSETS
+          value: "/system/app"
+        - name: BOOTCLASSPATH
+          value: "/system/framework/core-oj.jar:/system/framework/core-libart.jar:/system/framework/conscrypt.jar:/system/framework/okhttp.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/apache-xml.jar:/system/framework/org.apache.http.legacy.boot.jar"
+        - name: ASEC_MOUNTPOINT
+          value: "/mnt/asec"
+        - name: ANDROID_SOCKET_adbd
+          value: "7"
+        - name: HOSTNAME
+          value: "arm64"
+        - name: EXTERNAL_STORAGE
+          value: "/sdcard"
+        - name: ANDROID_STORAGE
+          value: "/storage"
+        - name: USER
+          value: "shell"
+        - name: SYSTEMSERVERCLASSPATH
+          value: "/system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/wifi-service.jar"
+        imagePullPolicy: Never
+        command: ["/system/bin/sh", "-ce", "/anbox-init.sh"]
+        ports:
+        - containerPort: 5555
+        securityContext:
+          privileged: true
+          #capabilities:
+          #  add: [ "SYS_ADMIN", "NET_ADMIN", "SYS_MODULE", "SYS_NICE", "SYS_TIME", "SYS_TTY_CONFIG", "NET_BROADCAST", "IPC_LOCK", "SYS_RESOURCE" ]
+        volumeMounts:
+        - mountPath: /dev/binder:rw
+          name: volume-binder
+        - mountPath: /dev/ashmem:rw
+          name: volume-ashmem
+        - mountPath: /dev/fuse:rw
+          name: volume-fuse
+        - mountPath: /dev/qemu_pipe
+          name: volume-qemupipe
+        - mountPath: /dev/anbox_audio:rw
+          name: volume-anboxaudio
+        - mountPath: /dev/anbox_bridge:rw
+          name: volume-anboxbridge
+        - mountPath: /dev/input/event0:rw
+          name: volume-event0
+        - mountPath: /dev/input/event1:rw
+          name: volume-event1
+        - mountPath: /cache:rw
+          name: volume-cache
+        - mountPath: /data:rw
+          name: volume-data
+      volumes:
+      - name: volume-binder
+        hostPath:
+          path: /dev/binder${INSTANCE_NUM}
+      - name: volume-ashmem
+        hostPath:
+          path: /dev/ashmem
+      - name: volume-fuse
+        hostPath:
+          path: /dev/fuse
+      - name: volume-qemupipe
+        hostPath:
+          path: /run/user/1000/anbox/${INSTANCE_NUM}/sockets/qemu_pipe
+      - name: volume-anboxaudio
+        hostPath:
+          path: /run/user/1000/anbox/${INSTANCE_NUM}/sockets/anbox_audio
+      - name: volume-anboxbridge
+        hostPath:
+          path: /run/user/1000/anbox/${INSTANCE_NUM}/sockets/anbox_bridge
+      - name: volume-event0
+        hostPath:
+          path: /run/user/1000/anbox/${INSTANCE_NUM}/input/event0
+      - name: volume-event1
+        hostPath:
+          path: /run/user/1000/anbox/${INSTANCE_NUM}/input/event1
+      - name: volume-cache
+        hostPath:
+          path: /home/robox/anbox-data/${INSTANCE_NUM}/cache
+      - name: volume-data
+        hostPath:
+          path: /home/robox/anbox-data/${INSTANCE_NUM}/data
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: anbox
+spec:
+  selector:
+    app: android
+  ports:
+  - protocol: TCP
+    port: 8888
+    targetPort: 5555
+    nodePort: 31000
+  type: NodePort
+EOF
+)
+
+if [ "$1" = "a" ]; then
+echo "$ROBOX_TEMPLATE_YAML" | kubectl apply -f - > /dev/null
+else
+echo "$ROBOX_TEMPLATE_YAML" | kubectl delete -f - > /dev/null
+fi
+echo $?
+sleep 2
+watch -n 1 kubectl get node,pods,svc -o wide -n kube-system -n default