diff --git a/infra/vultr-kubernetes/dev/.gitignore b/infra/vultr-kubernetes/dev/.gitignore new file mode 100644 index 0000000..7b782aa --- /dev/null +++ b/infra/vultr-kubernetes/dev/.gitignore @@ -0,0 +1,4 @@ +# created by virtualenv automatically +bin/ +lib/ + diff --git a/infra/vultr-kubernetes/dev/find-server.py b/infra/vultr-kubernetes/dev/find-server.py new file mode 100644 index 0000000..81a7b22 --- /dev/null +++ b/infra/vultr-kubernetes/dev/find-server.py @@ -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}') \ No newline at end of file diff --git a/infra/vultr-kubernetes/dev/pyvenv.cfg b/infra/vultr-kubernetes/dev/pyvenv.cfg new file mode 100644 index 0000000..2ff528d --- /dev/null +++ b/infra/vultr-kubernetes/dev/pyvenv.cfg @@ -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 diff --git a/infra/vultr-kubernetes/dev/requirements.txt b/infra/vultr-kubernetes/dev/requirements.txt new file mode 100644 index 0000000..070c98d --- /dev/null +++ b/infra/vultr-kubernetes/dev/requirements.txt @@ -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