From 2da7c81b43dc30af4393994d75c65b9a9a29406c Mon Sep 17 00:00:00 2001 From: Marian Steinbach Date: Tue, 18 Oct 2022 09:00:31 +0200 Subject: [PATCH] =?UTF-8?q?Automatisierung=20f=C3=BCr=20Job-Erzeugung=20un?= =?UTF-8?q?d=20-Ausf=C3=BChrung=20in=20Kubernetes=20(#232)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add TODO * Add link to example for in-cluster config * Ignore .env files * Mount green-directory clone as a volume * Update kubectl context name * Add a bit of instructions * Let clone_data_directory return early if clone exists --- docker-compose.yaml | 1 + k8s-job-manager.py | 14 +++++++++++++- manager/__init__.py | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 173b4eb..084cf59 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -26,6 +26,7 @@ services: GIT_PASSWORD: ${GIT_PASSWORD} volumes: - ${PWD}/secrets:/secrets + - ${PWD}/cache/green-directory:/workdir/cache/green-directory networks: - internal_network - external_network diff --git a/k8s-job-manager.py b/k8s-job-manager.py index fad29ad..8437c34 100644 --- a/k8s-job-manager.py +++ b/k8s-job-manager.py @@ -1,3 +1,9 @@ +# Howto: +# +# 1. source ./venv/bin/activate.fish +# 2. python cli.py manager +# 3. python k8s-job-manager.py + import config import os @@ -11,6 +17,8 @@ import kubernetes PENDING_LIMIT = 2 RUNNING_LIMIT = 4 +KUBECONTEXT = 'gs-gollum-5jka7-clientcert' + INTERVAL = 10 # Seconds def main(): @@ -20,7 +28,11 @@ def main(): random.seed() random.shuffle(jobs) - kubernetes.config.load_kube_config(context='gs-gollum-5jka7') + # TODO: change to work inside the cluster like shown in + # https://github.com/kubernetes-client/python/blob/master/examples/in_cluster_config.py#L55 + # + kubernetes.config.load_kube_config(context=KUBECONTEXT) + v1client = kubernetes.client.CoreV1Api() k8sclient = kubernetes.client.ApiClient() diff --git a/manager/__init__.py b/manager/__init__.py index 6ce0501..cf70bfe 100644 --- a/manager/__init__.py +++ b/manager/__init__.py @@ -28,7 +28,7 @@ def clone_data_directory(): into the local file system using git """ if os.path.exists(config.GREEN_DIRECTORY_LOCAL_PATH): - shutil.rmtree(config.GREEN_DIRECTORY_LOCAL_PATH) + return Repo.clone_from(config.GREEN_DIRECTORY_REPO, config.GREEN_DIRECTORY_LOCAL_PATH)