From c1143bc59549d3028af774a54ba38248f50c7463 Mon Sep 17 00:00:00 2001 From: Eugenio Marzo Date: Sat, 26 Dec 2020 12:44:43 +0100 Subject: [PATCH] prepare new release --- Dockerfile | 1 + assets/press.animationset | 3 + assets/start-k3s-pressed.png | Bin 0 -> 3897 bytes assets/start-k3s.png | Bin 0 -> 5925 bytes assets/start-pressed.png | Bin 0 -> 4210 bytes assets/start.png | Bin 0 -> 957 bytes assets/start_chaos.atlas | 30 +++++ assets/start_k3s.atlas | 30 +++++ input/game.input_binding | 8 ++ kubeinvaders_cluster/Vagrantfile | 0 main/bullet.script | 2 +- main/main.collection | 212 ++++++++++++++++++++++++++++++- main/menu.gui | 2 + main/mymodules/node_api.lua | 11 ++ main/mymodules/press_play.lua | 17 +++ main/spaceship.script | 51 +++++--- main/start.go | 80 ++++++++++++ main/start_chaos.script | 40 ++++++ main/start_k3s.script | 27 ++++ main/untitled.go | 1 + nginx/KubeInvaders_dev.templ | 25 ++++ scripts/configure_kubeinv.sh | 50 ++++++++ scripts/test_k8s_connection.sh | 4 + temporary_hack.sh | 6 +- temporary_hack_local.sh | 12 ++ 25 files changed, 588 insertions(+), 24 deletions(-) create mode 100644 assets/press.animationset create mode 100644 assets/start-k3s-pressed.png create mode 100644 assets/start-k3s.png create mode 100644 assets/start-pressed.png create mode 100644 assets/start.png create mode 100644 assets/start_chaos.atlas create mode 100644 assets/start_k3s.atlas create mode 100644 kubeinvaders_cluster/Vagrantfile create mode 100644 main/menu.gui create mode 100644 main/mymodules/node_api.lua create mode 100644 main/mymodules/press_play.lua create mode 100644 main/start.go create mode 100644 main/start_chaos.script create mode 100644 main/start_k3s.script create mode 100644 nginx/KubeInvaders_dev.templ create mode 100644 scripts/configure_kubeinv.sh create mode 100644 scripts/test_k8s_connection.sh create mode 100644 temporary_hack_local.sh diff --git a/Dockerfile b/Dockerfile index d126419..ae271ec 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,6 +3,7 @@ COPY ./js-web/KubeInvaders /var/www/html RUN sed -i.bak 's/^user/#user/' /etc/nginx/nginx.conf RUN sed -i.bak 's/listen\(.*\)80;/listen 8081;/' /etc/nginx/conf.d/default.conf COPY nginx/KubeInvaders.templ /etc/nginx/conf.d/KubeInvaders.templ +COPY nginx/KubeInvaders_dev.templ /etc/nginx/conf.d/KubeInvaders_dev.templ RUN chmod g+rwx /var/cache/nginx /var/run /var/log/nginx /var/www/html /etc/nginx/conf.d/KubeInvaders.templ /etc/nginx/conf.d EXPOSE 8080 COPY ./temporary_hack.sh / diff --git a/assets/press.animationset b/assets/press.animationset new file mode 100644 index 0000000..6bb6738 --- /dev/null +++ b/assets/press.animationset @@ -0,0 +1,3 @@ +animations { + animation: "/assets/press.animationset" +} diff --git a/assets/start-k3s-pressed.png b/assets/start-k3s-pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..5888901d2bdf4ff5ed540f47f5fdfac099af7ed6 GIT binary patch literal 3897 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 LX3%o*;_mKHthl>7#fxj9rBD`kceheti)^{P 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 WWs?7$PWJOw0_35}(sdA%(EkG4kO&L_ literal 0 HcmV?d00001 diff --git a/assets/start-pressed.png b/assets/start-pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b5e0117e51715e834f82f8103a0478183f0fc7 GIT binary patch literal 4210 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 literal 0 HcmV?d00001 diff --git a/assets/start.png b/assets/start.png new file mode 100644 index 0000000000000000000000000000000000000000..8a516910cefa4d307a782ccea6eda9f1d5b037f1 GIT binary patch literal 957 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!Q#jawqzxnQ0iZxjrn7T^r?ay{K~a8MW=<*t zgT}<#iMAex9b}HiM=uT1;(M#GXvRXTNCDBpD_SB8omPlOl^X2)!ad7GMN_Y@Df{5T z{-dj!yEm`nTi2xUgYnUm7fW6!ss7W~+|u#!!4CQN?`+@QWBljVx-#v$#e%G96aCa$ za`Hks_9^vnI7u9vaKxw9PbBz*O#Jr`AHV9I+q~!eU(2egdrmUUcd$8Ka#-n}!n}K1 zO3wX05*Ri~!)85?KPO6WJ~cn*+WyzZI4kAS=Ockh3vV1OV&6Pzp^(4eagor) zHTBn0TR)4XZw*RbTm4DA?encuM%Od>lsa8?99tM9O{WAlwpy%}(p0;&W&Vc`{1$Z+ zV~lp5N_Z0CAgZNuoc|yD{@teBlZEqwEEr4n-}rW%L*NeUtkT>6?6$pq#wk$2wr>^#?R-+Dvv!gk)6nC+&O{5$S2{+eHMa)OMe!{vAlhWF`Td@U7xfk`@ zqL#tvO6Vkw#v?kRiUeSA0X+`WIcmtVbSPg_y6=tAbrh zNO2Z;L>4nJa0`PlBg3pY5H=O_9r~TLIye}iKo4QLXst}5hc#~xw)x%B@E6* zsfi`2DGKG8B^e6tp1uL$jeO$3=$`87;uunK>+RjWe1{Z78ZLIf{Jr0ZFOQc~(LuB5 z+_GkSp7;-4X0ClQ4AMU$m>f1Ruy70LG)&*!^?jMgG`5IUA6gg4iak(PY)D{iVpWJ> zXkz6M1F|{9z-)yGFdL7gPkCfhBUkvUx0k9|-`)DWe&3?+Z?0ee{Ubl#{>=u4gG>TC z4`R|H{IljRyp#Xl%sF%J%eVjPHXa6w1KpBlcsOa!#pesoY}s&_iG>>|Qg>#FVdQ&MBb@01tI}m;e9( literal 0 HcmV?d00001 diff --git a/assets/start_chaos.atlas b/assets/start_chaos.atlas new file mode 100644 index 0000000..301d1de --- /dev/null +++ b/assets/start_chaos.atlas @@ -0,0 +1,30 @@ +images { + image: "/assets/start.png" + sprite_trim_mode: SPRITE_TRIM_MODE_OFF +} +animations { + id: "press" + images { + image: "/assets/start-pressed.png" + sprite_trim_mode: SPRITE_TRIM_MODE_OFF + } + images { + image: "/assets/start.png" + sprite_trim_mode: SPRITE_TRIM_MODE_OFF + } + images { + image: "/assets/start-pressed.png" + sprite_trim_mode: SPRITE_TRIM_MODE_OFF + } + images { + image: "/assets/start.png" + sprite_trim_mode: SPRITE_TRIM_MODE_OFF + } + playback: PLAYBACK_ONCE_FORWARD + fps: 20 + flip_horizontal: 0 + flip_vertical: 0 +} +margin: 1 +extrude_borders: 2 +inner_padding: 0 diff --git a/assets/start_k3s.atlas b/assets/start_k3s.atlas new file mode 100644 index 0000000..863a45d --- /dev/null +++ b/assets/start_k3s.atlas @@ -0,0 +1,30 @@ +images { + image: "/assets/start-k3s.png" + sprite_trim_mode: SPRITE_TRIM_MODE_OFF +} +animations { + id: "New press" + images { + image: "/assets/start-k3s-pressed.png" + sprite_trim_mode: SPRITE_TRIM_MODE_OFF + } + images { + image: "/assets/start-k3s.png" + sprite_trim_mode: SPRITE_TRIM_MODE_OFF + } + images { + image: "/assets/start-k3s-pressed.png" + sprite_trim_mode: SPRITE_TRIM_MODE_OFF + } + images { + image: "/assets/start-k3s.png" + sprite_trim_mode: SPRITE_TRIM_MODE_OFF + } + playback: PLAYBACK_LOOP_FORWARD + fps: 40 + flip_horizontal: 0 + flip_vertical: 0 +} +margin: 0 +extrude_borders: 2 +inner_padding: 0 diff --git a/input/game.input_binding b/input/game.input_binding index 42c40e3..c15cf39 100644 --- a/input/game.input_binding +++ b/input/game.input_binding @@ -46,10 +46,18 @@ key_trigger { input: KEY_R action: "refresh_pod_log" } +key_trigger { + input: KEY_S + action: "stop" +} mouse_trigger { input: MOUSE_BUTTON_1 action: "click" } +touch_trigger { + input: TOUCH_MULTI + action: "touch" +} text_trigger { input: TEXT action: "type" diff --git a/kubeinvaders_cluster/Vagrantfile b/kubeinvaders_cluster/Vagrantfile new file mode 100644 index 0000000..e69de29 diff --git a/main/bullet.script b/main/bullet.script index b9cb76d..b06b365 100644 --- a/main/bullet.script +++ b/main/bullet.script @@ -24,9 +24,9 @@ function on_message(self, message_id, message, sender) print ("on_message] position of pod to be deleted is " .. old_pos) current_pods[i] = { id = value["id"] , color = "red", collision = true, old_position = old_pos, pod_name = value["pod_name"] } go.delete(value["id"]) - go.delete() end end + go.delete() end print "[on_message] end of on_message function" end \ No newline at end of file diff --git a/main/main.collection b/main/main.collection index 192203e..f46cfc4 100644 --- a/main/main.collection +++ b/main/main.collection @@ -45,8 +45,9 @@ embedded_instances { "mass: 0.0\\n" "friction: 0.1\\n" "restitution: 0.5\\n" - "group: \\\"bullet\\\"\\n" + "group: \\\"spaceship\\\"\\n" "mask: \\\"pod\\\"\\n" + "mask: \\\"bullet\\\"\\n" "embedded_collision_shape {\\n" " shapes {\\n" " shape_type: TYPE_SPHERE\\n" @@ -64,7 +65,7 @@ embedded_instances { " index: 0\\n" " count: 1\\n" " }\\n" - " data: 15.0\\n" + " data: 50.0\\n" "}\\n" "linear_damping: 0.0\\n" "angular_damping: 0.0\\n" @@ -205,6 +206,7 @@ embedded_instances { "restitution: 0.5\\n" "group: \\\"pod\\\"\\n" "mask: \\\"bullet\\\"\\n" + "mask: \\\"spaceship\\\"\\n" "embedded_collision_shape {\\n" " shapes {\\n" " shape_type: TYPE_SPHERE\\n" @@ -523,3 +525,209 @@ embedded_instances { z: 1.0 } } +embedded_instances { + id: "start_chaos" + data: "components {\n" + " id: \"start_chaos\"\n" + " component: \"/main/start_chaos.script\"\n" + " position {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " }\n" + " rotation {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " w: 1.0\n" + " }\n" + "}\n" + "embedded_components {\n" + " id: \"sprite\"\n" + " type: \"sprite\"\n" + " data: \"tile_set: \\\"/assets/start_chaos.atlas\\\"\\n" + "default_animation: \\\"start\\\"\\n" + "material: \\\"/builtins/materials/sprite.material\\\"\\n" + "blend_mode: BLEND_MODE_ALPHA\\n" + "\"\n" + " position {\n" + " x: 600.0\n" + " y: 725.0\n" + " z: 0.0\n" + " }\n" + " rotation {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " w: 1.0\n" + " }\n" + "}\n" + "embedded_components {\n" + " id: \"collisionobject\"\n" + " type: \"collisionobject\"\n" + " data: \"collision_shape: \\\"\\\"\\n" + "type: COLLISION_OBJECT_TYPE_KINEMATIC\\n" + "mass: 0.0\\n" + "friction: 0.1\\n" + "restitution: 0.5\\n" + "group: \\\"pod\\\"\\n" + "mask: \\\"bullet\\\"\\n" + "mask: \\\"spaceship\\\"\\n" + "embedded_collision_shape {\\n" + " shapes {\\n" + " shape_type: TYPE_BOX\\n" + " position {\\n" + " x: 600.0\\n" + " y: 725.0\\n" + " z: 0.0\\n" + " }\\n" + " rotation {\\n" + " x: 0.0\\n" + " y: 0.0\\n" + " z: 0.0\\n" + " w: 1.0\\n" + " }\\n" + " index: 0\\n" + " count: 3\\n" + " }\\n" + " data: 150.0\\n" + " data: 50.0\\n" + " data: 18.032\\n" + "}\\n" + "linear_damping: 0.0\\n" + "angular_damping: 0.0\\n" + "locked_rotation: false\\n" + "\"\n" + " position {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " }\n" + " rotation {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " w: 1.0\n" + " }\n" + "}\n" + "" + position { + x: 0.0 + y: 0.0 + z: 0.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale3 { + x: 1.0 + y: 1.0 + z: 1.0 + } +} +embedded_instances { + id: "start_k3s" + data: "components {\n" + " id: \"start_k3s\"\n" + " component: \"/main/start_k3s.script\"\n" + " position {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " }\n" + " rotation {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " w: 1.0\n" + " }\n" + "}\n" + "embedded_components {\n" + " id: \"collisionobject\"\n" + " type: \"collisionobject\"\n" + " data: \"collision_shape: \\\"\\\"\\n" + "type: COLLISION_OBJECT_TYPE_KINEMATIC\\n" + "mass: 0.0\\n" + "friction: 0.1\\n" + "restitution: 0.5\\n" + "group: \\\"k3s\\\"\\n" + "mask: \\\"bullet\\\"\\n" + "mask: \\\"spaceship\\\"\\n" + "embedded_collision_shape {\\n" + " shapes {\\n" + " shape_type: TYPE_BOX\\n" + " position {\\n" + " x: 950.0\\n" + " y: 725.0\\n" + " z: 0.0\\n" + " }\\n" + " rotation {\\n" + " x: 0.0\\n" + " y: 0.0\\n" + " z: 0.0\\n" + " w: 1.0\\n" + " }\\n" + " index: 0\\n" + " count: 3\\n" + " }\\n" + " data: 150.0\\n" + " data: 50.0\\n" + " data: 18.032\\n" + "}\\n" + "linear_damping: 0.0\\n" + "angular_damping: 0.0\\n" + "locked_rotation: false\\n" + "\"\n" + " position {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " }\n" + " rotation {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " w: 1.0\n" + " }\n" + "}\n" + "embedded_components {\n" + " id: \"sprite\"\n" + " type: \"sprite\"\n" + " data: \"tile_set: \\\"/assets/start_k3s.atlas\\\"\\n" + "default_animation: \\\"start-k3s\\\"\\n" + "material: \\\"/builtins/materials/sprite.material\\\"\\n" + "blend_mode: BLEND_MODE_ALPHA\\n" + "\"\n" + " position {\n" + " x: 950.0\n" + " y: 725.0\n" + " z: 0.0\n" + " }\n" + " rotation {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " w: 1.0\n" + " }\n" + "}\n" + "" + position { + x: 0.0 + y: 0.0 + z: 0.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale3 { + x: 1.0 + y: 1.0 + z: 1.0 + } +} diff --git a/main/menu.gui b/main/menu.gui new file mode 100644 index 0000000..0622923 --- /dev/null +++ b/main/menu.gui @@ -0,0 +1,2 @@ +script: "" +adjust_reference: ADJUST_REFERENCE_PARENT diff --git a/main/mymodules/node_api.lua b/main/mymodules/node_api.lua new file mode 100644 index 0000000..1c1a080 --- /dev/null +++ b/main/mymodules/node_api.lua @@ -0,0 +1,11 @@ +local M = {} + +function M.node_metrics(pod_name) + http.request(endpoint .. "/apis/metrics.k8s.io/v1beta1/nodes", "GET", M.http_node_metrics_result, headers) +end + +function M.http_node_metrics_result(self, _, response) + print(response.response) +end + +return M \ No newline at end of file diff --git a/main/mymodules/press_play.lua b/main/mymodules/press_play.lua new file mode 100644 index 0000000..6d03db4 --- /dev/null +++ b/main/mymodules/press_play.lua @@ -0,0 +1,17 @@ +local M = {} + +local h_size = hash("size") + +local no_padding = { + left = 0, + right = 0, + bottom = 0, + top = 0, +} + +function M.press_play(sprite_url) + go.get_position(sprite_url) + msg.post(sprite_url, "play_animation", {id = hash("press")}) +end + +return M \ No newline at end of file diff --git a/main/spaceship.script b/main/spaceship.script index 111f08b..7d3afcf 100644 --- a/main/spaceship.script +++ b/main/spaceship.script @@ -16,7 +16,7 @@ pod_update_time = 0.5 kubernetes_pods = {} last_pod_log = false last_pod_log_time = false - +start_chaos = false local COLLISION_RESPONSE = hash("collision_response") local timer = require "main.mymodules.timer" @@ -24,22 +24,15 @@ local spaceship = require "main.mymodules.spaceship" local help = require "main.mymodules.help" local pod_mod = require "main.mymodules.pod" local pod_api = require "main.mymodules.pod_api" +local press_play = require "main.mymodules.press_play" -function reverse(tbl) - for i=1, math.floor(#tbl / 2) do - local tmp = tbl[i] - tbl[i] = tbl[#tbl - i + 1] - tbl[#tbl - i + 1] = tmp - end -end - -function init(self) +function start_chaos() msg.post("ui#gui", "mode",{ mode = "Press \"a\" to use automatic pilot" }) local path = os.getenv("HOME") .. "/.KubeInv.json" local contents = "" conf = {} local file = io.open( path, "r" ) - if file then + if file then local contents = file:read( "*a" ) conf = json.decode(contents); io.close(file) @@ -79,10 +72,10 @@ function init(self) namespace_total = table.getn(namespace_list) namespace_cnt = 0 namespace = namespace_list[0] - + info = "Endpoint: " .. conf["endpoint"] .. "\n\n" .. "Namespace: " .. namespace msg.post("ui#gui", "info",{ infomessage = info }) - + msg.post(".", "acquire_input_focus") headers = { @@ -102,6 +95,21 @@ function init(self) end) pod_api.set_pods() end + started_chaos = true + go.delete('/start_chaos') + go.delete('/start_k3s') +end + +function reverse(tbl) + for i=1, math.floor(#tbl / 2) do + local tmp = tbl[i] + tbl[i] = tbl[#tbl - i + 1] + tbl[#tbl - i + 1] = tmp + end +end + +function init(self) + msg.post(".", "acquire_input_focus") end function update(self, dt) @@ -109,7 +117,7 @@ function update(self, dt) end function on_input(self, action_id, action) - local p = go.get_position() + p = go.get_position() if action_id == hash("up") then msg.post("ui#gui","pod_log",{infomessage = ''}) last_pod_log = false @@ -160,7 +168,7 @@ function on_input(self, action_id, action) -- Returns an approximation of the amount in seconds of CPU time used by the program. current_time = os.clock() - + if last_namespace_change ~= false then diff_time = current_time - last_namespace_change print ("[change_namespace] diff_time ".. diff_time) @@ -183,11 +191,11 @@ function on_input(self, action_id, action) namespace = namespace_list[namespace_cnt] end end - + last_namespace_change = os.clock() info = "Endpoint: " .. conf["endpoint"] .. "\n\n" .. "Namespace: " .. namespace msg.post("ui#gui", "info",{ infomessage = info }) - + elseif action_id == hash("space") and action.pressed then msg.post("ui#gui", "error",{ errormessage = "" }) -- Returns an approximation of the amount in seconds of CPU time used by the program. @@ -207,12 +215,13 @@ function on_input(self, action_id, action) last_hit_time = os.clock() end end - end + end end function on_message(self, message_id, message, sender) current_time = os.clock() - if message_id == COLLISION_RESPONSE then + print('DEBUG' .. message_id) + if message_id == COLLISION_RESPONSE and started_chaos then for i,value in ipairs(current_pods) do if (message["other_id"] == value["id"]) then pod_name = value["pod_name"] @@ -224,12 +233,14 @@ function on_message(self, message_id, message, sender) else diff_time = 99 end - + if last_pod_log ~= pod_name and diff_time > 0.2 then last_pod_log = pod_mod.print_pod_log(message["other_id"]) print("last_pod_log " .. last_pod_log) print("pod_name " .. pod_name) last_pod_log_time = os.clock() end + elseif message_id == hash('start_chaos') then + start_chaos() end end diff --git a/main/start.go b/main/start.go new file mode 100644 index 0000000..e730387 --- /dev/null +++ b/main/start.go @@ -0,0 +1,80 @@ +components { + id: "bullet" + component: "/main/bullet.script" + position { + x: 0.0 + y: 0.0 + z: 0.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } +} +embedded_components { + id: "sprite" + type: "sprite" + data: "tile_set: \"/assets/bullet.atlas\"\n" + "default_animation: \"bulletkube\"\n" + "material: \"/builtins/materials/sprite.material\"\n" + "blend_mode: BLEND_MODE_ALPHA\n" + "" + position { + x: 0.0 + y: 0.0 + z: 0.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } +} +embedded_components { + id: "collisionobject" + type: "collisionobject" + data: "collision_shape: \"\"\n" + "type: COLLISION_OBJECT_TYPE_KINEMATIC\n" + "mass: 0.0\n" + "friction: 0.1\n" + "restitution: 0.5\n" + "group: \"bullet\"\n" + "mask: \"pod\"\n" + "embedded_collision_shape {\n" + " shapes {\n" + " shape_type: TYPE_SPHERE\n" + " position {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " }\n" + " rotation {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " w: 1.0\n" + " }\n" + " index: 0\n" + " count: 1\n" + " }\n" + " data: 15.0\n" + "}\n" + "linear_damping: 0.0\n" + "angular_damping: 0.0\n" + "locked_rotation: false\n" + "" + position { + x: 0.0 + y: 0.0 + z: 0.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } +} diff --git a/main/start_chaos.script b/main/start_chaos.script new file mode 100644 index 0000000..78d1823 --- /dev/null +++ b/main/start_chaos.script @@ -0,0 +1,40 @@ +local COLLISION_RESPONSE = hash("collision_response") +local timer = require "main.mymodules.timer" +local spaceship = require "main.mymodules.spaceship" +local help = require "main.mymodules.help" +local pod_mod = require "main.mymodules.pod" +local pod_api = require "main.mymodules.pod_api" +local press_play = require "main.mymodules.press_play" + +local COLLISION_RESPONSE = hash("collision_response") + +function init(self) + -- Add initialization code here + -- Remove this function if not needed +end + +function final(self) + -- Add finalization code here + -- Remove this function if not needed +end + +function update(self, dt) + +end + +function on_message(self, message_id, message, sender) + if message_id == COLLISION_RESPONSE then + press_play.press_play('/start_chaos#sprite') + msg.post('/spaceship', "start_chaos", { action = 'start_chaos'}) + --go.delete() + end +end + +function on_input(self, action_id, action) + +end + +function on_reload(self) + -- Add reload-handling code here + -- Remove this function if not needed +end diff --git a/main/start_k3s.script b/main/start_k3s.script new file mode 100644 index 0000000..fb9fee5 --- /dev/null +++ b/main/start_k3s.script @@ -0,0 +1,27 @@ + +function init(self) + -- Add initialization code here + -- Remove this function if not needed +end + +function final(self) + -- Add finalization code here + -- Remove this function if not needed +end + +function update(self, dt) + +end + +function on_message(self, message_id, message, sender) + +end + +function on_input(self, action_id, action) + +end + +function on_reload(self) + -- Add reload-handling code here + -- Remove this function if not needed +end diff --git a/main/untitled.go b/main/untitled.go index 53660a2..a7a379c 100644 --- a/main/untitled.go +++ b/main/untitled.go @@ -28,6 +28,7 @@ embedded_components { "restitution: 0.5\n" "group: \"pod\"\n" "mask: \"bullet\"\n" + "mask: \"spaceship\"\n" "embedded_collision_shape {\n" " shapes {\n" " shape_type: TYPE_SPHERE\n" diff --git a/nginx/KubeInvaders_dev.templ b/nginx/KubeInvaders_dev.templ new file mode 100644 index 0000000..518e040 --- /dev/null +++ b/nginx/KubeInvaders_dev.templ @@ -0,0 +1,25 @@ +server { + listen 8080 default_server; + root /var/www/html/; + index index.html; + + location / { + try_files $uri $uri/ =404; + add_header Last-Modified $date_gmt; + add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0'; + if_modified_since off; + expires off; + etag off; + } + + location /kube { + rewrite ^/kube(.*)$ /api$1 break; + proxy_pass ${ENDPOINT}; + } + + location /kube/api { + rewrite ^/kube/api(.*)$ /api$1 break; + proxy_pass ${ENDPOINT}; + } + +} diff --git a/scripts/configure_kubeinv.sh b/scripts/configure_kubeinv.sh new file mode 100644 index 0000000..8c2d2b4 --- /dev/null +++ b/scripts/configure_kubeinv.sh @@ -0,0 +1,50 @@ +# Set a spefic KUBECONFIG if you have different contexts +# export KUBECONFIG= + +NAMESPACES="default,namespace1" +K8S_ENDPOINT="https://91A9752B6718D1E61824994D466EB574.gr7.eu-central-1.eks.amazonaws.com" + +SERVICE_ACCOUNT="kubeinvaders" + +kubectl --insecure-skip-tls-verify create sa kubeinvaders -n default + +cat < ./kubeinvader-rbac.yaml +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: kubeinvaders + labels: + app: kubeinvaders +rules: +- apiGroups: [""] + resources: ["pods","pods/log"] + verbs: ["get", "watch", "list", "delete"] +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: kubeinvaders + labels: + app: kubeinvaders +subjects: +- kind: ServiceAccount + name: kubeinvaders + namespace: default +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: kubeinvaders +EOF + +kubectl --insecure-skip-tls-verify create -f ./kubeinvader-rbac.yaml -n default +SECRET=$(kubectl --insecure-skip-tls-verify get serviceaccount ${SERVICE_ACCOUNT} -n default -o json | jq -Mr '.secrets[].name | select(contains("token"))') +TOKEN=$(kubectl --insecure-skip-tls-verify get secret ${SECRET} -n default -o json | jq -Mr '.data.token' | base64 -d) + +JSON_STRING=$( jq -n \ + --arg token "$TOKEN" \ + --arg endpoint "$K8S_ENDPOINT" \ + --arg namespace "$NAMESPACES" \ + '{token: $token, endpoint: $endpoint, namespace: $namespace}' ) + +echo $JSON_STRING > ~/.KubeInv.json diff --git a/scripts/test_k8s_connection.sh b/scripts/test_k8s_connection.sh new file mode 100644 index 0000000..4f9d32d --- /dev/null +++ b/scripts/test_k8s_connection.sh @@ -0,0 +1,4 @@ +APISERVER=https://91A9752B6718D1E61824994D466EB574.gr7.eu-central-1.eks.amazonaws.com +TOKEN="eyJhbGciOiJSUzI1NiIsImtpZCI6InBEd2ZWU3AyZjhwUWpqVmZtWU5iVkdMYWdhaUFwUll3SU5tQlRxbFdWRmcifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6Imt1YmVpbnZhZGVyczItdG9rZW4tbWtqemciLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoia3ViZWludmFkZXJzMiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImJkMjlhMTUyLTY0ODAtNDY2MS04YTdmLWMwNWZkNzg0ZmIwMiIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0Omt1YmVpbnZhZGVyczIifQ.OwoRF8eA8a_8hrMilbPLsbdGz_4jqV7epLAte_Tg692rhu75Mw3JFeRqKvN-tK9JZSx5pKZDNYbafrosvvCpZWbdDIGrwCQ_XHCbHSKdLqgYnB-WYXCerAve_M9vyOT-2yKnlQ_7_UNJKNFLTmERwbsYFDxKUSEaCvIYT7z5Ojv1y1L6wOxDvU_paclIDvjLePq-WwwOWkrbkEO9Yohidc49L2J4gjtYtFxNmMta5gXEo1cunC18Txe92kaeHKPJcCGWJ9Ym9Q-sGqgtD3YIY8qu-VX2PdqQJd9LUBksVgZHzrJ-c9sC6QgGn1urI-thpm9IfWgfnyCqBfM1Q5QZaw" + +curl $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure diff --git a/temporary_hack.sh b/temporary_hack.sh index 207e7c3..ab9d89f 100644 --- a/temporary_hack.sh +++ b/temporary_hack.sh @@ -5,13 +5,17 @@ ENDPOINT=$(echo "https://${ROUTE_HOST}" | sed "s/\//\\\\\//g") if [ ! -z $DEVELOPMENT ]; then sed -i "s/___buildEnvironment.called=true/___buildEnvironment.called=true;ENV[\"TOKEN\"]=\"$TOKEN\";ENV[\"ENDPOINT\"]=\"$ENDPOINT\";ENV[\"NAMESPACE\"]=\"$NAMESPACE\";ENV[\"HITSLIMIT\"]=\"$HITSLIMIT\";ENV[\"ALIENPROXIMITY\"]=\"$ALIENPROXIMITY\";ENV[\"UPDATETIME\"]=\"$UPDATETIME\"/g" /var/www/html/KubeInvaders_wasm.js + + envsubst '${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT_HTTPS}' < "/etc/nginx/conf.d/KubeInvaders.templ" > "/etc/nginx/conf.d/KubeInvaders.conf" + else sed -i "s/___buildEnvironment.called=true/___buildEnvironment.called=true;ENV[\"TOKEN\"]=\"$TOKEN\";ENV[\"ENDPOINT\"]=\"$ENDPOINT\/kube\";ENV[\"NAMESPACE\"]=\"$NAMESPACE\";ENV[\"HITSLIMIT\"]=\"$HITSLIMIT\";ENV[\"ALIENPROXIMITY\"]=\"$ALIENPROXIMITY\";ENV[\"UPDATETIME\"]=\"$UPDATETIME\"/g" /var/www/html/KubeInvaders_wasm.js + + envsubst '${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT_HTTPS}' < "/etc/nginx/conf.d/KubeInvaders_dev.templ" > "/etc/nginx/conf.d/KubeInvaders.conf" fi sed -i "s/TOTAL_ENV_SIZE=1024/TOTAL_ENV_SIZE=2048/g" /var/www/html/KubeInvaders_wasm.js sed -i "s/TOTAL_ENV_SIZE=1024/TOTAL_ENV_SIZE=2048/g" /var/www/html/KubeInvaders_asmjs.js -envsubst '${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT_HTTPS}' < "/etc/nginx/conf.d/KubeInvaders.templ" > "/etc/nginx/conf.d/KubeInvaders.conf" nginx -g 'daemon off;' diff --git a/temporary_hack_local.sh b/temporary_hack_local.sh new file mode 100644 index 0000000..ce39306 --- /dev/null +++ b/temporary_hack_local.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +ENDPOINT=$(echo "https://${ROUTE_HOST}" | sed "s/\//\\\\\//g") + +sed -i "s/___buildEnvironment.called=true/___buildEnvironment.called=true;ENV[\"TOKEN\"]=\"$TOKEN\";ENV[\"ENDPOINT\"]=\"$ENDPOINT\/kube\";ENV[\"NAMESPACE\"]=\"$NAMESPACE\";ENV[\"HITSLIMIT\"]=\"$HITSLIMIT\";ENV[\"ALIENPROXIMITY\"]=\"$ALIENPROXIMITY\";ENV[\"UPDATETIME\"]=\"$UPDATETIME\"/g" /var/www/html/KubeInvaders_wasm.js + +sed -i "s/TOTAL_ENV_SIZE=1024/TOTAL_ENV_SIZE=2048/g" /var/www/html/KubeInvaders_wasm.js +sed -i "s/TOTAL_ENV_SIZE=1024/TOTAL_ENV_SIZE=2048/g" /var/www/html/KubeInvaders_asmjs.js + +envsubst '${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT_HTTPS}' < "/etc/nginx/conf.d/KubeInvaders.templ" > "/etc/nginx/conf.d/KubeInvaders.conf" + +nginx -g 'daemon off;'