Skip to content

Commit

Permalink
v5.0.0: backup/restore apps, overhaul TTS, add new node to existing…
Browse files Browse the repository at this point in the history
… cluster + 🐛 fixes (#210)

* actually apply the seaweedfs appset after restoring the seaweedfs PVCs

* fix subproc calls for recovery job checking

* refine postgres recovery job checking a bit more

* add some color to success and failure reporting in the logs and allow more restore job checking to fail

* drastically simply how we check that the recovery job is done by just waiting on it

* put restore into it's own tab

* make sure if we can't get the deployment immediately for nextcloud, we keep trying

* add restic to required docs

* fix cap header for matrix

* fixing matrix restores and parametizing more of nextcloud restores

* switch to using argocd as an object

* updating poetry lock file

* fix typo of recusion to recursion

* start fleshing out the new backup button to do restic pvc backups

* add cnpg backups to default supported backups

* rig up backup button for on demand backups ❇️

* databases exist outside of nextcloud

* simplify nextcloud occ commands in backup.py

* change name from postgresql to postgres

* overhaul of backups and restores. backups via the tui should work for nextcloud now

* move value_from function out of tui widget and into general utils as smol_k8s_lab.utils.value_from.extract_secret

* update value from function to do more error checking

* use backups section instead of secret keys but still update secret keys in appset secret plugin secret

* move repetitive backup processing to value_from lib and have nextcloud use it

* setup backups and restores for matrix

* finish up initial setting up of backup and restore functions for zitadel, mastodon, matrix, nextcloud, and home assistant

* catch error of unable to get serverVersion when docker is not enabled and the cluster is k3d or kind. we now log an error and suggest enabling docker but set platform and version to unkown

* should be serverVersion not semverVersion

* generate audio for macos 64 bit arm, and unknown cluster versions

* make backup jobs unique by giving them timestamps

* update poetry lock

* finally found the perfect kubectl cmd to make backup button finish

the backup button wasn't finishing because the job wait command was timing out. set timeout to 15m because backup can take a really long time depending on how much data you are backing up and what your connection speeds are

* split off trigger_backup into its own worker method

* change where we we declare the hostname for zitadel

* fix up disabling of displayed rows for restore widget

* fix home assistant header and vouch's too, but also clean up unused keycloak stuff in vouch

* fix display of snapshot grid on start if we have restores disabled

* cache getting restore_enabled and snapshots out of dicts into self for restores widget

* change RestoreAppConfig to RestoreApp and change references to restic_snapshot_ids to snapshots within that widget

* update backup tooltips and try to speed up mounting

* never print output from create secret unless there's an error

* fix variable names for vouch and comment out more keycloak stuff

* update how we do zitadel headers so we talk about explicitly syncing vs setting up zitadel

* quietly do backups in the background via the backup widget

* display an orange loading indicator while we do the backup in the background

* fix more places where we don't need spinner if this is called from the tui

* fix notfiy spacing and add tooltip to loading indicator for backups in tui

* speed up input widget a tad

* clean up names of smol-k8s-lab generated backups and further clean up backup notifications in tui

* fix color of header rows

* fix schedule name input for backup widget

* fix OAuth typo

* add backup credentials to default generated home assistant credentials

* fix home assistant s3 backups credentials

* fix tool tips for s3 backups section in tui to display key instead of value

* catch issue where sometimes cnpg restore is not possible at all

* fix issue where we were using _ instead of - for home assistant backups and restores

* catch more issues with _ vs -

* create home assistant pvc with new pvc capacity

* update constants for smol-tts to output audio to a config directory

* allow for running using integrated macos gpu when on arm64 machine types, else, check for cuda, and if not cuda use cpu for torch

* update poetry.lock for a mac

* only generate audio file if the old one doesn't exist

* update smol-tts to do more checking before regenerating an mp3

* fix underscore to hyphen issue, again, with home assistant

* fix restic repo password for prcoess backup vals func

* fix backup schedule appset secret plugin updates

* always apply the external secrets for home assistant restores

* fix allt he references to external_secrets_appset.yaml to be external_secrets_argocd_appset.yaml

* udpate to use pyglet instead of playsound or playaudio

* update poetry lock

* switching to pyglet everywhhere

* add a plain non-k8up restic restore job and a recreate_pvc function to share between that and the seaweedfs pvc creation

* add timestamps to restore jobs and mount_path to plain restic restore job

* add a wait section to restore plain restic job function

* reload home assistant deployment after we restore it and template out the home assistant namespace for restores

* allow always restoring home assistant, even if it's already installed and running

* optimize getting deployments and pod names and always use defined argocd namespace for appset secret plugin

* fix create_resitc_restore_job typo to be create_restic_restore_job

* switch to using sync argocd app instead of refreshing deployment for appset secret plugin

* need to pass in HOME to get restic snapshots, need to pass in namespace to put the restore job in the right place

* fix where we get home assistant namespace and fix occurances of tolerations_ to be toleration_ for all variables

* adding namespace to getting pod names and making sure to not get list index of pods unless it list is populated

* fix where we get sensitive values, and make sure we get restic_repo_password with a default value

* switching to pygame for audio because nothing else is consistent

* debian: verify pygame is now working appropriately for audio in the tui

* remove commented cruft

* add delete app button

* fix delete button spacing

* fix restore_seaweedfs call for nextcloud and allow rollout check to fail

* add some more logging for syncing and deleting apps

* add some error catching for if we can't find a nextcloud pod, and use our K8s lib for getting the pod

* add some more logging and checking around restores and use re-usable function for restoring app PVCs for matrix and nextcloud

* catch issue where sometimes a snapshot ID is only numbers, so we convert the int to a str

* restores: label values file with app name, reuse barman object for cnpg restore, remove trailing slash from s3 bucket destination for cnpg

* name the cnpg cluster the same as the end result when recovering

* allow anything with postgres-cluster to grab the cnpg-cluster targetRevision from argocd

* don't require getting pod to finish with return for nextcloud, add a timeout of 30 minutes to the postgres restore job

* allow extra labels for getting pod name

* update how we fix maintainence mode for nextcloud after restore

* make recovery backup and scheduled backup sections for cnpg {} instead of [] and use copy of barman_obj for recovery

* fix incorrect username used for restores of cnpg

* clean up unused values for cnpg operator

* simplify the restore dict updates after restore for cnpg cluster

* try installing alsa for linux ci

* add docs about installing alsa on debian

* attempt to get alsa working via ci

* only mess with secrets if matrix's restore is enabled

* fix post restore job for cnpg

* fix matrix namespace declaration

* simplify updating matrix pvc during restores by templating the pvc name

* set externalClusters to [] after restore of cnpg cluster

* add wal parallel back to backups and compress the restore dict a bit

* adding gzip and maxparallel 8 for wal archive for cnpg restores

untested with matrix or nextcloud

* try just disabling mixer if audio device not enabled

* add log message of no audio device found

* remove gzip from wal archives for cnpg restores

* adjust wall archives to be 4 at once instead of 8

* max said they would order pizza when this was working :fingers_crossed:

* move minio_lib to utils and add get_object and list_object methods, then make sure we pass in the backup id to restores

* always make sure the final wal archive is there for backups of cnpg databases

* update ArgoCD to have optional k8s requirement

* add backup credentials getting

* always grab the s3 endpoint if cnpg restores are enabled

* only use ArgoCD in apps_screen if this is an existing cluster

* fix namespace missing from backup

* add .decode('utf-8') to get str of pgsql s3 creds

* don't show backup now button unless this is an existing cluster

* update backups to always check for end wal file for cnpg, and clean up backups tui

* check in attempts to make restores work again

* wait an additional 30 seconds on that backup just in case

* wait for s3 to be up before applying recovery job for cnpg operator, and always download the backup.info

* retry syncs if they fail

* immediately install the argocd appset plugin before argo is fully managed by itself

* update install the argocd appset plugin

* add more logging for restores and call it restore_cnpg_cluster instead of restore_postgresql

* maybe fix appset secret plugin url

* fix missing updates of s/restore_postgresql/restore_cnpg_cluster/

* updating argocd appset plugin to create the argocd project ahead of time

* actually break out of loop checking for s3 being up for cnpg restores

* make sure to get the correct source_repos for the project, and properly template all the namespaces too

* fix unexpected key error for vouch

* switching back to immediate restore and adding more backup safety checks

* change how we do backups for cnpg to always wait till we can consistently get the correct wal, this time for real, we hope

* add a bit of a pause between checks for the backup.info file in s3 for cnpg restores

* use new kwargs format for helm class

* accomadate postgres and pvc schedule settings

* switch from s3_user and s3_pass to secretAccessKey and accessKeyId

* finish up standardizing s3 credentials

* don't check in any logs we generate locally

* simply restores everywhere and always take postgres schedule for restores as a variable

* add a basic wait command for kubernetes and make sure we wait for seaweedfs to be fully up before continuing restore process

* fix default config to run postgres backups at midnight and file backups at midnight ten

* keep trying after a wait fails to find resources for smol-k8s-lab

* allow waits to fail for k8s and set loglevel to warn for argocd app wait/sync

* try to fix calls to helm lib

* add comment about what we're doing in argo setup func

* don't show the hello from pygame message

* always ignore the main en and nl dirs

* always ignore the full audio files

* update appimage creation process

* linting and commenting

* add tar and untar commands

* print how long it took in both english and dutch, change order of checking which options were passed in for smol-tts

* add a keys section and update unknown verison text

* add project name for argocd tests

* add argocd_config['argo']['cluster'] for all the ci tests

* speed up init values loading by swiching away from a collapsible

* clean up colors

* change green to explicit hex

* fix mastodon restore error of too many arguments

* fix space typo for argocd app sync command

* optimize tui loading for apps screen a bit more

* add first app is audio for selection list

* add first app is audio for selection list

* cleaning up and refactoring for speed and audio in tui

* remove a layer of vertical scroll container for apps screen

* update how we deal with unfound audio files; also add additional phrases; also fix the scroll bars and nested containers

* tidying help text screenshot

* move k9s to be run command and move (and subproc) under utils.run

also do minor refactor of both smol-k8s-lab and tui-config screens

* clean up run command some more and upgrade textual

* cleaning up screenshots

* finally finish up final_command styling and option selection

* change all - commands to have spaces instead for run_command

* actually insert the final command

* fix option evaluation for final run command

* fix ci tests to include final command test and make sure we accept same window as option for window behavior

* update credentials screen sizing and screenshot

* change size of apps config modify globals button

* add id to modify globals button so we can use it for tcss queries. add new screnshot of apps screen

* update apps screen screenshot again

* cleaning up a bit

* more cleaning

* update existing clsuter screenshot

* add new start screen with existing cluster example

* update start screen screenshot

* add better logging password config and run command screenshot

* fix modal screen buttons for some font types

* update new node widget and screen

* adding new screenshots for new node widget and new nodes screen

* add modify global params modal screen screenshot

* update make screenshots script

* add modify node modal screen

* tidy up the audio for node modification screens

* add delete node modal screenshot

* docs: add new apps screen screenshots, linting, replace jessebot with small-hack org

* linting and updating descriptions

* update the add remote node screenshot and alt text

* update tui screenshots and config file examples

* add cluster parameter to all apps and change ref to revision anywhere that was left over

* update the backup sections of all the backup supported apps and also all the sensitive values for all the supported apps, and update the libraries and format of default landing page

* do a minor clean up of all the experimental apps

* add new input names for k3d and kind node inputs for audio

* finish up generating audio for all of the distro screen for both kind and k3d

* update networking tab audio to be 'networking options tab'

* add backup and restore tabs for audio generation

* add some more phrases for backups

* fix saying app bug

* fix how we say PVC

* fix more backups input audio

* more troubleshooting of restic repo password audio

* fix restic repo input audio generation

* update s3 configuration collapsible audio generation

* regenerate many input fields audio

* add more input to the ends of things

* update audio widget to process node datatable and always say input after input id is read

* add button as a default thing we say and remove button from ending of all other phrases

* add button say method

* update screen descriptions for config screens

* remove word button from focused so we don't try to say it twice

* switch to saying drop down menu if we find a select

* switch to special switch method

* add switch phrase

* try to say split better and add window behavior select phrase

* clean up more input fields to reduce words needed

* add some more links for accessibility

* adding the audio files finally

* change all the refs of feature branch back to regular main branch and change verison back to v5

* switch from valueFrom to value_from to be consistent

* update docs for both nextcloud and matrix backup and restores

* add a basic roadmap

* update help image

* add more roadmap stuff

* prep for appimage test

* add logo for smol-k8s-lab, why not

* updating deps

* add latest audio tarball

* update appimage config yaml for testing

* note that brew is still wonky and disable generating audio on tag

* update home assistant and zitadel backups and restores and clean up typos in matrix and nextcloud
  • Loading branch information
jessebot authored May 15, 2024
1 parent 4bd1c26 commit 857a22f
Show file tree
Hide file tree
Showing 155 changed files with 17,933 additions and 5,734 deletions.
40 changes: 40 additions & 0 deletions .github/smol-k8s-lab-appimage.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# This is an example for making an AppImage from a python3 smol-k8s-lab application
# using virtualenv and pip3

app: smol-k8s-lab

ingredients:
dist: bookworm
sources:
- deb http://us.archive.ubuntu.com/ubuntu/ bookworm bookworm-updates bookworm-security main universe
- deb http://us.archive.ubuntu.com/ubuntu/ bookworm-updates main universe
- deb http://us.archive.ubuntu.com/ubuntu/ bookworm-security main universe
packages:
- python3.12-venv
# these are for making sound work
- libasound2-data
- libasound2-plugins
- libasound2
script:
- wget -c https://raw.githubusercontent.com/small-hack/smol-k8s-lab/feat/restore-app/docs/assets/images/icons/logo.png
- wget -c https://raw.githubusercontent.com/small-hack/smol-k8s-lab/feat/restore-app/smol_k8s_lab/config/smol-k8s-lab.appdata.xml

script:
- cp smol-k8s-lab.png ./usr/share/icons/hicolor/256x256/
- cp smol-k8s-lab.png .
- mkdir -p usr/share/metainfo/ ; cp smol-k8s-lab.appdata.xml usr/share/metainfo/
- virtualenv --python=python3 usr
- ./usr/bin/pip3 install smol-k8s-lab
- cat > usr/share/applications/smol-k8s-lab.desktop <<\EOF
- [Desktop Entry]
- Type=Application
- Name=smol-k8s-lab
- Comment=CLI and TUI to quickly install slimmer Kubernetes distros and then manage apps declaratively using Argo CD
- Icon=smol-k8s-lab
- Exec=smol-k8s-lab
- Terminal=true
- Categories=Application;Development;
- Keywords=Python;Kubernetes;
- EOF
- cp usr/share/applications/smol-k8s-lab.desktop .
- usr/bin/pip3 freeze | grep "smol-k8s-lab" | cut -d "=" -f 3 >> ../VERSION
37 changes: 20 additions & 17 deletions .github/smol_k8s_lab_config_k3d.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ smol_k8s_lab:
on_focus: true
# ring the built in terminal bell when something is wrong
on_error: true
text_to_speech:
text_to_speech:
# use a specific program for text to speech - needs to be a full path
# macOS default: say
speech_program: say
Expand All @@ -26,16 +26,16 @@ smol_k8s_lab:
# press f5 to read the element id and selected row of DataTables
on_key_press: true

# enable text to speech
# k9s is a terminal UI dashboard and interface for interacting with Kubernetes
k9s:
# when set to true, if smol-k8s-lab is in interactive mode, it runs k9s
# immediately after the cluster is up and enabled apps have been installed
enabled: false
# default command to run when k9s launches. Defaults to application.argoproj.io
# so that you can view the status of all of your argo apps immediately. This
# default results in running: k9s --command applications.argoproj.io
command: applications.argoproj.io
run_command:
# command to run after smol-k8s-lab tui is done or immediately when running
command: echo 'we did it'
# tell me which terminal you use if you'd like to use split or tab features
terminal: wezterm
# where to run the command, options: same window, new window, new tab,
# split left, split right, split top, split bottom
# if set to "same window", we just run it in the same window after we're
# done the entire smol-k8s-lab cli run
window_behavior: same window

# logging config for the smol-k8s-lab CLI
log:
Expand Down Expand Up @@ -68,7 +68,7 @@ k8s_distros:
enabled: false
# if k8s_distro set to k3s/k3d, you can add an array of extra arguments to pass
# to the k3s install script as a k3s.yaml file. If you enable cilium, we
# automatically pass in flannel-backend: none and disable-network-policy: true
# automatically pass in flannel-backend: none and disable-network-policy: true
k3s_yaml:
# if you enable MetalLB, we automatically add servicelb to the disable list
# enables encryption at rest for Kubernetes secrets
Expand All @@ -87,7 +87,7 @@ k8s_distros:
enabled: true
# if k8s_distro set to k3s/k3d, you can add an array of extra arguments to pass
# to the k3s install script as a k3s.yaml file. if you enable cilium, we
# automatically pass in flannel-backend: none and disable-network-policy: true
# automatically pass in flannel-backend: none and disable-network-policy: true
k3s_yaml:
# if you enable MetalLB, we automatically add servicelb to the disable list
# enables encryption at rest for Kubernetes secrets
Expand Down Expand Up @@ -157,6 +157,8 @@ apps:
hostname: "argocd.test.com"
# which oidc provider to use for Argo CD: defaults to Zitadel
oidc_provider: "zitadel"
# kubernetes cluster to install the k8s app into, defaults to Argo CD default
cluster: https://kubernetes.default.svc
# git repo to install the Argo CD app from
repo: "https://github.com/small-hack/argocd-apps"
# path in the argo repo to point to. Trailing slash very important!
Expand All @@ -170,6 +172,7 @@ apps:
directory_recursion: true
# source repos for Argo CD argo-cd Project (in addition to argo_cd.argo.repo)
project:
name: argo-cd
source_repos:
- https://argoproj.github.io/argo-helm
- https://small-hack.github.io/appset-secret-plugin
Expand Down Expand Up @@ -482,7 +485,7 @@ apps:
kubevirt:
description: |
[link=https://kubevirt.io/]kubevirt[/link] lets you manage virtual machines via Kubernetes.
# default disabled while a helm chart is being actively developed
enabled: false
argo:
Expand All @@ -500,7 +503,7 @@ apps:
directory_recursion: false
# source repos for Argo CD App Project (in addition to argo.repo)
project:
source_repos:
source_repos:
- "https://github.com/small-hack/argocd-apps"
destination:
# automatically includes the app's namespace and argocd's namespace
Expand Down Expand Up @@ -567,7 +570,7 @@ apps:
admin_user: tootadmin
# hostname that users go to in the browser
hostname: ""
# set the local s3 provider for mastodon's public data in one bucket
# set the local s3 provider for mastodon's public data in one bucket
# and private database backups in another. can be minio or seaweedfs
s3_provider: seaweedfs
# how large the backing pvc's capacity should be for minio or seaweedfs
Expand Down Expand Up @@ -609,7 +612,7 @@ apps:
This deploys a matrix synapse server, element (web frontend), and turn server (voice)
smol-k8s-lab supports initialization by creating initial secrets for your:
- matrix, element, and federation hostnames,
- matrix, element, and federation hostnames,
- credentials for: postgresql, admin user, S3 storage, and SMTP
smol-k8s-lab also sets up an OIDC application via Zitadel.
Expand Down
37 changes: 20 additions & 17 deletions .github/smol_k8s_lab_config_k3s.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ smol_k8s_lab:
on_focus: true
# ring the built in terminal bell when something is wrong
on_error: true
text_to_speech:
text_to_speech:
# use a specific program for text to speech - needs to be a full path
# macOS default: say
speech_program: say
Expand All @@ -26,16 +26,16 @@ smol_k8s_lab:
# press f5 to read the element id and selected row of DataTables
on_key_press: true

# enable text to speech
# k9s is a terminal UI dashboard and interface for interacting with Kubernetes
k9s:
# when set to true, if smol-k8s-lab is in interactive mode, it runs k9s
# immediately after the cluster is up and enabled apps have been installed
enabled: false
# default command to run when k9s launches. Defaults to application.argoproj.io
# so that you can view the status of all of your argo apps immediately. This
# default results in running: k9s --command applications.argoproj.io
command: applications.argoproj.io
run_command:
# command to run after smol-k8s-lab tui is done or immediately when running
command: echo 'we did it'
# tell me which terminal you use if you'd like to use split or tab features
terminal: wezterm
# where to run the command, options: same window, new window, new tab,
# split left, split right, split top, split bottom
# if set to "same window", we just run it in the same window after we're
# done the entire smol-k8s-lab cli run
window_behavior: same window

# logging config for the smol-k8s-lab CLI
log:
Expand Down Expand Up @@ -68,7 +68,7 @@ k8s_distros:
enabled: true
# if k8s_distro set to k3s/k3d, you can add an array of extra arguments to pass
# to the k3s install script as a k3s.yaml file. If you enable cilium, we
# automatically pass in flannel-backend: none and disable-network-policy: true
# automatically pass in flannel-backend: none and disable-network-policy: true
k3s_yaml:
# if you enable MetalLB, we automatically add servicelb to the disable list
# enables encryption at rest for Kubernetes secrets
Expand All @@ -87,7 +87,7 @@ k8s_distros:
enabled: false
# if k8s_distro set to k3s/k3d, you can add an array of extra arguments to pass
# to the k3s install script as a k3s.yaml file. if you enable cilium, we
# automatically pass in flannel-backend: none and disable-network-policy: true
# automatically pass in flannel-backend: none and disable-network-policy: true
k3s_yaml:
# if you enable MetalLB, we automatically add servicelb to the disable list
# enables encryption at rest for Kubernetes secrets
Expand Down Expand Up @@ -157,6 +157,8 @@ apps:
hostname: "argocd.test.com"
# which oidc provider to use for Argo CD: defaults to Zitadel
oidc_provider: "zitadel"
# kubernetes cluster to install the k8s app into, defaults to Argo CD default
cluster: https://kubernetes.default.svc
# git repo to install the Argo CD app from
repo: "https://github.com/small-hack/argocd-apps"
# path in the argo repo to point to. Trailing slash very important!
Expand All @@ -170,6 +172,7 @@ apps:
directory_recursion: true
# source repos for Argo CD argo-cd Project (in addition to argo_cd.argo.repo)
project:
name: argo-cd
source_repos:
- https://argoproj.github.io/argo-helm
- https://small-hack.github.io/appset-secret-plugin
Expand Down Expand Up @@ -482,7 +485,7 @@ apps:
kubevirt:
description: |
[link=https://kubevirt.io/]kubevirt[/link] lets you manage virtual machines via Kubernetes.
# default disabled while a helm chart is being actively developed
enabled: false
argo:
Expand All @@ -500,7 +503,7 @@ apps:
directory_recursion: false
# source repos for Argo CD App Project (in addition to argo.repo)
project:
source_repos:
source_repos:
- "https://github.com/small-hack/argocd-apps"
destination:
# automatically includes the app's namespace and argocd's namespace
Expand Down Expand Up @@ -567,7 +570,7 @@ apps:
admin_user: tootadmin
# hostname that users go to in the browser
hostname: ""
# set the local s3 provider for mastodon's public data in one bucket
# set the local s3 provider for mastodon's public data in one bucket
# and private database backups in another. can be minio or seaweedfs
s3_provider: seaweedfs
# how large the backing pvc's capacity should be for minio or seaweedfs
Expand Down Expand Up @@ -609,7 +612,7 @@ apps:
This deploys a matrix synapse server, element (web frontend), and turn server (voice)
smol-k8s-lab supports initialization by creating initial secrets for your:
- matrix, element, and federation hostnames,
- matrix, element, and federation hostnames,
- credentials for: postgresql, admin user, S3 storage, and SMTP
smol-k8s-lab also sets up an OIDC application via Zitadel.
Expand Down
38 changes: 21 additions & 17 deletions .github/smol_k8s_lab_config_kind.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ smol_k8s_lab:
on_focus: true
# ring the built in terminal bell when something is wrong
on_error: true
text_to_speech:
text_to_speech:
# use a specific program for text to speech - needs to be a full path
# macOS default: say
speech_program: say
Expand All @@ -26,16 +26,17 @@ smol_k8s_lab:
# press f5 to read the element id and selected row of DataTables
on_key_press: true

# enable text to speech
# k9s is a terminal UI dashboard and interface for interacting with Kubernetes
k9s:
# when set to true, if smol-k8s-lab is in interactive mode, it runs k9s
# immediately after the cluster is up and enabled apps have been installed
enabled: false
# default command to run when k9s launches. Defaults to application.argoproj.io
# so that you can view the status of all of your argo apps immediately. This
# default results in running: k9s --command applications.argoproj.io
command: applications.argoproj.io
run_command:
# command to run after smol-k8s-lab tui is done or immediately when running
command: echo 'we did it'
# tell me which terminal you use if you'd like to use split or tab features
terminal: wezterm
# where to run the command, options: same window, new window, new tab,
# split left, split right, split top, split bottom
# if set to "same window", we just run it in the same window after we're
# done the entire smol-k8s-lab cli run
window_behavior: same window


# logging config for the smol-k8s-lab CLI
log:
Expand Down Expand Up @@ -68,7 +69,7 @@ k8s_distros:
enabled: false
# if k8s_distro set to k3s/k3d, you can add an array of extra arguments to pass
# to the k3s install script as a k3s.yaml file. If you enable cilium, we
# automatically pass in flannel-backend: none and disable-network-policy: true
# automatically pass in flannel-backend: none and disable-network-policy: true
k3s_yaml:
# if you enable MetalLB, we automatically add servicelb to the disable list
# enables encryption at rest for Kubernetes secrets
Expand All @@ -90,7 +91,7 @@ k8s_distros:
enabled: false
# if k8s_distro set to k3s/k3d, you can add an array of extra arguments to pass
# to the k3s install script as a k3s.yaml file. if you enable cilium, we
# automatically pass in flannel-backend: none and disable-network-policy: true
# automatically pass in flannel-backend: none and disable-network-policy: true
k3s_yaml:
# if you enable MetalLB, we automatically add servicelb to the disable list
# enables encryption at rest for Kubernetes secrets
Expand Down Expand Up @@ -160,6 +161,8 @@ apps:
hostname: "argocd.test.com"
# which oidc provider to use for Argo CD: defaults to Zitadel
oidc_provider: "zitadel"
# kubernetes cluster to install the k8s app into, defaults to Argo CD default
cluster: https://kubernetes.default.svc
# git repo to install the Argo CD app from
repo: "https://github.com/small-hack/argocd-apps"
# path in the argo repo to point to. Trailing slash very important!
Expand All @@ -173,6 +176,7 @@ apps:
directory_recursion: true
# source repos for Argo CD argo-cd Project (in addition to argo_cd.argo.repo)
project:
name: argo-cd
source_repos:
- https://argoproj.github.io/argo-helm
- https://small-hack.github.io/appset-secret-plugin
Expand Down Expand Up @@ -485,7 +489,7 @@ apps:
kubevirt:
description: |
[link=https://kubevirt.io/]kubevirt[/link] lets you manage virtual machines via Kubernetes.
# default disabled while a helm chart is being actively developed
enabled: false
argo:
Expand All @@ -503,7 +507,7 @@ apps:
directory_recursion: false
# source repos for Argo CD App Project (in addition to argo.repo)
project:
source_repos:
source_repos:
- "https://github.com/small-hack/argocd-apps"
destination:
# automatically includes the app's namespace and argocd's namespace
Expand Down Expand Up @@ -570,7 +574,7 @@ apps:
admin_user: tootadmin
# hostname that users go to in the browser
hostname: ""
# set the local s3 provider for mastodon's public data in one bucket
# set the local s3 provider for mastodon's public data in one bucket
# and private database backups in another. can be minio or seaweedfs
s3_provider: seaweedfs
# how large the backing pvc's capacity should be for minio or seaweedfs
Expand Down Expand Up @@ -612,7 +616,7 @@ apps:
This deploys a matrix synapse server, element (web frontend), and turn server (voice)
smol-k8s-lab supports initialization by creating initial secrets for your:
- matrix, element, and federation hostnames,
- matrix, element, and federation hostnames,
- credentials for: postgresql, admin user, S3 storage, and SMTP
smol-k8s-lab also sets up an OIDC application via Zitadel.
Expand Down
15 changes: 15 additions & 0 deletions .github/workflows/python-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,23 @@ jobs:
python_version: "3.12.0"
pypi_token: ${{ secrets.DEPLOY_FROM_GITHUB_SMOL_K8S_LAB }}

# not ready to do this until we have self-hosted runners
# - name: Generate Sound Files
# run: |
# poetry run smol-tts -l en --tar
# poetry run smol-tts -l nl --tar

- name: Create an appimage for smol-k8s-lab for use with brew
# see https://github.com/AppImageCommunity/pkg2appimage for more info
run: |
wget -c $(wget -q https://api.github.com/repos/AppImageCommunity/pkg2appimage/releases -O - | grep "pkg2appimage-.*-x86_64.AppImage" | grep browser_download_url | head -n 1 | cut -d '"' -f 4)
chmod +x ./pkg2appimage-*.AppImage
./pkg2appimage-*.AppImage .github/smol-k8s-lab-appimage.yaml
- name: Create a Release on GitHub
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
generate_release_notes: true
files: |
smol-k8s-lab.AppImage
Loading

0 comments on commit 857a22f

Please sign in to comment.