diff --git a/Dockerfile b/Dockerfile index 6f27406..3d1f57a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,4 @@ -# v1.9.7 requires FROM docker.io/nginx:stable-bullseye -FROM docker.io/openresty/openresty:1.25.3.1-4-bookworm-fat - +FROM docker.io/openresty/openresty:bullseye-fat # Update repo and install some utilities and prerequisites RUN apt-get update -y RUN apt-get -y install wget at procps gnupg ca-certificates jq openssl task-spooler apt-transport-https python3 python3-pip redis libssl-dev python3-yaml python3-kubernetes python3-redis python3-requests diff --git a/confs/redis/redis.conf b/confs/redis/redis.conf index f4f08f2..225cf44 100644 --- a/confs/redis/redis.conf +++ b/confs/redis/redis.conf @@ -1,18 +1,14 @@ bind 127.0.0.1 -unixsocket /tmp/redis.sock -unixsocketperm 777 protected-mode yes port 6379 tcp-backlog 511 timeout 0 tcp-keepalive 300 -daemonize yes +daemonize no supervised no -pidfile /var/run/redis/redis-server.pid -loglevel notice -logfile stdou +loglevel debug +logfile "" databases 16 -always-show-logo yes #save 900 1 #save 300 10 #save 60 10000 diff --git a/entrypoint.sh b/entrypoint.sh index 5ecd621..b626c92 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -14,6 +14,7 @@ trap "exit" INT TERM ERR trap "kill 0" EXIT redis-server /etc/redis/redis.conf & +until redis-cli -h 127.0.0.1 -p 6379 ping 2>/dev/null | grep -q PONG; do sleep 0.1; done /opt/metrics_loop/start.sh & # /opt/logs_loop/start.sh & nginx -c /etc/nginx/nginx.conf -g 'daemon off;' & diff --git a/nginx/KubeInvaders.conf b/nginx/KubeInvaders.conf index a136c61..4c0dc70 100644 --- a/nginx/KubeInvaders.conf +++ b/nginx/KubeInvaders.conf @@ -138,7 +138,7 @@ server { -- Persist the user-configured endpoint so background loops can reuse it. local red = redis:new() - local okredis, errredis = red:connect("unix:/tmp/redis.sock") + local okredis, errredis = red:connect("127.0.0.1", 6379) if okredis then local okset, errset = red:set("k8s_api_endpoint", target) if not okset then @@ -258,7 +258,7 @@ server { content_by_lua_block { local redis = require "resty.redis" local red = redis:new() - local okredis, errredis = red:connect("unix:/tmp/redis.sock") + local okredis, errredis = red:connect("127.0.0.1", 6379) ngx.header['Access-Control-Allow-Origin'] = '*' ngx.header['Access-Control-Allow-Methods'] = 'GET, POST, OPTIONS' ngx.header['Access-Control-Allow-Headers'] = 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' @@ -280,7 +280,7 @@ server { content_by_lua_block { local redis = require "resty.redis" local red = redis:new() - local okredis, errredis = red:connect("unix:/tmp/redis.sock") + local okredis, errredis = red:connect("127.0.0.1", 6379) ngx.header['Access-Control-Allow-Origin'] = '*' ngx.header['Access-Control-Allow-Methods'] = 'GET, POST, OPTIONS' ngx.header['Access-Control-Allow-Headers'] = 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' @@ -340,7 +340,7 @@ server { local random_word = read_rand_line_from_file("/usr/local/openresty/nginx/conf/kubeinvaders/data/codenames.txt") local redis = require "resty.redis" local red = redis:new() - local okredis, errredis = red:connect("unix:/tmp/redis.sock") + local okredis, errredis = red:connect("127.0.0.1", 6379) ngx.header['Access-Control-Allow-Origin'] = '*' ngx.header['Access-Control-Allow-Methods'] = 'GET, POST, OPTIONS' @@ -370,7 +370,7 @@ server { local redis = require "resty.redis" local red = redis:new() - local okredis, errredis = red:connect("unix:/tmp/redis.sock") + local okredis, errredis = red:connect("127.0.0.1", 6379) if not okredis then ngx.log(ngx.ERR, "[metrics] Redis connection failed: " .. tostring(errredis)) @@ -443,7 +443,7 @@ server { local redis = require "resty.redis" local red = redis:new() - local okredis, errredis = red:connect("unix:/tmp/redis.sock") + local okredis, errredis = red:connect("127.0.0.1", 6379) if not okredis then ngx.log(ngx.ERR, "[chaos_jobs_pod_phase] Redis connection failed: " .. tostring(errredis)) @@ -477,7 +477,7 @@ server { ngx.header['Access-Control-Expose-Headers'] = 'Content-Length,Content-Range'; ngx.req.read_body() local data = ngx.req.get_body_data() - local okredis, errredis = red:connect("unix:/tmp/redis.sock") + local okredis, errredis = red:connect("127.0.0.1", 6379) local logid = args["logid"] red:set("do_not_clean_log:" .. logid, "1") @@ -507,7 +507,7 @@ server { ngx.header['Access-Control-Expose-Headers'] = 'Content-Length,Content-Range'; ngx.req.read_body() local data = ngx.req.get_body_data() - local okredis, errredis = red:connect("unix:/tmp/redis.sock") + local okredis, errredis = red:connect("127.0.0.1", 6379) local logid = args["logid"] local res, err = red:get("logs:chaoslogs-" .. logid .. "-count") @@ -532,7 +532,7 @@ server { ngx.header['Access-Control-Expose-Headers'] = 'Content-Length,Content-Range'; ngx.req.read_body() local data = ngx.req.get_body_data() - local okredis, errredis = red:connect("unix:/tmp/redis.sock") + local okredis, errredis = red:connect("127.0.0.1", 6379) local logid = args["logid"] local pos = args["pos"] local res = red:get("logs:chaoslogs-" .. logid .. "-" .. pos) @@ -550,7 +550,7 @@ server { ngx.header['Access-Control-Allow-Headers'] = 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' ngx.header['Access-Control-Expose-Headers'] = 'Content-Length,Content-Range'; ngx.req.read_body() - local okredis, errredis = red:connect("unix:/tmp/redis.sock") + local okredis, errredis = red:connect("127.0.0.1", 6379) local key_name = args["lang"] .. "_" .. args["name"] local res, err = red:get(key_name) @@ -585,7 +585,7 @@ server { ngx.header['Access-Control-Allow-Headers'] = 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' ngx.header['Access-Control-Expose-Headers'] = 'Content-Length,Content-Range'; ngx.req.read_body() - local okredis, errredis = red:connect("unix:/tmp/redis.sock") + local okredis, errredis = red:connect("127.0.0.1", 6379) local key_name = args["lang"] .. "_" .. args["name"] -- ngx.log(ngx.INFO, "[PRESETS-RESET] The item " .. key_name .. " should be removed from the key presets_list") @@ -629,7 +629,7 @@ server { ngx.header['Access-Control-Allow-Methods'] = 'GET, POST, OPTIONS' ngx.header['Access-Control-Allow-Headers'] = 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' ngx.header['Access-Control-Expose-Headers'] = 'Content-Length,Content-Range'; - local okredis, errredis = red:connect("unix:/tmp/redis.sock") + local okredis, errredis = red:connect("127.0.0.1", 6379) local res, err = red:get("presets_list") if res == ngx.null then @@ -672,7 +672,7 @@ server { ngx.header['Access-Control-Expose-Headers'] = 'Content-Length,Content-Range'; ngx.req.read_body() local data = ngx.req.get_body_data() - local okredis, errredis = red:connect("unix:/tmp/redis.sock") + local okredis, errredis = red:connect("127.0.0.1", 6379) if check_if_redis_key_exists(red, "chaos_report_project_list") then if not check_if_string_contain_project(red:get("chaos_report_project_list"), args["project"]) then red:set("chaos_report_project_list", add_project(red:get("chaos_report_project_list"), args["project"])) @@ -715,7 +715,7 @@ server { ngx.header['Access-Control-Expose-Headers'] = 'Content-Length,Content-Range'; ngx.req.read_body() local data = ngx.req.get_body_data() - local okredis, errredis = red:connect("unix:/tmp/redis.sock") + local okredis, errredis = red:connect("127.0.0.1", 6379) red:set("chaos_report_project_" .. args["project"], data) local project = args["project"] or "" @@ -767,7 +767,7 @@ server { ngx.header['Access-Control-Expose-Headers'] = 'Content-Length,Content-Range'; ngx.req.read_body() local data = ngx.req.get_body_data() - local okredis, errredis = red:connect("unix:/tmp/redis.sock") + local okredis, errredis = red:connect("127.0.0.1", 6379) local key_name = args["lang"] .. "_" .. args["name"] local all_presets_key = "" diff --git a/nginx/nginx.conf b/nginx/nginx.conf index fc550fe..dba0ba5 100644 --- a/nginx/nginx.conf +++ b/nginx/nginx.conf @@ -1,5 +1,6 @@ -worker_processes 2; -error_log /dev/stdout debug; +worker_processes 1; +master_process off; +error_log /dev/stdout warn; pid /var/run/nginx.pid; env REDIS_HOST; env TOKEN; @@ -25,7 +26,7 @@ http { 'cs=$upstream_cache_status'; access_log /dev/stdout main; - error_log /dev/stderr debug; + error_log /dev/stderr warn; sendfile on; keepalive_timeout 30; client_body_buffer_size 1000K; diff --git a/scripts/chaos-containers.lua b/scripts/chaos-containers.lua index d0cc49d..a1bb57d 100644 --- a/scripts/chaos-containers.lua +++ b/scripts/chaos-containers.lua @@ -3,7 +3,7 @@ local action = arg['action'] local config = require "config_kubeinv" local redis = require "resty.redis" local red = redis:new() -local okredis, errredis = red:connect("unix:/tmp/redis.sock") +local okredis, errredis = red:connect("127.0.0.1", 6379) if okredis then ngx.log(ngx.INFO, "Connection to Redis is ok") diff --git a/scripts/chaos-node.lua b/scripts/chaos-node.lua index e6ac672..17c53d9 100644 --- a/scripts/chaos-node.lua +++ b/scripts/chaos-node.lua @@ -9,7 +9,7 @@ local incr = 0 local config = require "config_kubeinv" local chaos_container = "" local red = redis:new() -local okredis, errredis = red:connect("unix:/tmp/redis.sock") +local okredis, errredis = red:connect("127.0.0.1", 6379) local function read_all(file) local f = assert(io.open(file, "rb")) diff --git a/scripts/kube-linter.lua b/scripts/kube-linter.lua index 0012fe4..b1d1ad6 100644 --- a/scripts/kube-linter.lua +++ b/scripts/kube-linter.lua @@ -11,7 +11,7 @@ local arg = ngx.req.get_uri_args() local namespace = arg['namespace'] local logid = arg['logid'] local red = redis:new() -local okredis, errredis = red:connect("unix:/tmp/redis.sock") +local okredis, errredis = red:connect("127.0.0.1", 6379) if okredis then ngx.log(ngx.INFO, "Connection to Redis is ok") diff --git a/scripts/logs_loop/start.py b/scripts/logs_loop/start.py index 45f5b18..900fe42 100644 --- a/scripts/logs_loop/start.py +++ b/scripts/logs_loop/start.py @@ -158,12 +158,7 @@ logging.getLogger('kubernetes').setLevel(logging.ERROR) logging.debug('Starting script for KubeInvaders taking logs from pods...') -file = pathlib.Path('/tmp/redis.sock') - -if file.exists(): - r = redis.Redis(unix_socket_path='/tmp/redis.sock', charset="utf-8", decode_responses=True) -else: - r = redis.Redis("127.0.0.1", charset="utf-8", decode_responses=True) +r = redis.Redis(host='127.0.0.1', port=6379, charset="utf-8", decode_responses=True) if os.environ.get("DEV"): logging.debug("Setting env var for dev...") diff --git a/scripts/logs_loop/start.sh b/scripts/logs_loop/start.sh index 9d9cabc..a1e63a3 100755 --- a/scripts/logs_loop/start.sh +++ b/scripts/logs_loop/start.sh @@ -15,7 +15,7 @@ RESOLVED_ENDPOINT="" REDIS_ENDPOINT=$(python3 - <<'PY' import redis try: - r = redis.Redis(unix_socket_path='/tmp/redis.sock', decode_responses=True) + r = redis.Redis(host='127.0.0.1', port=6379, decode_responses=True) v = r.get('k8s_api_endpoint') print(v.strip() if v else '') except Exception: diff --git a/scripts/metrics.lua b/scripts/metrics.lua index af4af97..8c4f7a5 100644 --- a/scripts/metrics.lua +++ b/scripts/metrics.lua @@ -7,7 +7,7 @@ local incr = 0 if ngx.var.request_method == "GET" and string.match(ngx.var.request_uri, "^.*/chaos[-]node.*$") then ngx.log(ngx.INFO, "[kinv][get-metrics] Find metrics ^.*/chaos[-]node.*$ in Redis") local red = redis:new() - local okredis, errredis = red:connect("unix:/tmp/redis.sock") + local okredis, errredis = red:connect("127.0.0.1", 6379) if okredis then ngx.log(ngx.INFO, "Connection to Redis is ok") diff --git a/scripts/metrics_loop/start.py b/scripts/metrics_loop/start.py index 1e7dd9b..ab18c32 100644 --- a/scripts/metrics_loop/start.py +++ b/scripts/metrics_loop/start.py @@ -114,7 +114,7 @@ def create_job(job_name, pod_template): return job -r = redis.Redis(unix_socket_path='/tmp/redis.sock') +r = redis.Redis(host='127.0.0.1', port=6379) logging.getLogger('kubernetes').setLevel(logging.ERROR) diff --git a/scripts/metrics_loop/start.sh b/scripts/metrics_loop/start.sh index b4cc37d..2e78171 100755 --- a/scripts/metrics_loop/start.sh +++ b/scripts/metrics_loop/start.sh @@ -16,7 +16,7 @@ RESOLVED_ENDPOINT="" REDIS_ENDPOINT=$(python3 - <<'PY' import redis try: - r = redis.Redis(unix_socket_path='/tmp/redis.sock', decode_responses=True) + r = redis.Redis(host='127.0.0.1', port=6379, decode_responses=True) v = r.get('k8s_api_endpoint') print(v.strip() if v else '') except Exception: diff --git a/scripts/node.lua b/scripts/node.lua index 2187954..5f07a75 100644 --- a/scripts/node.lua +++ b/scripts/node.lua @@ -75,7 +75,7 @@ local nodes = {} if ngx.var.request_method == "GET" and string.match(ngx.var.request_uri, "^.*/chaos[-]node.*$") then local red = redis:new() - local okredis, errredis = red:connect("unix:/tmp/redis.sock") + local okredis, errredis = red:connect("127.0.0.1", 6379) if okredis then ngx.log(ngx.INFO, "Connection to Redis is ok") diff --git a/scripts/pod.lua b/scripts/pod.lua index 0acca86..ec2ab49 100644 --- a/scripts/pod.lua +++ b/scripts/pod.lua @@ -37,7 +37,7 @@ local header_token = req_headers["x-k8s-token"] or req_headers["X-K8S-Token"] if header_token and header_token ~= "" then local red_tok = redis:new() - red_tok:connect("unix:/tmp/redis.sock") + red_tok:connect("127.0.0.1", 6379) red_tok:set("x_k8s_token", header_token) end local ca_cert_b64 = req_headers["x-k8s-ca-cert-b64"] or req_headers["X-K8S-CA-CERT-B64"] @@ -100,7 +100,7 @@ ngx.header['Access-Control-Expose-Headers'] = 'Content-Length,Content-Range'; if action == "delete" then local red = redis:new() - local okredis, errredis = red:connect("unix:/tmp/redis.sock") + local okredis, errredis = red:connect("127.0.0.1", 6379) if okredis then else @@ -218,12 +218,12 @@ if action == "list" then end end local red = redis:new() - local okredis, errredis = red:connect("unix:/tmp/redis.sock") + local okredis, errredis = red:connect("127.0.0.1", 6379) red:set("pods_not_running_on_selected_ns", j) end local red = redis:new() - local okredis, errredis = red:connect("unix:/tmp/redis.sock") + local okredis, errredis = red:connect("127.0.0.1", 6379) local pods_not_running_on, err = red:get("pods_not_running_on_selected_ns") local fewer_replicas_seconds, err = red:get("fewer_replicas_seconds") diff --git a/scripts/programming_mode.lua b/scripts/programming_mode.lua index 77a7985..1bb5b1b 100644 --- a/scripts/programming_mode.lua +++ b/scripts/programming_mode.lua @@ -3,7 +3,7 @@ local ltn12 = require "ltn12" local json = require 'lunajson' local redis = require "resty.redis" local red = redis:new() -local okredis, errredis = red:connect("unix:/tmp/redis.sock") +local okredis, errredis = red:connect("127.0.0.1", 6379) local k8s_url = "" local kube_host = os.getenv("KUBERNETES_SERVICE_HOST") local kube_port = os.getenv("KUBERNETES_SERVICE_PORT_HTTPS") diff --git a/scripts/programming_mode/start.py b/scripts/programming_mode/start.py index 811d886..d076e0e 100644 --- a/scripts/programming_mode/start.py +++ b/scripts/programming_mode/start.py @@ -67,7 +67,7 @@ with open(sys.argv[1], 'r') as stream: print(ret) quit() -r = redis.Redis(unix_socket_path='/tmp/redis.sock') +r = redis.Redis(host='127.0.0.1', port=6379) configuration = client.Configuration() token = ""