Skip to content

Commit

Permalink
allow to run in healthcheck only mode
Browse files Browse the repository at this point in the history
  • Loading branch information
OriHoch committed Feb 2, 2024
1 parent a321aaf commit 29b51f4
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 35 deletions.
48 changes: 31 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,37 @@ Install cwm-worker-ingress Python module
venv/bin/python -m pip install -e .
```

### Usage
### Usage - node health check only

Start a Redis server

```
docker run -d --rm --name redis -p 6379:6379 redis
```

Start the VDNS server in health check only mode

```
DEBUG=yes REDIS_HOST=172.17.0.1 venv/bin/cwm_worker_ingress vdns
```

Set node healthy

```
docker exec redis redis-cli set "node:healthy:testnode0" ""
```

Check node healthy filename exists: `.node_healthy`

Delete node healthy

```
docker exec redis redis-cli del "node:healthy:testnode0"
```

Check node healthy filename deleted: `.node_healthy`

### Usage - Full VDNS

Start a Redis server

Expand Down Expand Up @@ -74,22 +104,6 @@ Set domain error
docker exec redis redis-cli set "worker:error:${DOMAIN}" ""
```

Set node healthy

```
docker exec redis redis-cli set "node:healthy:testnode0" ""
```

Check node healthy filename exists: `.node_healthy`

Delete node healthy

```
docker exec redis redis-cli del "node:healthy:testnode0"
```

Check node healthy filename deleted: `.node_healthy`

## Python module automated tests

Start the local development server as specified for local development
Expand Down
5 changes: 3 additions & 2 deletions cwm_worker_ingress/logs.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,11 @@ class MainLogs:
def __init__(self, port):
self.start_time = datetime.datetime.now()
self.last_uptime_seconds = 0
on_port_msg = f'on port {port}' if port else 'without vdns server'
if config.DEBUG:
self.info("{} starting server in debug mode on port {} with debug verbosity {}".format(self.start_time, port, config.DEBUG_VERBOSITY))
self.info("{} starting server in debug mode {} with debug verbosity {}".format(self.start_time, on_port_msg, config.DEBUG_VERBOSITY))
else:
self.info("{} starting server on port {}".format(self.start_time, port))
self.info("{} starting server {}".format(self.start_time, on_port_msg))
self.info("REDIS_HOST={} REDIS_PORT={}".format(config.REDIS_HOST, config.REDIS_PORT))

def info(self, msg):
Expand Down
34 changes: 19 additions & 15 deletions cwm_worker_ingress/vdns.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,10 @@ def update_node_health_file(write_redis_pool):
os.unlink(config.NODE_HEALTHY_FILENAME)


def main(port):
def main(port=None):
main_logs = logs.MainLogs(port)
main_logs.info("VDNS_PROTOCOL={}".format(config.VDNS_PROTOCOL))
if port:
main_logs.info("VDNS_PROTOCOL={}".format(config.VDNS_PROTOCOL))
read_redis_pool = redis.BlockingConnectionPool(
max_connections=config.REDIS_READ_POOL_MAX_CONNECTIONS, timeout=config.REDIS_READ_POOL_TIMEOUT,
host=config.REDIS_HOST, port=config.REDIS_PORT
Expand All @@ -43,19 +44,22 @@ def main(port):
assert replicaof_res.startswith(b'OK'), "invalid response from REPLICAOF: %s" % replicaof_res
main_logs.info("Starting prometheus http server on port {}".format(config.PROMETHEUS_METRICS_PORT))
prometheus_client.start_http_server(config.PROMETHEUS_METRICS_PORT)
servers = [
*[dnslib.server.DNSServer(
resolver.Resolver(read_redis_pool, write_redis_pool, metrics.Metrics("tcp"), main_logs.get_resolver_logs("tcp")),
port=int(port), address='localhost', tcp=True, logger=main_logs.get_dns_logger("tcp")
) for _ in range(config.TCP_THREADS)],
*[dnslib.server.DNSServer(
resolver.Resolver(read_redis_pool, write_redis_pool, metrics.Metrics("udp"), main_logs.get_resolver_logs("udp")),
port=int(port), address='localhost', tcp=False, logger=main_logs.get_dns_logger("udp")
) for _ in range(config.UDP_THREADS)],
]
for i, s in enumerate(servers):
main_logs.info("starting thread {} ({})".format(i+1, s.server))
s.start_thread()
if port:
servers = [
*[dnslib.server.DNSServer(
resolver.Resolver(read_redis_pool, write_redis_pool, metrics.Metrics("tcp"), main_logs.get_resolver_logs("tcp")),
port=int(port), address='localhost', tcp=True, logger=main_logs.get_dns_logger("tcp")
) for _ in range(config.TCP_THREADS)],
*[dnslib.server.DNSServer(
resolver.Resolver(read_redis_pool, write_redis_pool, metrics.Metrics("udp"), main_logs.get_resolver_logs("udp")),
port=int(port), address='localhost', tcp=False, logger=main_logs.get_dns_logger("udp")
) for _ in range(config.UDP_THREADS)],
]
for i, s in enumerate(servers):
main_logs.info("starting thread {} ({})".format(i+1, s.server))
s.start_thread()
else:
print("Not starting any VDNS servers")

try:
while True:
Expand Down
7 changes: 6 additions & 1 deletion helm/templates/daemonset-http.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
{{ if .Values.nginx.httpDaemonsetEnabled }}
apiVersion: apps/v1
kind: DaemonSet
metadata:
Expand Down Expand Up @@ -61,10 +62,13 @@ spec:
{{ if .Values.nginx.enableHostPorts }}
ports:
- containerPort: 80
hostPort: 80
hostPort: {{ .Values.nginx.httpHostPort }}
{{ end }}
- name: vdns
image: {{ .Values.vdns.image }}:{{ .Values.vdns.tag | default .Chart.AppVersion }}
{{ if .Values.vdns.args }}
args: {{ toYaml .Values.vdns.args | nindent 10 }}
{{ end }}
imagePullPolicy: {{ .Values.vdns.imagePullPolicy }}
volumeMounts:
- name: healthz
Expand Down Expand Up @@ -113,3 +117,4 @@ spec:
volumes:
- name: healthz
emptyDir: {}
{{ end }}
2 changes: 2 additions & 0 deletions helm/templates/daemonset-https.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
{{ if .Values.nginx.httpsDaemonsetEnabled }}
apiVersion: apps/v1
kind: DaemonSet
metadata:
Expand Down Expand Up @@ -100,3 +101,4 @@ spec:
value: {{ $.Values.vdns.udpThreads | quote }}
- name: NODE_HEALTHY_FILENAME
value: "disabled"
{{ end }}
3 changes: 3 additions & 0 deletions helm/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,15 @@ nginx:
image: ghcr.io/cloudwebmanage/cwm-worker-ingress/nginx
tag: ""
imagePullPolicy: IfNotPresent
httpDaemonsetEnabled: true
httpHostPort: 80
httpresources:
requests:
cpu: .1
memory: 50Mi
limits:
memory: 200Mi
httpsDaemonsetEnabled: true
httpsResources:
requests:
cpu: .1
Expand Down

0 comments on commit 29b51f4

Please sign in to comment.