From 4ee7c0cc18ba54bd17c270eb42e4125347bffc4c Mon Sep 17 00:00:00 2001 From: Ava Hahn Date: Sat, 16 Aug 2025 00:47:14 +0000 Subject: [PATCH] initial commit Signed-off-by: Ava Hahn --- compose.yaml | 82 +++++++++++++++ kaclient/Dockerfile | 6 ++ kaclient/run.sh | 28 ++++++ kaproxy/Dockerfile | 21 ++++ kaproxy/dhparam.pem | 29 ++++++ kaproxy/nginx | 1 + kaproxy/nginx.conf | 59 +++++++++++ kaproxy/run.sh | 23 +++++ kaproxy/www.example.com.crt | 94 +++++++++++++++++ kaproxy/www.example.com.key | 196 ++++++++++++++++++++++++++++++++++++ kasvc/Dockerfile | 6 ++ keepalive-svc.go | 32 ++++++ run.sh | 5 + 13 files changed, 582 insertions(+) create mode 100644 compose.yaml create mode 100644 kaclient/Dockerfile create mode 100755 kaclient/run.sh create mode 100644 kaproxy/Dockerfile create mode 100644 kaproxy/dhparam.pem create mode 160000 kaproxy/nginx create mode 100644 kaproxy/nginx.conf create mode 100755 kaproxy/run.sh create mode 100644 kaproxy/www.example.com.crt create mode 100644 kaproxy/www.example.com.key create mode 100644 kasvc/Dockerfile create mode 100755 keepalive-svc.go create mode 100755 run.sh diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..514cc26 --- /dev/null +++ b/compose.yaml @@ -0,0 +1,82 @@ +services: + kasvc-0: &kasvc + build: + context: kasvc + platforms: + - linux/x86_64 + platform: linux/x86_64 + ports: + - 8080:8080 + networks: + - test-net + develop: + watch: + - path: ./kasvc + action: rebuild + kasvc-1: + <<: *kasvc + ports: + - 8081:8080 + kasvc-2: + <<: *kasvc + ports: + - 8082:8080 + kasvc-3: + <<: *kasvc + ports: + - 8083:8080 + kasvc-4: + <<: *kasvc + ports: + - 8084:8080 + kasvc-5: + <<: *kasvc + ports: + - 8085:8080 + kasvc-6: + <<: *kasvc + ports: + - 8086:8080 + kasvc-7: + <<: *kasvc + ports: + - 8087:8080 + kasvc-8: + <<: *kasvc + ports: + - 8088:8080 + kasvc-9: + <<: *kasvc + ports: + - 8089:8080 + + kaproxy: + build: + context: kaproxy + platforms: + - linux/x86_64 + platform: linux/x86_64 + ports: + - 8079:8080 + networks: + - test-net + develop: + watch: + - path: ./kaproxy + action: rebuild + + kaclient: + build: + context: kaclient + platforms: + - linux/x86_64 + platform: linux/x86_64 + networks: + - test-net + develop: + watch: + - path: ./kaclient + action: rebuild + +networks: + test-net: diff --git a/kaclient/Dockerfile b/kaclient/Dockerfile new file mode 100644 index 0000000..0308a1f --- /dev/null +++ b/kaclient/Dockerfile @@ -0,0 +1,6 @@ +FROM archlinux:latest +RUN pacman -Syyu --noconfirm +RUN pacman -S curl --noconfirm + +COPY run.sh / +CMD ["/run.sh"] diff --git a/kaclient/run.sh b/kaclient/run.sh new file mode 100755 index 0000000..6747bc4 --- /dev/null +++ b/kaclient/run.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +log_request () { + return_code=$(curl -Sikl -o /dev/null -w "%{http_code}" $1 2>/dev/null) + case ${return_code:0:1} in + "4" | "5") + echo "query of $1 returned $return_code" + ;; + *) + ;; + esac +} + +while : +do + log_request "https://kaproxy:8080/0" + log_request "https://kaproxy:8080/1" + log_request "https://kaproxy:8080/2" + log_request "https://kaproxy:8080/3" + log_request "https://kaproxy:8080/4" + log_request "https://kaproxy:8080/5" + log_request "https://kaproxy:8080/6" + log_request "https://kaproxy:8080/7" + log_request "https://kaproxy:8080/8" + log_request "https://kaproxy:8080/9" +done + +# TODO: use wrk2 or something to stress test endpoints I dunno diff --git a/kaproxy/Dockerfile b/kaproxy/Dockerfile new file mode 100644 index 0000000..a62541f --- /dev/null +++ b/kaproxy/Dockerfile @@ -0,0 +1,21 @@ +FROM archlinux:latest +EXPOSE 8080 + +RUN pacman -Syyu --noconfirm +RUN pacman -S base-devel glibc gcc-libs --noconfirm +COPY nginx /nginx +WORKDIR /nginx +RUN auto/configure \ + --with-debug \ + --with-http_ssl_module \ + --with-cc-opt=-pg +RUN make +RUN make install +COPY nginx.conf / + +COPY dhparam.pem / +COPY www.example.com.crt / +COPY www.example.com.key / +COPY run.sh / + +CMD ["/run.sh"] diff --git a/kaproxy/dhparam.pem b/kaproxy/dhparam.pem new file mode 100644 index 0000000..a102c9b --- /dev/null +++ b/kaproxy/dhparam.pem @@ -0,0 +1,29 @@ +-----BEGIN DH PARAMETERS----- +MIIE7gKCBOMA3dPbX68yiaLYtcNvknBf442ugqhCrRIrxz81m3YdWqKbyI+XOnkT +u6A7Be5jP2CJJJWBpqEZOFLWqZ9Dr5y42mDBCNPx2E/fXh1jcYbfC3vHJjOE1aC1 +Rn7CwWs+9qwesTn8zcGaB1SUoLLAiaQ6gtUHzYRM3p/5I8DDTqbIAX7pAzQmjVZM +VZXMeJhlERnA95Hqfvr9dW7zSwwDWx1ilsTv28MXergqSCpOsy4AK0iN5kzTUPez +nZQoObqTtQl8zduzXf68yMrDAbdmhKlX3eeFDFo73ZQopeixtrt7CEnwbxPCPCzb +LpfGv+HEVLZyUIiywZ0v6DkMbam/btmnML4fB9fawZ+W9kAIC1WM9SoaL7czDLlA +uspcPZFZ6sAONFPyFLWmsSoCE8J0a4wZocaDxhbnYkCvdZ4jkwQiamsWk9VTXXmq +vXpqWq2Ubwcf0brDH0F7TW+SD58rcYTVwdcq+jGIflLj9xLNMYdnUHCBhV8TajcK +TolDQgEOaWokzW5stGtCuv54CgsFpkTvbvp6YNtu2v6tle+V1gCkrQsm4wagEt/p +O+tafBxJeBt4OoGTEWNwFtOJd85TpvPBtajDWaV4trLdvY8RUQOAIbkZzcMgp4Mz +qTeSLhDhIhmYIfXXD3hRULsSyKkUs1ztheuFa0WaHY+41AKPUjgFMrodSDJ/SQjS +nRaOdXbYPux/nQ6Yx7sgvjW1nhAGkYIo42Wn+x6QueJUrr3m0HrKpAEg50ExmyO3 +80CMgGaVQAPgysICKLF5+p2or2oQv12QsOj8Jpt7hPIBHZqO/cVnO/1eXoLZnKRo +P/epOkM9aKv+vASHi29Iqrew1s7NAfVijk8zB9Lh5+2x6A62V/iuHMcVZuqgkPGF +ujwANkokOuQD1chqprfCT7mTQKAa0M4wmvJgkxmRe17EH41zbIax3BhfhYI1RscH +yEg5xYYZJFYcqNHkqTOwyK6hWYc9gjiQxXaj/O9EqquHfZXEEfV+5VF0nKAn92ss +VubqbTtTv/zGapQzBNggTrFO5qB2+05tU6vIs8XVKPjkncffmssMWSRWwnuPEAhP +LzjDd+F2oN/+j9eANK075U/6AhNSBF4WUam3u/i8L3KoIjTn+P/+4a7bSU6FFMHx +2uQD2sfE9s5EmTnMgr68rC+If2mbWNb58RADMOR1Hvphw0rHgVbvbikRKFXaf26f +sDjBV8mSE47xCc05T0DF9apgWiFjwAx9YXqlXlIFLJ77IQrrlCwA8Q4KedgE+Ovq +8bNgYodgkiszGW16/o97kDLigKhRUGgAoAOB28l57Pw0EfoxOIJOazzcSTfU52nW +zs25F42ptwKs3MEA9ySvTEtSYyacMNMtAJOUNaQelvFX1GpSZDCmSp7VbRhXWFH0 +pZN+rpD9FoZTpixqTeNDvJoazuZ8L18Lz5nLDPxeUAh4LKvgeKJE/e699Hgn2RJ4 +5/N4FmU6FesUGJ6CtSlbMjK/iOQQgXPIzBeNmZEBnSZGoHNSiKpfi89AKrmtSDfR +//VPh75xISCmq5k+UqTuQsx7LFODl+0pY/9QeofMR1BZcjcnknVSikB4NMzOYEaP +VtK37hj2LgN6ObvQuvJi0TpDJKD8/yWqRDWxh3OedrNssVpIgZYUvmP3ZoDM9N2/ +myFqy7manTL2Dc8CAQICAgHC +-----END DH PARAMETERS----- diff --git a/kaproxy/nginx b/kaproxy/nginx new file mode 160000 index 0000000..64d0795 --- /dev/null +++ b/kaproxy/nginx @@ -0,0 +1 @@ +Subproject commit 64d0795ac41836b6be8fcceba68f1dbb62b4035a diff --git a/kaproxy/nginx.conf b/kaproxy/nginx.conf new file mode 100644 index 0000000..a8f9734 --- /dev/null +++ b/kaproxy/nginx.conf @@ -0,0 +1,59 @@ +worker_processes 5; +error_log /dev/stdout notice; +pid /tmp/pid; + +events { + worker_connections 20; +} + +http { + keepalive_timeout 300; + + server { + listen 8080 ssl; + server_name www.example.com; + ssl_certificate /www.example.com.crt; + ssl_certificate_key /www.example.com.key; + access_log /tmp/access.log; + + location /0 { + proxy_pass http://kasvc-0:8080; + } + + location /1 { + proxy_pass http://kasvc-1:8080; + } + + location /2 { + proxy_pass http://kasvc-2:8080; + } + + location /3 { + proxy_pass http://kasvc-3:8080; + } + + location /4 { + proxy_pass http://kasvc-4:8080; + } + + location /5 { + proxy_pass http://kasvc-5:8080; + } + + location /6 { + proxy_pass http://kasvc-6:8080; + } + + location /7 { + proxy_pass http://kasvc-7:8080; + } + + location /8 { + proxy_pass http://kasvc-8:8080; + } + + location /9 { + proxy_pass http://kasvc-9:8080; + } + } +} diff --git a/kaproxy/run.sh b/kaproxy/run.sh new file mode 100755 index 0000000..0bb5edf --- /dev/null +++ b/kaproxy/run.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +function invoke() { + /nginx/objs/nginx \ + -p /tmp \ + -e /tmp/error.log \ + -c /nginx.conf \ + -g "daemon off;" \ + $@ +} + +function sigint_handler() { + echo "sigint received. trigger again to kill." + invoke -s quit + trap - INT +} + +trap 'sigint_handler' INT + +invoke & +wait +echo "NGINX down. waiting until signalled..." +sleep infinity diff --git a/kaproxy/www.example.com.crt b/kaproxy/www.example.com.crt new file mode 100644 index 0000000..00a4937 --- /dev/null +++ b/kaproxy/www.example.com.crt @@ -0,0 +1,94 @@ +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- diff --git a/kaproxy/www.example.com.key b/kaproxy/www.example.com.key new file mode 100644 index 0000000..b85e5c5 --- /dev/null +++ b/kaproxy/www.example.com.key @@ -0,0 +1,196 @@ +-----BEGIN PRIVATE KEY----- +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 +VD6dr9AUi1S36keVP9O3yf5stygNSmg= +-----END PRIVATE KEY----- diff --git a/kasvc/Dockerfile b/kasvc/Dockerfile new file mode 100644 index 0000000..8573f13 --- /dev/null +++ b/kasvc/Dockerfile @@ -0,0 +1,6 @@ +FROM archlinux:latest +RUN pacman -Syyu --noconfirm +RUN pacman -S glibc gcc-libs --noconfirm +EXPOSE 8080 +COPY keepalive-svc / +CMD ["/keepalive-svc"] diff --git a/keepalive-svc.go b/keepalive-svc.go new file mode 100755 index 0000000..b092078 --- /dev/null +++ b/keepalive-svc.go @@ -0,0 +1,32 @@ +package main + +import ( + "fmt" + "net" + "net/http" + "time" +) + +type myHandler struct{ + nreq int +} + +func (h myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + fmt.Printf("accepted request number %d", h.nreq) + fmt.Fprintf(w, "request number: %d", h.nreq) +} + +func main() { + srv := &http.Server{ + Addr: ":8080", + Handler: myHandler{nreq: 0}, + ReadTimeout: 5 * time.Second, + WriteTimeout: 10 * time.Second, + IdleTimeout: 300 * time.Second, + ConnState: func(conn net.Conn, event http.ConnState) { + fmt.Printf("addr: %s, changed state to: %s", conn.RemoteAddr(), event.String()) + }, + } + + srv.ListenAndServe() +} diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..51ead12 --- /dev/null +++ b/run.sh @@ -0,0 +1,5 @@ +#!/bin/zsh +go build keepalive-svc.go +mv keepalive-svc kasvc/ +rsync -avz ../nginx kaproxy/ +sudo docker-compose up --build