From 3cde5e28a8d946c1110697946b180027204b5d2c Mon Sep 17 00:00:00 2001 From: Leon Klingele Date: Mon, 3 Feb 2020 23:19:18 +0100 Subject: Add support to run on Kubernetes, add Helm chart See relevant README.md for more details. --- kubernetes/README.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 kubernetes/README.md (limited to 'kubernetes/README.md') diff --git a/kubernetes/README.md b/kubernetes/README.md new file mode 100644 index 00000000..163e9cd7 --- /dev/null +++ b/kubernetes/README.md @@ -0,0 +1,42 @@ +# Invidious Helm chart + +Easily deploy Invidious to Kubernetes. + +## Installing Helm chart + +```sh +# Build Helm dependencies +$ helm dep build + +# Add PostgreSQL init scripts +$ kubectl create configmap invidious-postgresql-init \ + --from-file=../config/sql/channels.sql \ + --from-file=../config/sql/videos.sql \ + --from-file=../config/sql/channel_videos.sql \ + --from-file=../config/sql/users.sql \ + --from-file=../config/sql/session_ids.sql \ + --from-file=../config/sql/nonces.sql \ + --from-file=../config/sql/annotations.sql \ + --from-file=../config/sql/playlists.sql \ + --from-file=../config/sql/playlist_videos.sql \ + --from-file=../config/sql/privacy.sql + +# Install Helm app to your Kubernetes cluster +$ helm install invidious ./ +``` + +## Upgrading + +```sh +# Upgrading is easy, too! +$ helm upgrade invidious ./ +``` + +## Uninstall + +```sh +# Get rid of everything (except database) +$ helm delete invidious + +# To also delete the database, remove all invidious-postgresql PVCs +``` -- cgit v1.2.3 From c80c5631f0483c32c3b86bad3584c349a61b4b92 Mon Sep 17 00:00:00 2001 From: leonklingele Date: Sun, 1 Mar 2020 17:06:45 +0100 Subject: docker: do not require password for PostgreSQL superuser, docker,kubernetes: create "privacy" type before using it, travis: do not run "docker-compose up" in detached mode (#1042) * docker: do not require password for PostgreSQL superuser A password is now required by the postgres Docker image which makes initial setup (and our CI build) fail with the following error: postgres_1 | Error: Database is uninitialized and superuser password is not specified. postgres_1 | You must specify POSTGRES_PASSWORD for the superuser. Use postgres_1 | "-e POSTGRES_PASSWORD=password" to set it in "docker run". postgres_1 | postgres_1 | You may also use POSTGRES_HOST_AUTH_METHOD=trust to allow all connections postgres_1 | without a password. This is *not* recommended. See PostgreSQL postgres_1 | documentation about "trust": postgres_1 | https://www.postgresql.org/docs/current/auth-trust.html See https://github.com/docker-library/postgres/issues/681. * docker,kubernetes: create PostgreSQL "privacy" type before using it Fixes the following error when setting up the database: postgres_1 | 2020-02-21 01:01:22.371 UTC [172] ERROR: type "privacy" does not exist at character 200 postgres_1 | 2020-02-21 01:01:22.371 UTC [172] STATEMENT: CREATE TABLE public.playlists postgres_1 | ( postgres_1 | title text, postgres_1 | id text primary key, postgres_1 | author text, postgres_1 | description text, postgres_1 | video_count integer, postgres_1 | created timestamptz, postgres_1 | updated timestamptz, postgres_1 | privacy privacy, postgres_1 | index int8[] postgres_1 | ); postgres_1 | ERROR: type "privacy" does not exist postgres_1 | LINE 10: privacy privacy, * travis: do not run "docker-compose up" in detached mode Rather, allow database to finish its setup procedure and grant Invidious time to launch. --- .travis.yml | 2 +- docker/Dockerfile.postgres | 3 +++ kubernetes/README.md | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) (limited to 'kubernetes/README.md') diff --git a/.travis.yml b/.travis.yml index 314abc73..8b83db2a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,7 +27,7 @@ jobs: install: - docker-compose build script: - - docker-compose up -d + - docker-compose up - sleep 15 # Wait for cluster to become ready, TODO: do not sleep - HEADERS="$(curl -I -s http://localhost:3000/)" - STATUS="$(echo $HEADERS | head -n1)" diff --git a/docker/Dockerfile.postgres b/docker/Dockerfile.postgres index 720bdff8..3b25b802 100644 --- a/docker/Dockerfile.postgres +++ b/docker/Dockerfile.postgres @@ -1,6 +1,9 @@ FROM postgres:10 ENV POSTGRES_USER postgres +# Do not require a PostgreSQL superuser password. +# See https://github.com/docker-library/postgres/issues/681. +ENV POSTGRES_HOST_AUTH_METHOD trust ADD ./config/sql /config/sql ADD ./docker/entrypoint.postgres.sh /entrypoint.sh diff --git a/kubernetes/README.md b/kubernetes/README.md index 163e9cd7..1c62f469 100644 --- a/kubernetes/README.md +++ b/kubernetes/README.md @@ -17,9 +17,9 @@ $ kubectl create configmap invidious-postgresql-init \ --from-file=../config/sql/session_ids.sql \ --from-file=../config/sql/nonces.sql \ --from-file=../config/sql/annotations.sql \ + --from-file=../config/sql/privacy.sql \ --from-file=../config/sql/playlists.sql \ - --from-file=../config/sql/playlist_videos.sql \ - --from-file=../config/sql/privacy.sql + --from-file=../config/sql/playlist_videos.sql # Install Helm app to your Kubernetes cluster $ helm install invidious ./ -- cgit v1.2.3 From 61150c74d21bc98e4b819602bbca67ca23b82dc0 Mon Sep 17 00:00:00 2001 From: Omar Roth Date: Tue, 14 Apr 2020 18:08:58 -0500 Subject: Move privacy type into playlists.sql --- README.md | 1 - config/sql/playlists.sql | 11 +++++++++++ config/sql/privacy.sql | 10 ---------- docker/entrypoint.postgres.sh | 1 - kubernetes/README.md | 1 - 5 files changed, 11 insertions(+), 13 deletions(-) delete mode 100644 config/sql/privacy.sql (limited to 'kubernetes/README.md') diff --git a/README.md b/README.md index 3d453208..d8cc1c6e 100644 --- a/README.md +++ b/README.md @@ -115,7 +115,6 @@ $ psql invidious kemal < /home/invidious/invidious/config/sql/users.sql $ psql invidious kemal < /home/invidious/invidious/config/sql/session_ids.sql $ psql invidious kemal < /home/invidious/invidious/config/sql/nonces.sql $ psql invidious kemal < /home/invidious/invidious/config/sql/annotations.sql -$ psql invidious kemal < /home/invidious/invidious/config/sql/privacy.sql $ psql invidious kemal < /home/invidious/invidious/config/sql/playlists.sql $ psql invidious kemal < /home/invidious/invidious/config/sql/playlist_videos.sql $ exit diff --git a/config/sql/playlists.sql b/config/sql/playlists.sql index 46ff30ec..468496cb 100644 --- a/config/sql/playlists.sql +++ b/config/sql/playlists.sql @@ -1,3 +1,14 @@ +-- Type: public.privacy + +-- DROP TYPE public.privacy; + +CREATE TYPE public.privacy AS ENUM +( + 'Public', + 'Unlisted', + 'Private' +); + -- Table: public.playlists -- DROP TABLE public.playlists; diff --git a/config/sql/privacy.sql b/config/sql/privacy.sql deleted file mode 100644 index 4356813e..00000000 --- a/config/sql/privacy.sql +++ /dev/null @@ -1,10 +0,0 @@ --- Type: public.privacy - --- DROP TYPE public.privacy; - -CREATE TYPE public.privacy AS ENUM -( - 'Public', - 'Unlisted', - 'Private' -); diff --git a/docker/entrypoint.postgres.sh b/docker/entrypoint.postgres.sh index 1588c56c..be6f6782 100755 --- a/docker/entrypoint.postgres.sh +++ b/docker/entrypoint.postgres.sh @@ -19,7 +19,6 @@ if [ ! -f /var/lib/postgresql/data/setupFinished ]; then su postgres -c 'psql invidious kemal < config/sql/session_ids.sql' su postgres -c 'psql invidious kemal < config/sql/nonces.sql' su postgres -c 'psql invidious kemal < config/sql/annotations.sql' - su postgres -c 'psql invidious kemal < config/sql/privacy.sql' su postgres -c 'psql invidious kemal < config/sql/playlists.sql' su postgres -c 'psql invidious kemal < config/sql/playlist_videos.sql' touch /var/lib/postgresql/data/setupFinished diff --git a/kubernetes/README.md b/kubernetes/README.md index 1c62f469..35478f99 100644 --- a/kubernetes/README.md +++ b/kubernetes/README.md @@ -17,7 +17,6 @@ $ kubectl create configmap invidious-postgresql-init \ --from-file=../config/sql/session_ids.sql \ --from-file=../config/sql/nonces.sql \ --from-file=../config/sql/annotations.sql \ - --from-file=../config/sql/privacy.sql \ --from-file=../config/sql/playlists.sql \ --from-file=../config/sql/playlist_videos.sql -- cgit v1.2.3