Cheeky script to pull IP's out from the cluster w/ ports
Good poc of how to get game server connection info that we will provide to a bot/user
This commit is contained in:
parent
a4a1d55a53
commit
7f2ee6d35b
4
infra/vultr-kubernetes/dev/.gitignore
vendored
Normal file
4
infra/vultr-kubernetes/dev/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# created by virtualenv automatically
|
||||||
|
bin/
|
||||||
|
lib/
|
||||||
|
|
38
infra/vultr-kubernetes/dev/find-server.py
Normal file
38
infra/vultr-kubernetes/dev/find-server.py
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
from argparse import ArgumentParser
|
||||||
|
from argparse import Namespace
|
||||||
|
from kubernetes import client, config
|
||||||
|
import re
|
||||||
|
|
||||||
|
def get_args() -> Namespace:
|
||||||
|
parser = ArgumentParser(
|
||||||
|
prog="Cluster Search Thing",
|
||||||
|
description="General utility for finding resources for game server bot"
|
||||||
|
)
|
||||||
|
games = {"reflex", "minecraft", "nginx"}
|
||||||
|
parser.add_argument('-g', '--game', required=True, choices=games)
|
||||||
|
return parser.parse_args()
|
||||||
|
|
||||||
|
def k8s_api(config_path: str) -> client.api.core_v1_api.CoreV1Api:
|
||||||
|
config.load_kube_config("../config.yaml")
|
||||||
|
print("Getting pod name of our game requested")
|
||||||
|
return client.CoreV1Api()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
args = get_args()
|
||||||
|
|
||||||
|
# Setting up k8s stuff
|
||||||
|
api = k8s_api('../config.yaml')
|
||||||
|
print(type(api))
|
||||||
|
pods = api.list_pod_for_all_namespaces(label_selector=f'app={args.game}')
|
||||||
|
|
||||||
|
# Now we collect specific data about the game server we requested
|
||||||
|
port = pods.items[0].spec.containers[0].ports[0].container_port
|
||||||
|
|
||||||
|
# Collecting the IPV4 of the node that contains the pod(container)
|
||||||
|
# we actually care about. Since these pods only have 1 container
|
||||||
|
node_name = pods.items[0].spec.node_name
|
||||||
|
node_ips = list(filter(lambda a: a.type == 'ExternalIP', api.list_node().items[0].status.addresses))
|
||||||
|
ipv4 = list(filter(lambda item: not re.match('[\d\.]{3}\d', item.address), node_ips))[0].address
|
||||||
|
ipv6 = list(filter(lambda item: re.match('[\d\.]{3}\d', item.address), node_ips))[0].address
|
||||||
|
|
||||||
|
print(f'{args.game} --> {ipv4}:{port} ~~> {ipv6}:{port}')
|
8
infra/vultr-kubernetes/dev/pyvenv.cfg
Normal file
8
infra/vultr-kubernetes/dev/pyvenv.cfg
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
home = /usr
|
||||||
|
implementation = CPython
|
||||||
|
version_info = 3.10.12.final.0
|
||||||
|
virtualenv = 20.13.0+ds
|
||||||
|
include-system-site-packages = false
|
||||||
|
base-prefix = /usr
|
||||||
|
base-exec-prefix = /usr
|
||||||
|
base-executable = /usr/bin/python3
|
18
infra/vultr-kubernetes/dev/requirements.txt
Normal file
18
infra/vultr-kubernetes/dev/requirements.txt
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
cachetools==5.5.0
|
||||||
|
certifi==2024.8.30
|
||||||
|
charset-normalizer==3.4.0
|
||||||
|
durationpy==0.9
|
||||||
|
google-auth==2.36.0
|
||||||
|
idna==3.10
|
||||||
|
kubernetes==31.0.0
|
||||||
|
oauthlib==3.2.2
|
||||||
|
pyasn1==0.6.1
|
||||||
|
pyasn1_modules==0.4.1
|
||||||
|
python-dateutil==2.9.0.post0
|
||||||
|
PyYAML==6.0.2
|
||||||
|
requests==2.32.3
|
||||||
|
requests-oauthlib==2.0.0
|
||||||
|
rsa==4.9
|
||||||
|
six==1.17.0
|
||||||
|
urllib3==2.2.3
|
||||||
|
websocket-client==1.8.0
|
Loading…
Reference in New Issue
Block a user