example(reddit-rss): add custom recipe example: reddit-rss

This commit is contained in:
Masaki Yatsu
2025-09-07 21:48:00 +09:00
parent 87d5cc5c74
commit 6e1ae8b79b
17 changed files with 595 additions and 1 deletions

View File

@@ -0,0 +1,87 @@
set fallback := true
export REDDIT_RSS_NAMESPACE := env("REDDIT_RSS_NAMESPACE", "reddit-rss")
export REDDIT_RSS_CHART_VERSION := env("REDDIT_RSS_CHART_VERSION", "0.1.0")
export REDDIT_RSS_IMAGE := env("REDDIT_RSS_IMAGE", "localhost:30500/reddit-rss")
export REDDIT_RSS_IMAGE_TAG := env("REDDIT_RSS_IMAGE_TAG", "1.0.1")
export REDDIT_OAUTH_CLIENT_ID := env("REDDIT_OAUTH_CLIENT_ID", "")
export REDDIT_OAUTH_CLIENT_SECRET := env("REDDIT_OAUTH_CLIENT_SECRET", "")
export REDDIT_USERNAME := env("REDDIT_USERNAME", "")
export REDDIT_PASSWORD := env("REDDIT_PASSWORD", "")
export REDDIT_USER_AGENT := env("REDDIT_USER_AGENT", "")
[private]
default:
@just --list --unsorted --list-submodules
# Install reddit-rss
install:
#!/bin/bash
set -euo pipefail
export REDDIT_RSS_HOST=${REDDIT_RSS_HOST:-}
while [ -z "${REDDIT_RSS_HOST}" ]; do
REDDIT_RSS_HOST=$(
gum input --prompt="reddit-rss host (FQDN): " --width=100 \
--placeholder="e.g., reddit-rss.example.com"
)
done
kubectl get namespace ${REDDIT_RSS_NAMESPACE} &>/dev/null || \
kubectl create namespace ${REDDIT_RSS_NAMESPACE}
# Authentication is disabled for now
# just reddit-rss::create-secret
gomplate -f reddit-rss-values.gomplate.yaml -o reddit-rss-values.yaml
helm upgrade --install reddit-rss ./chart \
--version ${REDDIT_RSS_CHART_VERSION} -n ${REDDIT_RSS_NAMESPACE} --wait \
-f reddit-rss-values.yaml
# Uninstall reddit-rss
uninstall:
helm uninstall reddit-rss -n ${REDDIT_RSS_NAMESPACE} --wait --ignore-not-found
kubectl delete namespace ${REDDIT_RSS_NAMESPACE} --ignore-not-found
# Create secret for reddit-rss authentication
create-secret:
#!/bin/bash
set -euo pipefail
if kubectl get secret -n "${REDDIT_RSS_NAMESPACE}" auth-config &>/dev/null; then
if gum confirm "Update existing auth-config secret?"; then
kubectl delete secret auth-config -n ${REDDIT_RSS_NAMESPACE}
else
echo "Skipping secret creation."
exit 0
fi
fi
while [ -z "${REDDIT_OAUTH_CLIENT_ID}" ]; do
export REDDIT_OAUTH_CLIENT_ID=$(gum input --prompt="OAUTH client ID: " --width=100)
done
while [ -z "${REDDIT_OAUTH_CLIENT_SECRET}" ]; do
export REDDIT_OAUTH_CLIENT_SECRET=$(
gum input --prompt="OAUTH client secret: " --width=100 --password
)
done
while [ -z "${REDDIT_USERNAME}" ]; do
export REDDIT_USERNAME=$(gum input --prompt="Reddit username: " --width=100)
done
while [ -z "${REDDIT_PASSWORD}" ]; do
export REDDIT_PASSWORD=$(gum input --prompt="Reddit password: " --width=100 --password)
done
while [ -z "${REDDIT_USER_AGENT}" ]; do
export REDDIT_USER_AGENT=$(
gum input --prompt="Reddit user agent: " --width=100 --value="rss by /u/username"
)
done
kubectl get namespace ${REDDIT_RSS_NAMESPACE} &>/dev/null || \
kubectl create namespace ${REDDIT_RSS_NAMESPACE}
kubectl create secret generic auth-config -n ${REDDIT_RSS_NAMESPACE} \
--from-literal=OAUTH_CLIENT_ID="${REDDIT_OAUTH_CLIENT_ID}" \
--from-literal=OAUTH_CLIENT_SECRET="${REDDIT_OAUTH_CLIENT_SECRET}" \
--from-literal=REDDIT_USERNAME="${REDDIT_USERNAME}" \
--from-literal=REDDIT_PASSWORD="${REDDIT_PASSWORD}" \
--from-literal=USER_AGENT="${REDDIT_USER_AGENT}"
# Delete secret for reddit-rss authentication
delete-secret:
kubectl delete secret auth-config -n ${REDDIT_RSS_NAMESPACE} --ignore-not-found