From 242de745799c755cf236c95a9b333ab24ce58ad3 Mon Sep 17 00:00:00 2001 From: HubbeKing Date: Mon, 13 Sep 2021 17:05:46 +0300 Subject: [PATCH] Add support for playlist_manager to k8s.jsonnet --- k8s.jsonnet | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/k8s.jsonnet b/k8s.jsonnet index c7da73f..8506d1c 100644 --- a/k8s.jsonnet +++ b/k8s.jsonnet @@ -30,7 +30,7 @@ sheetsync: false, thrimshim: true, segment_coverage: true, - playlist_manager: false, // TODO, docker-compose only for now + playlist_manager: false, nginx: true, postgres: false, }, @@ -189,7 +189,7 @@ // with only a different image, CLI args and possibly env vars. // The image name is derived from the component name // (eg. "downloader" is quay.io/ekimekim/wubloader-downloader) - // so we only pass in name, args and env vars (with the latter two optional). + // so we only pass in name as a required arg. // Optional kwargs work just like python. deployment(name, args=[], env=[], volumes=[], volumeMounts=[]):: { kind: "Deployment", @@ -212,6 +212,7 @@ { name: name, // segment-coverage is called segment_coverage in the image, so replace - with _ + // ditto for playlist-manager image: "quay.io/ekimekim/wubloader-%s:%s" % [std.strReplace(name, "-", "_"), $.config.image_tag], args: args, volumeMounts: [{name: "data", mountPath: "/mnt"}] + volumeMounts, @@ -399,6 +400,24 @@ volumeMounts=[ {mountPath: "/etc/creds", name: "wubloader-creds"}, ]), + // playlist_manager adds videos to youtube playlists depending on tags + if $.config.enabled.playlist_manager then $.deployment("playlist-manager", + args=[ + "--backdoor-port", std.toString($.config.backdoor_port), + "--metrics-port", "80", + "--upload-location-allowlist", std.join(",", $.youtube_upload_locations), + $.config.db_connect, + "/etc/creds/cutter_creds.json" + ] + [ + "%s=%s" % [playlist, std.join(",", $.playlists[playlist])] + for playlist in std.objectFields($.playlists) + ], + volumes=[ + {name:"wubloader-creds", secret: {secretname: "wubloader-creds"}} + ], + volumeMounts=[ + {mountPath: "/etc/creds", name: "wubloader-creds"}, + ]), // Normally nginx would be responsible for proxying requests to different services, // but in k8s we can use Ingress to do that. However nginx is still needed to serve // static content - segments as well as thrimbletrimmer. @@ -430,6 +449,7 @@ if $.config.enabled.segment_coverage then $.service("segment-coverage"), if $.config.enabled.thrimshim then $.service("thrimshim"), if $.config.enabled.cutter then $.service("cutter"), + if $.config.enabled.playlist_manager then $.service("playlist-manager"), if $.config.enabled.sheetsync then $.service("sheetsync"), if $.config.enabled.postgres then $.service("postgres"), // Secret for cutter_creds_file and sheetsync_creds_file @@ -524,6 +544,7 @@ metric_rule("thrimshim"), metric_rule("cutter"), metric_rule("sheetsync"), + metric_rule("playlist_manager"), // Map /segments and /thrimbletrimmer to the static content nginx rule("nginx", "/segments", "Prefix"), rule("nginx", "/thrimbletrimmer", "Prefix"),